FreeBSD Bhyve
Initial Setup
loader.conf
- /boot/loader.conf
kern.ipc.semmni=40
kern.ipc.semmns=300
vmm_load="YES"
nmdm_load="YES"
if_bridge_load="YES"
if_tap_load="YES"
rc.conf
- /etc/rc.conf
cloned_interfaces="bridge0 tap0"
ifconfig_bridge0="addm re0 addm tap0"
sysctl.conf
Install grub-bhyve and screen
pkg install grub2-bhyve
pkg install screen
Reboot
bridge0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
ether 02:b1:2b:2e:66:00
nd6 options=9<PERFORMNUD,IFDISABLED>
groups: bridge
id 00:00:00:00:00:00 priority 32768 hellotime 2 fwddelay 15
maxage 20 holdcnt 6 proto rstp maxaddr 2000 timeout 1200
root id 00:00:00:00:00:00 priority 32768 ifcost 0 port 0
member: tap0 flags=143<LEARNING,DISCOVER,AUTOEDGE,AUTOPTP>
ifmaxaddr 0 port 4 priority 128 path cost 2000000
member: re0 flags=143<LEARNING,DISCOVER,AUTOEDGE,AUTOPTP>
ifmaxaddr 0 port 1 priority 128 path cost 55
1 44 0xffffffff80200000 1fa7c38 kernel
4 1 0xffffffff824bf000 aaa0 if_tap.ko
5 1 0xffffffff824ca000 11c38 if_bridge.ko
6 2 0xffffffff824dc000 8f58 bridgestp.ko
12 1 0xffffffff82681000 3571f0 vmm.ko
13 1 0xffffffff829d9000 5010 nmdm.ko
Installing Linux
You will need the following in order to install Linux
Install ISO
device.map file
raw drive image
Example device.map file
(hd0) ./ubuntu-16.04.img
(cd0) ./ubuntu-16.04.1-server-amd64.iso
Create drive image with:
truncate -s 16G ubuntu-16.04.img
Load Kernel and startvm
screen
grub-bhyve -m device.map -r cd0 -M 1024M ubuntu-16.04
bhyve -A -H -P -s 0:0,hostbridge -s 1:0,lpc -s 2:0,virtio-net,tap0 -s 3:0,virtio-blk,./ubuntu-16.04.img -s 4:0,ahci-cd,./ubuntu-16.04.1-server-amd64.iso -l com1,stdio -c 4 -m 1024M ubuntu-16.04
Destroy VM
bhyvectl --destroy --vm=ubuntu-16.04
Running VMs
run.sh
Linux Version
#!/bin/sh
CONSOLE="-l com1,stdio"
VMNAME="ubuntu16_04"
DISKIMAGE="-s 3:0,virtio-blk,./ubuntu-16.04.img"
RAM="1024M"
CPUS="4"
TAPDEV="tap0"
NETWORK="-s 2:0,virtio-net,${TAPDEV}"
grub-bhyve -m device.map -r hd0,msdos1 -M ${RAM} ${VMNAME}
bhyve -A -H -P -s 0:0,hostbridge -s 1:0,lpc ${NETWORK} ${DISKIMAGE} ${CONSOLE} -c ${CPUS} -m ${RAM} ${VMNAME}
bhyvectl --destroy --vm=${VMNAME}
FreeBSD Version
#!/bin/sh
CONSOLE="-l com1,stdio"
VMNAME="bsd_emby"
DISKFILE="./emby.img"
DISKIMAGE="-s 3:0,virtio-blk,./emby.img"
RAM="1024M"
CPUS="4"
TAPDEV="tap1"
NETWORK="-s 2:0,virtio-net,${TAPDEV}"
cd /vol4/byhve/bsd_emby
bhyveload -m ${RAM} -d ${DISKFILE} ${VMNAME}
bhyve -A -H -P -s 0:0,hostbridge -s 1:0,lpc ${NETWORK} ${DISKIMAGE} ${CONSOLE}
bhyvectl --destroy --vm=${VMNAME}