This is an old revision of the document!
Table of Contents
bhyve
Als bhyve Host wird ein Dell R430 verwendet. Genutzt werden vier Netzwerkinterfaces:
- bge0 im roten Netz mit der IP Adresse 10.0.1.65,
- igb0 im roten,
- igb1 im grünen und
- igb2 im blauen Netz ohne IP Adresse für die VMs.
Die angegebenen Befehle müssen alle mit root-Rechten (z. B. mit sudo) ausgeführt werden.
Installation
Installiere FreeBSD mit ZFS Dateisystem.
Um bhyve Kernelmodul beim Start zu laden, füge in /boot/loader.conf hinzu:
vmm_load="YES"
Um es direkt zu laden: kldload vmm
Für die VMs werden tap Netzwerkinterfaces verwendet, damit die automatisch aktiv werden, füge in /etc/sysctl.conf hinzu:
net.link.tap.up_on_open=1
Um es direkt zu setzen: sysctl net.link.tap.up_on_open=1
Installiere benötigte Software.
# pkg install vm-bhyve grub2-bhyve bhyve-firmware tmux sudo
Erstelle ZFS dataset für die VMs.
# zfs create zroot/vm
Füge in /etc/rc.conf hinzu:
ifconfig_igb0="up" vm_enable="YES" vm_dir="zfs:zroot/vm"
Initialiere vm-bhyve.
# vm init
Erstelle einen virtuellen Switch, der igb0 mit den Netzwerkinterfaces der VMs verbindet.
# vm switch create public # vm switch add public igb0 # vm switch list
Setze console auf tmux. Damit wird für jede VM eine eigene tmux Session gestartet.
# vm set console=tmux
VM Verwaltung
Befehle zur VM Verwaltung:
- vm list - Listet alle VMs auf.
- vm info <vm> - Zeigt Infos zu einer spezifischen VM.
- vm start/stop <vm> - Startet/stoppt die VM.
- vm poweroff <vm> - Schaltet VM hart aus, anstatt nur ein ACPI Shutdown zu senden
- vm configure <vm> - Öffnet die Datei mit den Einstellungen der VM.
- vm console <vm> - Öffnet (attach) die tmux Konsole der VM (detach mit ctrl-b + d).
Erstelle VM
Als Beispiel wird eine FreeBSD VM erstellt.
# vm create freebsd
Die Einstellungen werden standardmäßig aus /usr/local/share/examples/vm-bhyve/default.conf übernommen und können angepasst werden.
# vm configure freebsd
Starte die VM mit einer ISO zur Installation.
# vm install freebsd /tmp/FreeBSD-13.0-RELEASE-amd64.iso
Öffne für die Installation die tmux Konsole.
# vm console freebsd
Ubuntu Server 20.04
# vm create -s 64G ubuntu20 # vm configure ubuntu20
Setze loader auf uefi.
loader="uefi" cpu=2 memory=2G network0_type="virtio-net" network0_switch="public" disk0_type="virtio-blk" disk0_name="disk0.img"
Installation starten.
# vm install ubuntu20 /tmp/ubuntu-20.04.4-live-server-amd64.iso # vm console ubuntu20
Um die Installation über die Konsole verfolgen zu können, drücke e beim Boot-Prompt. Verändere
setparams 'Install Ubuntu Server'
setgfxpayload=keep
linux /casper/vmlinuz quiet ---
initrd /casper/initrd
zu
setparams 'Install Ubuntu Server'
setgfxpayload=keep
linux /casper/vmlinuz vga=normal console=tty0 console=ttyS0,115200n8 ---
initrd /casper/initrd
OpenBSD 7.2
# vm create -s 128G openbsd72 # vm configure openbsd72
Setze loader auf grub und füge Zeilen hinzu.
loader="grub" cpu=4 memory=4G network0_type="virtio-net" network0_switch="public" disk0_type="virtio-blk" disk0_name="disk0.img" grub_install0="kopenbsd -h com0 /7.2/amd64/bsd.rd" grub_run0="kopenbsd -h com0 -r sd0a /bsd" bhyve_options="-w"
Installiere OpenBSD.
# vm install openbsd72 /tmp/openbsd72.iso # vm console openbsd72
NetBSD 9.3
# vm create -s 128G netbsd93 # vm configure netbsd93
Setze loader auf grub und füge Zeilen hinzu.
loader="grub" cpu=4 memory=4G network0_type="virtio-net" network0_switch="public" disk0_type="virtio-blk" disk0_name="disk0.img" grub_install0="knetbsd -h -r cd0a /netbsd" grub_run0="knetbsd -h -r dk0 /netbsd" bhyve_options="-w"
Installiere NetBSD.
# vm install netbsd93 /tmp/NetBSD-9.3-amd64.iso # vm console netbsd93
Windows 11
Verwende Windows config template. Muss eventl. vorher kopiert werden.
# cp /usr/local/share/examples/vm-bhyve/windows.conf /zroot/vm/.templates/ # vm create -t windows -s 64G windows11 # vm configure windows11
Passe config leicht an. graphics ermöglicht die Nutzung von VNC für eine graphische Konsole. graphics_wait hält die VM solange an, bis ein VNC Client sich verbunden hat.
loader="uefi" graphics="yes" graphics_wait="yes" vnc_password="irgendein Passwort" xhci_mouse="yes" cpu=2 memory=4G ahci_device_limit="8" network0_type="e1000" network0_switch="public" disk0_type="ahci-hd" disk0_name="disk0.img" utctime="no"
Starte Installation.
# vm install windows11 /tmp/Win11_English_x64v1.iso # vm list
Die Liste der VMs zeigt den VNC Port (z. B. 5900). Starte VNC Client mit der IP-Adresse des bhyve Servers und dem angezeigten Port (z. B. 10.0.1.213:5900). Führe Windows Installation durch.
Um die virtio verwenden zu können, lade die Treiber für Windows hier über die Stable virtio-win ISO herunter. Binde die ISO durch Doppelklick ein und starte Installation durch öffnen der Datei virtio-win-gt-x64.msi. Wähle bei der Installation nur die virtio Treiber aus, nicht die qemu Treiber. Fahre Windows herunter.
# vm configure windows11
Kommentiere graphics_wait aus, verändere network0_type zu virtio-net.
loader="uefi" graphics="yes" #graphics_wait="yes" ... network0_type="virtio-net" ...
