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:

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

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
    set allowed-address=192.168.2.118/24
    set physical=bhyve0
end
Hier sollte die für die Zone geltende IP-Adresse eingetragen werden. Das virtuelle Netzwerkinterface bhyve0 wird der Zone zugeordnet.
add device
    set match=/dev/zvol/rdsk/rpool/bhyve0
end
Hier wird der reservierte Festplattenbereich der Zone zugeordnet.
add attr
    set name=bootdisk
    set type=string
    set value=rpool/bhyve0
end
Festlegen des Bootlaufwerks.
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

Hier wird angegeben, wo das entsprechende ISO für die Linux Mint Installation zu finden ist.

Es wird ein virtuelles CD-ROM Laufwerk mit der ISO-Datei in die Zone eingebunden.

add attr
    set name=acpi
    set type=string
    set value=off
end
ACPI wird ausgeschaltet
add attr
    set name=bootrom
    set type=string
    set value=BHYVE_RELEASE
end
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
    set type=string
    set value="unix=/tmp/vm.vnc,w=1920,h=1080"
end

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
    set type=string
    set value=2G
end
Der virtuellen Maschine werden 2 GB RAM zugeteilt
add attr
    set name=vcpus
    set type=string
    set value="cpus=2"
end
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
    set type=string
    set value=generic
end
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!!


12. Was ich noch gerne ausprobieren möchte ...

So eine VM bietet eine Vielzahl von Spielmöglichkeiten:
  • PCI/GPU Passthrough Intel HD Graphics 620 und Intel HD Audio
  • VNC-Server als systemd-Service vor dem grafischen Login (Lightdm) starten, so dass
    man sich als lokaler Benutzer anmelden kann
  • weitere Betriebssysteme installieren HAIKU usw.


13. Noch ein Tipp

Der Bildschirmschoner sollte auf dem Desktop PC und dem Betriebssystem in der VM deaktiviert werden.
Ansonsten kann man in der VM keine Tastatureingaben mehr vornehmen oder der Bildschirm in der
VM wird einfach schwarz.


Kontakt: mail@tkfibu.de


HOME