Debian Jessie via Bhyve installieren
Ausgangssituation
Ich brauchte ein mittelaltes Debian Linux, um mittelalte Software zu starten. Manchmal kommt man um dergleichen nicht herum.
Detailbeschreibung & Lösung
Es gibt aber eine Lösung. Vielmehr wird hier via bhyve eine Debian Jessie Installation beschrieben, in der das gewünschte Produkt läuft. Natürlich sollte man das auf keinen Fall nachahmen, es ist mehr als generelle Vorlage zu sehen, oder bestenfalls als Design-Studie. Es zeigt als experimentelle Fingerübung durchaus die Mächtigkeit von FreeBSD aus, wenn man dann mal die Gelegenheit gefunden hat, sich damit auseinanderzusetzen. Diese hier beschriebenen schändlichen Taten wurden unter FreeBSD-12.1 mit portage tree begannen.
- Installieren einer neuen VM
Generell brachucht man vm-bhyve und grub2-bhyve. Deshalb ab in den Portage Tree!
cd /usr/ports/sysutils/vm-bhyve
make all install clean
cd /usr/ports/sysutils/grub2-bhyve
make all install clean
- Kernel Module
kldload if_bridge if_tap nmdm vmm
- Wenn man das persistent über Reboot halten will
echo 'if bridge load="YES"' >> /boot/loader.conf echo 'if tap load="YES"' >> /boot/loader.conf echo 'nmdm load="YES"' >> /boot/loader.conf echo 'vmm load="YES"' >> /boot/loader.conf
Es empfiehlt sich, /boot/loader.conf im Blick zu behalten. Just in case!
- Die weiter Konfiguration geht von ZFS aus!
sysrc vm enable="YES" sysrc vm dir="zfs:zroot/vm"
Hier darf sich der unbewandte FreeBSD-Nutzer entsinnen, dass es A”derungen in /etc/rc.conf auf sich hat. Es gilt, das zu kontrollieren.
- Jetzt müssen wir mal ein Dateisystem für die VMs generieren
zfs create zroot/vm
Es geht auch anders, wenn man kein ZFS nutzt, muss man das auslassen und be allen diesen Dingen was konsisstentes angebeh.
- Initialisieren der vm
Hier muss igb0 durch das vorhandene Interfache ersetzt werden, aber ich denke das ist eh klar.
cp /usr/local/share/examples/vm-bhyve/* /zroot/vm/.templates/ vm switch create public vm switch add public igb0 cp /usr/local/share/examples/vm-bhyve/* /zroot/vm/.templates/ vm switch create public vm switch add public igb0
- Wenn das erfolgreich war, können wir den virtuallen Switch ininitalisieren
vm switch create public
vm switch add public igb0
- Nach diesen Vorarbeiten, kann endlich die vm kreiert werden. Bei meinen Anfoderungen reichen 9 GB als Festplatte aus.
vm create -s 9G -t debian debian-jessie
- Jetzt brauchen wir eine CD, um die VM zu instalileren. Ich habe die hier zuerst geladen, und dann installiert. Im Gegenzug zu anderen Anleitungen gehe ich davon aus, dass man auch mal kein Internet hat. Deswegen nehme ich auch die CD1 und nicht die netinst.
fetch https://cdimage.debian.org/cdimage/archive/8.11.1/amd64/iso-cd/debian-8.11.1-amd64-CD-1.iso
debian-8.11.1-amd64-CD-1.iso 251 MB 33 MBps 07s
-
Des Debian-Versprechens nach, sind alle wichtigen Sachen, um ein System ans Laufen zu bringen, immer auf der CD1.
-
Installieren der vm, jetzt wirds spannend:
vm install debian-jessie debian-8.11.1-amd64-CD-1.iso
Starting debian-jessie
* found guest in /zroot/vm/debian-jessie
* booting...
- Jetzt warten wir 5 Sekunden. Dann wird auf die vm Konsole konnektiert. Nach 2x Return dru”cken, meldet dich der Installer:
# vm console debian-jessie
Connected
2x Enter drücken
- Es gilt jetzt, eine minimale Debian Installation zu tun. Sollte jedem bekannt sein. Bei Netzwerk-Konfiguration immer Enter, das beheben wir danach.
- permanentes aktivieren der Vm
sysrc vm_list="debian-jessie" sysrc vm_delay="5"
oder /etc/rc.conf editieren / beobachten (sollte man nach solch einem Installations-Marathon immer tun!)
- Am FreeBSD-Host gilt es jezt folgendes einzustellen/ überprüfen. Er muss in dieser Funktion NAT-Host sein. in /etc/rc.conf
gateway_enable="yes"
pf_enable="yes"
- Folgende Einträge in /etc/pf.conf müssen richtig getan werden, YMMV:
ext_if="igb0" ext_ip="136.0.42.1" net_jessie="10.9.1.0/24" scrub in all nat pass on $ext_if from $net_jessie to any -> $ext_ip
danch, um das sofort auszuführen und reboot-stabail zu machen:
# sysctl net.inet.ip.forwarding=1
# service pf start
- wenn jemand das so weit geschafft hat, jetzt kommen wir zu den virtual switches
root@calcit:~ # vm switch list
NAME TYPE IFACE ADDRESS PRIVATE MTU VLAN PORTS
public standard vm-public - no - - igb0
root@calcit:~ # vm switch address public 10.9.1.2/24
root@calcit:~ # vm switch list
NAME TYPE IFACE ADDRESS PRIVATE MTU VLAN PORTS
public standard vm-public 10.9.1.1/24 no - - igb0
- kontrollieren
# vm configure debian-jessie
network0_type="virtio-net"
network0_switch="public"
- wenn was schiefgeht
root@gliese1:/home/chrissie # vm destroy debian-jessie
Are you sure you want to completely remove this virtual machine (y/n)? y
Netzwerkkonfiguration innerhalb von debian-jessie
- Datei /etc/network/interfaces
auto eth0 iface eth0 inet static address 10.9.1.10 netmask 255.255.255.0 gateway 10.9.1.1 dns-search x-tra-designs.org dns-nameservers 10.9.1.1
- Achtung! kein allow-hotplug eth0! Das hat bei mir dazu geführt, dass die Netzwerkverbindung immer mal wieder unterbrochen wurde. Es gibt innerhalb des VM-Konglomerats auch keinen Grund für diese Option, denke ich.
Einloggen via ssh geht natürlich auch
$ uname -a
FreeBSD ASDF 12.1-RELEASE-p3 FreeBSD 12.1-RELEASE-p3 GENERIC amd64
$ ssh 10.9.1.10
chrissie@10.9.1.10's password:
Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
chrissie@debian-jessie:~$ uname -a
Linux debian-jessie 3.16.0-6-amd64 #1 SMP Debian 3.16.56-1+deb8u1 (2018-05-08) x86_64 GNU/Linux