Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 21 Jan 2014 08:50:06 +0000
From:      Anna Garcia <annawgarcia11@gmail.com>
To:        freebsd-rc@freebsd.org
Subject:   www.freebsd.org
Message-ID:  <20cf3040e6244de68404f0771870@google.com>

next in thread | raw e-mail | index | archive | help
SGksDQoNCkkganVzdCB3YW50ZWQgdG8gc2VuZCB5b3UgYSBxdWljayBub3RlLiBXaXRoIGEgZmV3
IHNpbXBsZSBjaGFuZ2VzIHRvIG1ha2UNCnlvdXIgc2l0ZSBtb3JlIFNFTy1mcmllbmRseSBJkm0g
c3VyZSB5b3UgY2FuIGNvbnZlcnQgbW9yZSB2aXNpdG9ycyBpbnRvDQpsZWFkcyBhbmQgZ2V0IGl0
IHBsYWNlZCBoaWdoZXIgaW4gdGhlIG9yZ2FuaWMgc2VhcmNoIHJlc3VsdHMsIGZvciBrZXl3b3Jk
cw0KdGhhdCBtYXR0ZXIgdG8geW91IHRoZSBtb3N0Lg0KDQpXZSBhcmUgYW4gQXVzdHJhbGlhbiBi
YXNlZCBjb21wYW55IHdpdGggYSBncmVhdCBpbi1ob3VzZSB0ZWNobmljYWwgdGVhbSB3aG8NCnJl
YWxseSBrbm93IHRoZWlyIHN0dWZmIGFib3V0IHNlYXJjaCBlbmdpbmUgb3B0aW1pemF0aW9uLg0K
DQpXb3VsZCB5b3UgbGlrZSBhIGJpdCBtb3JlIGluZm9ybWF0aW9uIGFib3V0IGhvdyB0byBnaXZl
IHlvdXIgd2Vic2l0ZSBhDQpib29zdCB3aXRoIGJldHRlciBTRU8/DQoNCkJlc3QgcmVnYXJkcywN
Cg0KQW5uYSBHYXJjaWENClNFTy9XRUIgU3BlY2lhbGlzdA0KDQpbaW1hZ2U6IExpbmtlZEluXSBb
aW1hZ2U6IEZhY2Vib29rXSBbaW1hZ2U6IFR3aXR0ZXJdIFtpbWFnZTogU2t5cGVdDQogICAgICAg
ICAgICAgUyAgIEUgIE8gICAgICAgICAgICAqU2VhcmNoIEVuZ2luZSBPcHRpbWl6YXRpb24qDQoN
CldlIHJlc3BlY3QgeW91ciBwcml2YWN5IGFuZCB3YW50IHRvIG1ha2Ugc3VyZSB5b3UgYXJlIGF3
YXJlIG9mIGEgZmV3DQp0aGluZ3MuIEJ5IHJlcGx5aW5nIHRvIHRoaXMgZW1haWwsIHlvdSBhdXRo
b3JpemUgb3VyIEF1c3RyYWxpYW4gYWZmaWxpYXRlcw0KdGhhdCBjYW4gaGVscCB3aXRoIHlvdXIg
cHJvamVjdCB0byBjYWxsIHlvdSBhdCB0aGUgbnVtYmVyIHlvdSBwcm92aWRlZCwgYW5kDQp5b3Ug
dW5kZXJzdGFuZCB0aGF0IHRoZXkgbWF5IHVzZSBhdXRvbWF0ZWQgcGhvbmUgdGVjaG5vbG9neSB0
byBjYWxsIHlvdS4gQXQNCm5vIHRpbWUgYXJlIHlvdSByZXF1aXJlZCB0byBtYWtlIGEgcHVyY2hh
c2UuDQo=
From owner-freebsd-rc@FreeBSD.ORG  Fri Jan 24 03:44:25 2014
Return-Path: <owner-freebsd-rc@FreeBSD.ORG>
Delivered-To: freebsd-rc@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org
 [IPv6:2001:1900:2254:206a::19:1])
 (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by hub.freebsd.org (Postfix) with ESMTPS id E0D87E1A;
 Fri, 24 Jan 2014 03:44:25 +0000 (UTC)
Received: from mail-lb0-x233.google.com (mail-lb0-x233.google.com
 [IPv6:2a00:1450:4010:c04::233])
 (using TLSv1 with cipher ECDHE-RSA-RC4-SHA (128/128 bits))
 (No client certificate requested)
 by mx1.freebsd.org (Postfix) with ESMTPS id 26B411E80;
 Fri, 24 Jan 2014 03:44:24 +0000 (UTC)
Received: by mail-lb0-f179.google.com with SMTP id l4so2162325lbv.10
 for <multiple recipients>; Thu, 23 Jan 2014 19:44:23 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113;
 h=mime-version:sender:date:message-id:subject:from:to:content-type;
 bh=baz+ODQiro/KRUCgMRlm1/uk4nzl+jO2yPyFJ2GZ184=;
 b=hKknHjFFdits4kKW8Qj+qe9Byphm4n/lrAnj144o4YHEI9mLQ6/xzD3BRgiXD2KZ/6
 tzDhz9sfWiyDLxZwYedUJE0t1PQoe/zrNamZoOmTv//uxc0Wsb1nHd4Rlft3lAlVn4PK
 jLq9dxGHTL/QIQ6n5rl4GPhPNq8MBB6vrQl6dSPCsk7k8Uc2an5A0CUCNPHwUOaTGT3Z
 oYqbDHeux/2zrE1t6ky58v2smLglfa6Vld1HEmzFoosTvvvTZbpfidujpJybGICqg+Ai
 ylKQY4gzd0SBRLRu9WuAAvGdMieej1xKjWDFfxbkdaLjJQWEB9T+BObPngeETZLTGbqO
 4KJA==
MIME-Version: 1.0
X-Received: by 10.112.135.9 with SMTP id po9mr7033289lbb.8.1390535062969; Thu,
 23 Jan 2014 19:44:22 -0800 (PST)
Sender: crodr001@gmail.com
Received: by 10.112.148.4 with HTTP; Thu, 23 Jan 2014 19:44:22 -0800 (PST)
Date: Thu, 23 Jan 2014 19:44:22 -0800
X-Google-Sender-Auth: KzVcRkipI6rzL7k1Up7AnM8tERI
Message-ID: <CAG=rPVc+5godX08bww0A6WMpwDqQUJaaQ5ZvrYDRjyd5A6gF+A@mail.gmail.com>
Subject: rc.d scripts for starting BHyve from rc.d
From: Craig Rodrigues <rodrigc@FreeBSD.org>
To: "freebsd-virtualization@freebsd.org" <freebsd-virtualization@freebsd.org>,
 freebsd-rc@freebsd.org
Content-Type: text/plain; charset=ISO-8859-1
X-Content-Filtered-By: Mailman/MimeDel 2.1.17
X-BeenThere: freebsd-rc@freebsd.org
X-Mailman-Version: 2.1.17
Precedence: list
List-Id: "Discussion related to /etc/rc.d design and implementation."
 <freebsd-rc.freebsd.org>
List-Unsubscribe: <http://lists.freebsd.org/mailman/options/freebsd-rc>,
 <mailto:freebsd-rc-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/freebsd-rc/>;
List-Post: <mailto:freebsd-rc@freebsd.org>
List-Help: <mailto:freebsd-rc-request@freebsd.org?subject=help>
List-Subscribe: <http://lists.freebsd.org/mailman/listinfo/freebsd-rc>,
 <mailto:freebsd-rc-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Fri, 24 Jan 2014 03:44:26 -0000

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



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20cf3040e6244de68404f0771870>