Der Typ-2 Hypervisor bhyve von FreeBSD

Aus euch bekannten Gründen nutze ich selbst auf meinen Desktops und Notebooks FreeBSD als OS. Zugegeben.... An bestimmten Stellen ist es ganz ohne Microsoft Systeme nicht ohne Einschränkungen möglich bestimmte Dinge zu erledigen. Echtes Word oder Excel lässt sich nur bis zu einem bestimmten Punkt "ersetzten" vor allem wenn alle anderen damit arbeiten. Zwischen Outlook / Evolution oder OWA gibt es auch größere Unterschiede. Das Citrix XenCenter existiert so wie viele andere Software nur als Windows Version bei welcher es keinen Spaß macht diese durch Wine zu schieben..... Wie löst man dieses Problem? Richtig, mit einer VM in VirtualBox! Darf man ein Windows 10 Pro virtualisieren? Ja und nein... Man muss schon auf die passende Lizenz achten! Ähnlich ist es mit VirtualBox, hier ist der kostenlose Einsatz im Unternehmen an bestimmte Einschränkungen gekoppelt.

 

Alles kein Grund es nicht so zu machen. Die Windows und VirtualBox Lizenzen sind nicht unglaublich teuer und selbst mit den VirtualBox Einschränkungen könnte man sicher in vielen Fällen leben. FreeBSD kommt aber seit Version 10.0 mit einem eigenen Typ-2 Hypervisor mit dem Namen bhyve (gott ich vertippe mich immer bei dem Wort). Jetzt habe ich damit natürlich sehr neugierig experimentiert. Aber schnell gemerkt das es als VirtualBox Ersatz noch etwas Zeit benötigt. Für den täglichen FreeBSD Servereinsatz hatte ich keine Verwendung, hier lebe ich mit den jails :-) Inzwischen sind wir bei FreeBSD 11.1 und die Version 11.2 steht vor der Tür. Meine Windows VM hatte ebenfalls irgendein Problem mit welchem ich mich nicht beschäftigen wollte (ja ich vernachlässige sie sehr), also stand eh mal eine neue an. Mit den Basis Tools von bhyve lässt sich eine VM einrichten und nutzen. Ich würde es sogar empfehlen um die Idee dahinter zu verstehen. Für den normalen täglichen Umgang sollte man aber lieber ein Verwaltungstool nutzen. Für meinen neuen Test habe ich dieses mal auf vm-bhyve gesetzt. Weil... Na weil es in den Ports und ebenfalls direkt als binary über pkg zu bekommen ist. Ok ok, ich habe ebenfalls das Wiki in meine Überlegung einbezogen...

Im Wiki findet sich der Quickstart und ähm, ja das ist wirklich alles genau so nutzbar:

1. pkg install vm-bhyve [grub2-bhyve uefi-edk2-bhyve]
2. zfs create pool/vm
3. echo 'vm_enable="YES"' >> /etc/rc.conf
4. echo 'vm_dir="zfs:pool/vm"' >> /etc/rc.conf
5. vm init
6. cp /usr/local/share/examples/vm-bhyve/* /mountpoint/for/pool/vm/.templates/
7. vm switch create public
8. vm switch add public em0
9. vm iso ftp://ftp.freebsd.org/pub/FreeBSD/releases/ISO-IMAGES/10.3/FreeBSD-10.3-RELEASE-amd64-bootonly.iso
10. vm create myguest
11. vm [-f] install myguest FreeBSD-10.3-RELEASE-amd64-bootonly.iso
12. vm console myguest

Für meine Windows VM habe ich nur ein paar Dinge leicht anfassen müssen.

Die ISO hatte ich bereits auf meinem System liegen und schnell mit folgendem Aufruf "importiert":

vm iso /home/kernel/Download/windoof-iso.iso

Das virtualisierte Windows benötigt am Ende noch Treiber für die Netzwerkkarte. Dabei passt der virtio-net Driver den ich erst heruntergeladen und dann direkt importiert habe:

fetch https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/archive-virtio/virtio-win-0.1.149-1/virtio-win-0.1.149.iso
vm iso /home/kernel/Download/virtio-win-0.1.149.iso

Dann die eigentliche VM aus dem mitgelieferten Template erstellen:

vm create -t windows -s 200G windoof

Durch das Template kommt die VM mit 2 CPUs und 2GB RAM. Die Systemplatte hat durch meine Option -s 200G eine Größe von 200GB. Da ich die Installation aber irgendwie durchführen muss und ich gerne doch 4 CPUs mit 8GB RAM hätte änderte ich die Konfiguration der VM direkt wie folgt ab:

vm configure windoof

uefi="yes"
cpu=4
memory=8G
graphics="yes"
graphics_port="5999"
graphics_listen="127.0.0.1"
graphics_res="1280x1024"
graphics_wait="auto"
xhci_mouse="yes"
network0_type="virtio-net"
network0_switch="public"
disk0_type="ahci-hd"
disk0_name="disk0.img"
uuid="c36583eb-739e-11e8-8176-ecf4bb47c54c"
network0_mac="58:9c:fc:01:41:8a"

So und nun nur noch VM starten und ISO "einlegen":

vm install windoof windoof-iso.iso

Nun einfach mit einem VNC Viewer der Wahl mit 127.0.0.1:5999 verbinden und Windows installieren. Nachher wieder über vm install die ISO mit den Netzwerktreibern "einlegen" und Windows einfach dort die Netzwerkkartentreiber suchen lassen, klappt prima. Ich habe dann einfach für meinen Benutzer rdp aktiviert und verbinde mich für alles Zukünftige einfach über rdp mit der VM. Fertig is :)

An / aus / snapshot usw. läuft alles über vm. So zum Beispiel auch die Übersicht über alle laufenden VMs:

vm list
NAME            DATASTORE       LOADER      CPU    MEMORY    VNC                  AUTOSTART    STATE
windoof    default         uefi        4      8G        -                    No           Running (10638)

Im Grunde absolut selbsterklärend, oder? Bei mir rennt nun seit einigen Tagen die VM so und ich brauche kein VirtualBox mehr \o/ Fragen? Dann Fragen :)