Installation von Linux Mint XFCE in einer Bhyve branded zone unter OmniOS
In dieser Anleitung beschreibe ich die Einrichtung und Konfiguration einer Bhyve branded zone auf einem Server unter OmniOS. In der Bhyve VM soll beispielhaft Linux Mint XFCE installiert werden. Anschließend soll über VNC von einem Desktop PC auf die virtuelle Maschine zugegriffen werden.Als Grundlage für diese Anleitung diente eine auf der OmniOS Homepage veröffentliche englische Anleitung. Allerdings ist diese Doku von IT-Profis für IT-Profis geschrieben worden und setzt Basiswissen voraus, das ich als Hobby-IT'ler nicht habe. Daher kam ich alleine mit dieser Anleitung nicht zurecht. Ich habe Fragen in der OmniOS Mailingliste gestellt und stundenlang im Internet recherchiert.
Eine Solaris/OmniOS Zone ist ein abgeschotteter Bereich des Betriebssystems. Prozesse, die in einer Zone laufen, können nicht aus einer anderen Zone überwacht und beeinflusst werden. Sie bietet daher eine isolierte und sichere Umgebung zum Ausführen von Anwendungen. Es gibt verschiedene Arten von Zonen, die ich hier nicht näher erläutern möchte. Eine Zonenart ist die Bhyve branded zone.
Bhyve ist ein Hypervisor, mit dem man virtuelle Maschinen auf einem Hostsystem betreiben kann. Er wurde ursprünglich für FreeBSD entwickelt und einige Jahre später auf Illumos portiert.
Eine Bhyve branded zone ist eine Solaris/OmniOS Zone in der ein Hypervisor (Bhyve) läuft. In dieser Zone können beliebige Betriebssysteme, wie z. B. Linux, FreeBSD oder Microsoft Windows installiert werden.
Die Bhyve-Installation habe ich auf meinem Testrechner, einem Lenovo Ideacentre mit Intel Core i3-8100 CPU, 16 GB RAM und 2 SSD unter OmniOS 151038 ausgeführt.
1. Installation des Bhyve Hypervisors
pkg install system/bhyve
pkg install system/zones/brand/bhyve
2. Erstellung eines virtuellen Netzwerkinterfaces für die Bhyve Zone
Als erstes wird ein virtuelles Netzwerkinterface erstellt (bhyve0), dass mit dem physischen Netzwerkinterface (rge0) verbunden wird.
dladm create-vnic -l rge0 bhyve0
Mit dladm show-link kann man die Verknüpfungen abfragen:
dladm show-link
LINK CLASS MTU STATE BRIDGE OVER
rge0 phys 1500 up -- --
bhyve0 vnic 1500 up -- rge0
3. Erstellung eines Festplattenbereichs für die Bhyve Zone
zfs create -V 30G rpool/bhyve0
Es wird ein 30 GB großer Festplattenbereich für die Bhyve Zone erstellt. In diesem Festplattenbereich erfolgt die Installation von Linux Mint.
Danach wird ein Verzeichnis (Zonepath) erstellt, in dem automatisch die erforderlichen Dateien für die Zone gespeichert werden
zfs create rpool/data
zfs create rpool/data/zone
zfs create rpool/data/zone/bhyve
4. Anlegen der Bhyve branded zone mit dem Namen linuxmint
zonecfg -z linuxmint
Es erscheint zunächst eine Fehlermeldung das die Zone erst erstellt werden muss.
create -b
Hier sind nun sämtliche Konfigurationsparameter, die einfach mit Copy+Paste kopiert werden können ... das sind die Parameter, die ich verwendet habe ... ggfs. müssen diese angepasst werden.
set brand=bhyve
set zonepath=/data/zone/bhyve
set ip-type=exclusive
add net
set allowed-address=192.168.2.118/24
set physical=bhyve0
end
add device
set match=/dev/zvol/rdsk/rpool/bhyve0
end
add attr
set name=bootdisk
set type=string
set value=rpool/bhyve0
end
add fs
set dir=/home/stefan/linuxmint-20.2-xfce-64bit.iso
set special=/home/stefan/linuxmint-20.2-xfce-64bit.iso
set type=lofs
add options ro
add options nodevices
end
add attr
set name=cdrom
set type=string
set value=/home/stefan/linuxmint-20.2-xfce-64bit.iso
end
add attr
set name=acpi
set type=string
set value=off
end
add attr
set name=bootrom
set type=string
set value=BHYVE_RELEASE
end
add attr
set name=vnc
set type=string
set value="unix=/tmp/vm.vnc,w=1920,h=1080"
end
add attr
set name=ram
set type=string
set value=2G
end
add attr
set name=vcpus
set type=string
set value="cpus=2"
end
add attr
set name=type
set type=string
set value=generic
end
Hier einige Erläuterungen zu den Parametern:
Es wird eine bhyve branded Zone erstellt.
Festlegen des Zonepaths.
Festlegen, das die IP-Adresse exklusiv nur für die angelegte Zone gilt.
add-net: Hier sollte die für die Zone geltende IP-Adresse eingetragen werden. Das virtuelle Netzwerkinterface bhyve0 wird der Zone zugeordnet.
add-device: Hier wird der reservierte Festplattenbereich der Zone zugeordnet.
add attr set name=bootdisk: Festlegen des Bootlaufwerks.
add-fs: Anschließend wird angegeben, wo das entsprechende ISO für die Linux Mint Installation zu finden ist.
add attr set name=cdrom: Es wird ein virtuelles CD-ROM Laufwerk mit der ISO-Datei in die Zone eingebunden.
add attr set name=acpi: ACPI wird ausgeschaltet
add attr set name=bootrom: Es wird festgelegt, welche Bhyve-Firmware verwendet wird. BHYVE_RELEASE ist ein Bootrom das ausschließlich UEFI unterstützt. UEFI ist für den Zugriff über VNC zwingend erforderlich.
add attr set name=vnc: Es wird festgelegt, dass mit VNC auf die virtuelle Maschine zugegriffen wird. Es wird eine Bildschirmauflösung von 1920x1080 eingestellt.
add attr set name=ram: Der virtuellen Maschine werden 2 GB RAM zugeteilt.
add attr set name=vcpus: Der virtuellen Maschine werden 2 CPU-Kerne zugeteilt. Hier bin ich mir nicht sicher, ob die logische CPU oder der CPU Kern gemeint ist. Mein Server hat nur eine logische CPU mit 4 Kernen. Auf jeden Fall werden mit Setzen dieses Attributs auf meinem Server 2 CPU-Kerne zugeteilt.
add attr set name=type: Es wird der Typ des zu installierenden Betriebssystems festgelegt. Dieses Attribut muss nur angelegt werden, wenn eine Windows Installation erfolgen soll. Ansonsten kann das Attribut weggelassen werden. Bei value muss dann "windows" eingetragen werden.
Verlassen Sie das Programm mit dem Befehl exit.
Die Parameter können jederzeit mit dem Befehl
zonecfg -z linuxmint
geändert werden.
Dazu muss die Zone zunächst angehalten werden.
Wenn Sie z.B. das Attribut "vnc" ändern wollen, geben Sie in zonecfg folgende Befehle ein (jede Zeile muss mit ENTER abgeschlossen werden):
select attr name=vnc
set value="neuer Wert"
end
exit
5. Installation der Zone
Mit dem Befehl
zoneadm -z linuxmint install
wird die Zone installiert. Falls hier eine Fehlermeldung kommt, das /data/zone/bhyve kein ZFS-Dataset ist, kann diese ignoriert werden.
6. Installation eines VNC-Clients auf dem Desktoprechner
Auf meinem openSUSE Desktoprechner habe ich TigerVNC aus dem offiziellen Repository installiert.
7. Installation von Linux Mint in der Bhyve Zone
Zunächst muss das Programm 'socat' installiert werden.
pkg install socat
Da Linux Mint einen grafischen Installer hat, muss zunächst ein VNC Server mit folgendem Befehl gestartet werden:
socat TCP-LISTEN:5905,reuseaddr,fork UNIX-CONNECT:/data/zone/bhyve/root/tmp/vm.vnc &
Danach wird die Bhyve Zone gestartet:
zoneadm -z linuxmint boot
Jetzt muss auf dem Desktop-Rechner TigerVNC gestartet werden:

Im Feld "VNC-Server" muss die IP-Adresse des OmniOS-Servers und die Portnummer des VNC-Servers eingegeben werden. Danach auf "Verbinden" klicken.
Wenn alles korrekt konfiguriert worden ist, müsste jetzt im VNC-Fenster Linux Mint in den Live-Modus booten.
Nun kann Linux Mint wie gewohnt installiert werden. Damit der VNC Server, wie in dieser Anleitung beschrieben automatisch starten kann, muss bei der Anlage des Benutzers "automatische Anmeldung" ausgewählt werden.
8. Entfernen der virtuellen CD-ROM
Nach dem Abschluss der Linux Mint Installation fordert der Installer zum Neustart des Rechners auf. Das VNC-Fenster schließt sich nach ein paar Sekunden.
Die Bhyve Zone muss jetzt angehalten werden:
zoneadm -z linuxmint halt
Nun muss das virtuelle CD-ROM Laufwerk entfernt werden, da ansonsten beim nächsten Bootvorgang wieder der Installer aufgerufen wird.
zonecfg -z linuxmint
zonecfg:linuxmint> remove attr name=cdrom
zonecfg:linuxmint> verify
zonecfg:linuxmint> commit
zonecfg:linuxmint> exit
9. Starten von Linux Mint XFCE und Konfiguration des VNC-Servers in der virtuellen Maschine
Nun kann die Bhyve Zone wieder gestartet werden.
zoneadm -z linuxmint boot
Auf dem Desktop PC muss mit TigerVNC wieder eine Verbindung zum VNC-Server hergestellt werden.
Jetzt sollte in das installierte Linux Mint gebootet werden.
Bei der Netzwerkkonfiguration sollte eine statische IP-Adresse konfiguriert werden (die IP-Adresse, die in der Zonenkonfiguration unter "allowed-addresses" angegeben wurde). Als Gateway die IP-Adresse Ihres Routers oder Gateways eingeben.
Jetzt werden Sie spätestens feststellen, dass mit der Tastaturbelegung in der virtuellen Maschine etwas nicht stimmt. Weder das deutsche noch das englische Tastaturlayout funktionieren richtig.
Daher muss jetzt in Linux Mint, also in der virtuellen Maschine ein VNC-Server installiert werden. Bis dieser richtig funktioniert, sollte der mit socat gestartete VNC-Server erst mal weiter laufen.
Ich habe unter Linux Mint den x11vnc Server installiert.
Damit dieser automatisch nach dem Start der Bhyve VM gestartet wird habe ich ein kleines Shellscript geschrieben, dass beim automatischen Anmelden des Benutzers in Linux Mint ausgeführt wird.
Hier ist das Shellscript:
#!/bin/sh
/usr/bin/x11vnc -rfbport 5905 -nopw -shared -bg -o %HOME/.x11vnc.log.%VNCDISPLAY
Dieses Script startet den x11vnc Server und stellt eine unverschlüsselte Verbindung auf Port 5905 ohne Passwortabfrage her.
Das Shellscript speichern und ausführbar machen. Mein Shellscript heißt "x11vncserver_starten.sh"
chmod +x x11vncserver_starten.sh
Dieses Shellscript habe ich unter 'XFCE Einstellungen / Sitzung und Startverhalten / Automatisch gestartete Anwendungen' eingefügt.
Bei jedem automatischen Anmelden des Benutzers in Linux Mint wird nun dieses Shellscript ausgeführt und der VNC-Server gestartet.
Mir ist es bisher noch nicht gelungen, den VNC-Server als Systemd-Service zu starten. Dies wäre natürlich die elegantere und flexiblere Lösung.
Der Zugriff auf die Bhyve VM erfolgt dann wie bisher über TigerVNC auf dem Desktop PC. Als IP Adresse muss dann die in Linux Mint eingestellte statische Adresse verwendet werden.

Linux Mint in der Bhyve VM auf dem OmniOS Server
10. Konfiguration von TigerVNC auf dem Desktop-PC
In der Standardkonfiguration von TigerVNC wird eine ziemlich hohe Netzwerkbandbreite benötigt. Daher war ein flüssiges Arbeiten in meinem WLAN nicht möglich.
Ich habe mit den Kompressionsstufen herumexperimentiert und den für mich besten Kompromiss zwischen Leistung, Netzwerkbandbreite und Qualität ermittelt: Individuelle Kompressionsstufe 7, JPEG-Kompression 7.

11. Was funktioniert in der VM und was nicht?
Meinen netzwerkfähigen Multifunktionsdrucker von HP (Deskjet 2544) konnte ich ohne Probleme mit dem hplip-GUI installieren.
Mounten eines NFS-Shares ist ebenfalls kein Problem.
Leider habe ich keinen Sound. Die Soundkarte wird nicht erkannt. Evtl. kann man hier was mit PCI-Passthrough machen ... wenn ich mal Zeit habe, probiere ich das aus.
Die Grafikbeschleunigung funktioniert nicht. Ich weiß nicht, ob GPU-Passthrough in die Bhyve VM funktioniert ... hebe ich mir auch für irgendwann später mal auf.
Ansonsten läuft die VM fast so schnell als würde ich auf dem lokalen Rechner arbeiten!!
Kontakt: mail@tkfibu.de
HOME