Date: Thu, 23 Jan 2014 23:01:15 -0500 From: Aryeh Friedman <aryeh.friedman@gmail.com> To: Craig Rodrigues <rodrigc@freebsd.org> Cc: freebsd-rc@freebsd.org, "freebsd-virtualization@freebsd.org" <freebsd-virtualization@freebsd.org> Subject: Re: rc.d scripts for starting BHyve from rc.d Message-ID: <CAGBxaXkCu9XY9DKfpb4pOYFB87h_EG1HJ_H%2BVyE3K5qj=Ns8Og@mail.gmail.com> In-Reply-To: <CAG=rPVc%2B5godX08bww0A6WMpwDqQUJaaQ5ZvrYDRjyd5A6gF%2BA@mail.gmail.com> References: <CAG=rPVc%2B5godX08bww0A6WMpwDqQUJaaQ5ZvrYDRjyd5A6gF%2BA@mail.gmail.com>
next in thread | previous in thread | raw e-mail | index | archive | help
Except for the consoles petitecloud does it much more smoothly (see thread on getting linux to run on bhyve on -RELEASE for the script).... namely it should not need conditional logic (instead of being autogenerated on demand) On Thu, Jan 23, 2014 at 10:44 PM, Craig Rodrigues <rodrigc@freebsd.org>wrote: > Hi, > > I put together some scripts for starting a BHyve VM > when a system boots. When the system boots, the console > of the VM uses /dev/nmdm. It is possible to connect > to the console of the VM with: cu -l /dev/nmdm0B > > It is a bit rough, but works nicely. > Does someone out there have better scripts for doing this? > > Can some of the existing rc.d scripts for jails be reused for BHyve? > > > > > I did the following: > > == put following entries in /etc/sysctl.conf == > # BHyve needs this for tap interfaces > net.link.tap.user_open=1 > net.link.tap.up_on_open=1 > ================================================================= > > == put following in /etc/rc.conf == > ##################################################### > # Create tap devices, one tap interface per BHyve VM. > # Add the tap interfaces to bridge0 > #################################################### > cloned_interfaces="bridge0 tap0" > > autobridge_interfaces="bridge0" > # change igb0 to whatever NIC you are using > autobridge_bridge0="tap* igb0" > > > > == put following file in /usr/local/etc/rc.d/bhyvevm == > #!/bin/sh > # > # $FreeBSD$ > # > > # PROVIDE: bhyvevm > # REQUIRE: netif bgfsck sshd LOGIN localpkg > # KEYWORD: shutdown > # > > . /etc/rc.subr > > name="bhyvevm" > rcvar="bhyvevm_enable" > > start_cmd="bhyvevm_start" > stop_cmd="bhyvevm_stop" > > # read configuration and set defaults > load_rc_config "$name" > : ${bhyvevm_enable="YES"} > > > bhyvevm_start() > { > /vm/10.0/start_vm.sh > } > > bhyvevm_stop() > { > /vm/10.0/stop_vm.sh vm1 > } > run_rc_command "$1" > > == put following script in /vm/10.0/start_vm.sh == > #!/bin/sh > VM=vm1 > CONS_A=/dev/nmdm0A > CONS_B=${CONS_A%%A}B > IMG=/vm/10.0/disk.img > TAP=tap0 > BRIDGE=bridge0 > > touch ${CONS_A} > if [ -e /dev/vmm/${VM} ]; then > /usr/sbin/bhyvectl --vm=${VM} --destroy > fi > > echo "Starting BHyve virtual machine named '${VM}'. Use 'cu -l ${CONS_B}' > to access console" > cmd="/usr/sbin/bhyveload -m 8G -d ${IMG} -c ${CONS_A} ${VM}" > $cmd > ret=$? > if [ $ret -ne 0 ]; then > echo "[FAILED]: $cmd" > exit $ret > fi > ifconfig bridge0 up > cmd="/usr/sbin/bhyve -c 16 -m 8G -A -H -P -g 0 -s 0:0,hostbridge -s 1:0,lpc > -s 2:0,virtio-net,${TAP} -s 3:0,virtio-blk,${IMG} -l com1,${CONS_A} ${VM}" > $cmd & > ifconfig bridge0 up > sleep 5 > echo "~." | cu -l ${CONS_B} > ================================================================= > > ==== put following script in /vm/10.0/stop_vm.sh === > #!/bin/sh > > usage() > { > echo $0 "[vm name]" > } > > if [ $# -lt 1 ]; then > usage > exit 1 > fi > VM=$1 > > echo "Stopping BHyve virtual machine named '$VM'" > > PID=`pgrep bhyve` > if [ -n "$PID" ]; then > kill $PID > fi > > COUNT=0 > while [ $COUNT -lt 20 -a -n "$PID" ] ; do > PID2=`pgrep bhyve` > if [ "$PID" != "$PID2" ]; then > break > fi > sleep 5 > done > > if [ -e /dev/vmm/${VM} ]; then > /usr/sbin/bhyvectl --vm=${VM} --destroy > fi > > exit 0 > ================================================================= > > > > -- > Craig > _______________________________________________ > freebsd-virtualization@freebsd.org mailing list > http://lists.freebsd.org/mailman/listinfo/freebsd-virtualization > To unsubscribe, send any mail to " > freebsd-virtualization-unsubscribe@freebsd.org" > -- Aryeh M. Friedman, Lead Developer, http://www.PetiteCloud.org
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAGBxaXkCu9XY9DKfpb4pOYFB87h_EG1HJ_H%2BVyE3K5qj=Ns8Og>