Firmware auf FreeNAS 11 mittels bhyve virtualisieren

Hallöchen,

ich betreibe einen FreeNAS 11 Server und hätte dort gerne die Freifunk-Firmware mittels bhyve virtualisiert.
Bhyve unter FreeBSD kann selbst UEFI sowie Legacy-Gäste virtualisieren.
Leider bekomme ich keines der für virtuelle Maschinen infrage kommenden Images von der Downloadseite in bhyve zum laufen.
Ich habe dort auch schon FreeBSD sowie Windows-Maschinen laufen. Diese booten sogar über UEFI und GPT.
Wie muss ich die Images anpassen, damit ich diese in bhyve booten kann?

Ich habe bereits versucht, das Image für Virtualbox zu nehmen, in ein RAW-Image umzuwandeln und dann auf ein zvol mittels dd zu schreiben.
Nur leider kann er das System nicht booten, egal ob UEFI oder UEFI_CSM.
Ich habe auch schon versucht, das Image in eine GPT-Festplatte umzuwandeln, aber das System bootet dann auch nicht.
Er findet den Bootloader meiner Meinung nach nicht, wie kann ich ihm da eine Brücke bauen?
Gibt es hier einen Fallstrick, welchen ich jetzt einfach nicht sehe?

Danke schon mal!

Versuch es doch einfach mal mit dem ganz normalen x64 Image, anstatt ein Vorgefertigtes zu konvertieren.

Die Firmware selber unterstützt kein UEFI, du musst sie als Legacy-Gast virtualisieren.

Also das funktioniert so nicht.
Ich hab jetzt (mal wieder) um ans Ziel zu kommen von hinten durchs Knie geschossen und folgendes nun am Laufen:
FreeNAS 11 U4 => FreeBSD 11 als Gast mit bhyve=> Virtualbox als Host => x86-Freifunk-Image als Gast
Hierfür musste ich aber die Kernelmodule für den Netzwerksupport (Bridged) auf dem Virtualbox-Host neu kompilieren. Nun läuft es, allerdings natürlich doppelt virtualisiert…

Eine Sache ist mir aufgefallen: Alle Instanzen, welche auf dem Virtualbox-Host laufen, meshen auch über WAN untereinander. Allerdings hab ich noch ein Raspberry Pi, welches die VMs in der Virtualbox nicht findet.
Auf allen Interfaces ist laut ifconfig auch der Multicast-Support aktiviert, das Raspberry sowie die Adressen der VMs sind im gleichen Netzwerk. Ich habe es schon mit dem virtio-Treiber sowie mit dem e1000-Treiber (Intel) versucht. Das Ergebnis ist immer das gleiche, nur die VMs finden sich gegenseitig, aber nicht das Raspberry die VMs.

Falls hier ein Mega-FreeBSDler unterwegs ist, welcher die Erklärung hat, warum der Boot des x86-Systems mit bhyve nicht funktioniert, wäre ich echt dankbar. Evtl. würde sich dann auch das Problem mit dem Meshing zwischen VM und Raspberry lösen. Das “Geraffel” mit Virtualbox finde ich auch nicht wirklich schön…

So, mit FreeNAS 11.1 kann mittels bhyve nun auch von so genannten RAW-Files gebootet werden. Hier habe ich das KVM-Image von der Downloadseite genommen. Es bootet!
Es werden auch meine beiden virtio-Netzwerkadapter erkannt.
Dem 2. Interface am Mainboard muss allerdings auch eine IP-Adresse in den FreeNAS-Einstellungen zugewiesen werden, sonst kann das Interface nicht aus der VM angesprochen werden.
Komisch: Nach der Einrichtung war eth0 und eth1 etwas “unlogisch” belegt: eth0 war das LAN (Clientnetz) und eth1 war das WAN…
Eigentlich würde ich ja damit rechnen, dass eth0 auf der WAN-Seite hängt und dann die Daten auf dem 2. Interface (also eth1) ausgibt. Aber egal, es funktioniert!

Ich werde noch ein bisschen testen und dann mein Raspberry in den Ruhestand schicken, der FreeNAS-Server läuft bei mir sowieso immer durch, das Raspberry muss dann nicht auch noch rumnudeln…

Schön, dass es bei Dir funktioniert.

Hättest Du Lust das Ganze mal auf einer der nächsten Treffen mal vor zu stellen? Da wir aktuell offen im ZKM sind wäre das ja eine nette Plattform.

Prinzipiell kein Problem. Leider ist das schon seehr speziell, nicht jeder hat einen 24/7-FreeNAS-Server zuhause stehen. Da ich mich halt beruflich mit solchen Dingen beschäftige, nutze ich das Ding immer mal wieder als Spielwiese. Würde ich einen “reinen” FFKA-Node-Server/Offloader betreiben würde ich höchstwahrscheinlich ein Ubuntu mit Virtualbox einsetzen.
Die wenigsten haben ein Mainboard mit 2 Ethernet-Interfaces.
Aktuell ist die Thematik auch noch ein bisschen unschön, da (warum auch immer) für eine VM seitens FreeNAS bzw. bhyve mindestens 512 MB Arbeitsspeicher für eine VM zugewiesen werden MUSS.
OpenWRT mit 512 MB RAM ist schon ein bisschen Overkill…

Allerdings funktionieren mit der aktuellen FreeNAS-Version auch die aktuellen ASIX-USB-NICs, welche ich auch bei meinem Raspberry-Bastelprojekt Raspberry Pi v1 als Node mit zusätzlicher Client-NIC? eingesetzt habe.

Eine Anmerkung zu der Funktion der Node: Die Node ist voll funktionsfähig, mesht allerdings nicht über WAN. Ich vermute hier bleibt irgendetwas im Netzwerkstack zwischen OpenWRT <=> bhyve <=> FreeBSD stecken.
Ist in dem Fall nicht schlimm, für 50MBit VDSL sollte das allemal reichen. Hat da jemand Erfahrungen mit anderen KVM-Images bezüglich Meshing machen können?

Hey,

hast du schon mal die aktuelle Beta Firmware Probiert? Die Basiert auf LEDE, vielleicht klappt da das Meshing besser?

Würde ich gerne machen, aber auf der Downloadseite gibts für KVM 32bit nur das Stable-Image.
Da es für die anderen Umgebungen bereits auch die Beta-Images gibt, wäre ein Build bestimmt nicht kompliziert, oder?

Auf meiner aktuellen VM habe ich bezüglich eurer Ankündigung die automatischen Updates vorerst deaktiviert. Sobald die neue Firmware als “stable” released wurde, werde ich natürlich die VM aktualisieren :grin:

Diese Images unterscheiden sich mit LEDE nicht mehr. Daher gibt es nur noch ein einziges x86-generisches Image statt drei. :slight_smile:

Für x64 Images ist das schon mit OpenWRT so.

Ich konnte es wieder mal nicht abwarten :grin:
Also ich hab jetzt mal meine VM mit der aktuellsten Beta (0.5.0-beta.5-20180119) des generischen Images aufgesetzt. Es scheint wirklich alles mittels virtio in bhyve zu laufen.
Leider funktioniert das Meshing noch immer nicht über WAN, obwohl die VMs sich ja ein und dieselbe physikalische NIC teilen.
Ich hab zwar mal im FreeNAS-System den sysctl “net.link.ether.inet.allow_multicast” gesetzt, hat aber leider nichts gebracht.

Mit dem generischen Image kann er nicht die in bhyve zugrunde liegenden Hardwaredaten des Hostsystems auslesen. Als Geräte-Modell steht dort einfach nur noch “BHYVE”.
Es gibt deshalb aktuell auch 2 Nodes mit dem Namen “KA-RH-FO-Bienwald”, der aktive ist die Beta-VM. Die “alte” Node hat wunderbar als Geräte-Modell “Intel® Xeon® CPU E3-1285L v4 @ 3.40GHz” zurückgeliefert…