User Tools

Site Tools


bhyve:anwendung

This is an old revision of the document!


bhyve Anwendung

In bhyve Management wird die Verwaltung von VMs mit dem vm Tool beschrieben. Hier geht es darum bhyve ohne dem vm Tool zu verwenden.

bhyve wird üblicherweise mit einer boot ROM (oder bhyveload) verwendet, die das Gast-Betriebssystem laden kann.

amd64 Architektur mit bhyveload

FreeBSD Gast

Um einen neuen Gast zu erstellen, sind einige extra Schritt notwendig.

  1. Anlegen der Datei, die als Festplatte verwendet werden soll.
    truncate -s 64G /var/vm/bsd1vm/disk0.img
  2. Anlegen des tap-Interfaces, dass als Backend für die Netzwerkschnittstelle verwendet werden soll.
    ifconfig tap0 create
  3. Boot ROM starten, die das Gast-OS laden kann. Bei einem FreeBSD-Gast geht das mit bhyveload.
    /usr/sbin/bhyveload -m 2G -d /var/vm/bsd1vm/disk0.img -c /dev/nmdm-bsd1vm.1A bsd1vm
  4. VM mit bhyve starten.
    /usr/sbin/bhyve -c 4 -m 2G -A -H -P -s 0:0,hostbridge -s 1:0,virtio-net,tap0 -s 2:0,virtio-blk,/var/vm/bsd1vm/disk0.img -s 31,lpc -l com1,/dev/nmdm-bsd1vm.1B -D bsd1vm

Bei dem bhyve Kommando gibt es zahlreiche Optionen.

  • -c gibt an wie viele CPU-Cores der VM zur Verügung gestellt werden.
  • -m gibt die Größe des Arbeitsspeichers an. Muss wahrscheinlich zu dem passen, was man bei bhyveload angegeben hat.
  • -A
  • -H Sorgt dafür, dass die CPU des Hosts nicht genutzt wird, wenn die VM die CPU gerade nicht nutzt. Nur anwendbar für amd64 Plattform.
  • -P Nur anwendbar für amd64 Plattform.
  • -s Erstellt virtualle PCI Devices. Angegeben wird pcislot[:function],emulation[,conf]. In dem Beispiel wird eine hostbridge, eine virtio-net Netzwerkschnittstelle mit tap0 als Backend, ein virtio-blk Festplatte mit /var/vm/bsd1vm/disk0.img als Datai und eine LPC PCI-ISA bridge mit COM1, COM2, COM3 und COM4. Falls das Betriebssystem noch installiert werden muss, dann kann
    -s 3,ahci-cd,/path/to/uefi-OS-install.iso

    hinzugefügt werden. Weitere Details enthält die man-Page: https://man.freebsd.org/cgi/man.cgi?query=bhyve

  • -l Verbindet COM1 in der VM mit /dev/nmdm-bsd1vm.1B auf dem Host.
  • -D Zerstört die VM, wenn sie sich ausschaltet.

Nachdem erst bhyveload und dann bhyve gestartet wurden, erhält man Zugriff auf die Konsole über die /dev/nmdm-bsd1vm*. Zugriff auf die Ausgabe des Bootloaders:

sudo cu -s 115200 -l /dev/nmdm-bsd1vm.1B

Zugriff auf die Ausgabe der VM nach dem Bootloader:

sudo cu -s 115200 -l /dev/nmdm-bsd1vm.1A

Sollte sich die VM nicht einmal nicht richtig ausschalten, kann nachgeholfen werden mit:

bhyvectl --vm=bsd1vm --destroy

arm64 Architektur

FreeBSD Gast

Unter arm64 scheint es bhyveload nicht zu geben. Es wird also eine boot ROM benötigt. Aktuell gibt es nur die experimentelle boot ROM u-boot-bhyve-arm64, die erst installiert werden muss.

pkg install u-boot-bhyve-arm64

Die boot ROM startet immer von dem ersten VirtIO block device. Eine Installation von CD ist also nicht möglich. Als Alternative gibt es die Möglichkeit ein VM Image von freebsd.org herunterzuladen. Das ist eine Festplatten-Image auf dem FreeBSD bereits installiert ist. Da das recht klein ist, sollte es anschließend mit truncate vergrößert werden.

mkdir -p /var/vm/ampere128vm
cd /var/vm/ampere128vm
https://download.freebsd.org/snapshots/VM-IMAGES/16.0-CURRENT/aarch64/Latest/FreeBSD-16.0-CURRENT-arm64-aarch64-ufs.raw.xz
unxz FreeBSD-16.0-CURRENT-arm64-aarch64-ufs.raw.xz
truncate -s 64GB FreeBSD-16.0-CURRENT-arm64-aarch64-ufs.raw

Nun kann die VM mit bhyve gestartet werden.

/usr/sbin/bhyve -c 32 -m 4G -s 0:0,hostbridge -o bootrom=/usr/local/share/u-boot/u-boot-bhyve-arm64/u-boot.bin -s 1:0,virtio-blk,/var/vm/ampere128vm/FreeBSD-16.0-CURRENT-arm64-aarch64-ufs.raw -s 2:0,virtio-net,tap0 -o console=stdio ampere128vm

Der Parameter

-o console=stdio

sorgt dafür, dass die Ausgabe der VM direkt im aktuellen Terminal erfolgt.

bhyve/anwendung.1771777049.txt.gz · Last modified: by msvoelker