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
Artikel erstellt am: 01 March 2020 , aktualisiert am 01 March 2020