Χρήστος Μαργιώλης

9front χρησιμοποιώντας τον bhyve(8) στο FreeBSD

2021.11.23 | tags: τεχνολογία

Το άρθρο αυτό βρίσκεται επίσης στα FreeBSD Wiki και 9front Wiki.

Προαπαιτούμενα ports:

sysutils/bhyve-firmware
sysutils/uefi-edk2-bhyve
net/tigervnc-viewer

Εισάγετε τις παρακάτω γραμμές στο /etc/rc.conf. Αντικαταστήστε το re0 με το δικό σας network interface. Είναι καλή πρκατική να ορίζετε ένα ξεχωριστό tap interface για κάθε VM, σε περίπτωση που θέλετε να τρέξετε πολλαπλά VMs ταυτόχρονα. Χάρην απλότητας, το συγκεκριμένο setup χρησιμοποιεί μόνο ένα tap:

if_bridge_load="YES"
if_tap_load="YES"
cloned_interfaces="bridge0 tap0"
ifconfig_bridge0="DHCP addm re0 addm tap0"
ifconfig_bridge0_alias0="inet 10.0.0.1/24"

Κατεβάστε ένα 9front ISO και στο μεταξύ επανεκκινήστε το δίκτυο:

# service routing restart
# service netif restart

Δημιουργήστε ένα directory στο οποίο θα αποθηκεύσετε τα πάντα σχετικά με το 9front. Προσωπικά έχω όλα τα bhyve(8) VMs σε ένα ZFS dataset:

$ cd /path/to/vms/
$ mkdir 9front
$ mv /path/to/9front_iso 9front.iso

Δημιουργήστε ένα άδειο αρχείο το οποίο θα χρησιμοποιηθεί ως ο σκληρός δίσκος του VM. 10G θα είναι παραπάνω από αρκετά:

$ truncate -s 10G disk.img

Δημιουργήστε ένα script εκκίνησης. Μπορείτε να τροποποιήσετε τις μεταβλητές για να ταιριάξουν στο δικό σας setup. Προφανώς, όταν τελειώσετε την εγκατάσταση του 9front από το ISO, θα πρέπει να τρέχετε το script χωρις την γραμμή -s 3,...:

$ cat 9front_start

#!/bin/sh

name="9front"
cpu="2"
mem="2G"
iso="9front.iso"
disk="disk.img"
tap="tap0"

ifconfig ${tap} up

bhyve -c ${cpu} -m ${mem} -wH \
	-s 0,hostbridge \
	-s 3,ahci-cd,${iso} \
	-s 4,ahci-hd,${disk} \
	-s 5,virtio-net,${tap} \
	-s 29,fbuf,tcp=0.0.0.0:5900,w=800,h=600,wait \
	-s 30,xhci,tablet \
	-s 31,lpc \
	-l bootrom,/usr/local/share/uefi-firmware/BHYVE_UEFI.fd \
	${name}

Δημιουργήστε ένα script κλεισίματος ώστε ο bhyve(8) να κλείσει σωστά:

$ cat 9front_stop

#!/bin/sh

name="9front"
tap="tap0"

ifconfig ${tap} down
bhyvectl --force-poweroff --vm=${name}
bhyvectl --destroy --vm=${name}

Κάντε τα scripts εκτελέσιμα και ξεκινήστε το VM:

$ chmod +x 9front_start 9front_stop
# ./9front_start; ./9front_stop

Τρέξτε τον vncviewer(1) για να συνδεθείτε στην οθόνη του VNC:

$ vncviewer 0.0.0.0

Όταν σας ζητηθεί ο τύπος του monitor κατά την εκκίνηση, επιλέξτε xga.


Index Next →