FreeBSD 8 Xen domU

Xen è un software di virtualizzazione che permette di eseguire più sistemi operativi sulla stessa macchina fisica.
L’obiettivo di questa guida è di mostrare come si possa creare un domU dove FreeBSD8 funzioni come sistema operativo ospite senza la necessità di usare le estensioni per la virtualizzazione hardware fornite da alcuni processori.
Sebbene FreeBSD possa essere usato tranquillamente come domU di Xen, non c’è molta documentazione e non è molto semplice, per chi non conosce bene FreeBSD, configurare il sistema; soprattutto per il fatto che non ci siano delle immagini già pronte all’uso disponibili ne un’installer per gli strumenti di Xen.
Se non si ha confidenza con Xen, è consigliato iniziare a creare delle immagini di Linux per poi passare alla creazione di un domU contenente NetBSD prima di procedere con FreeBSD.

Preparazione dell’host

Si inizia con una installazione della distribuzione Debian sul proprio computer o server, facendo attenzione a lasciare dello spazio libero sul dispositivo di memoria secondario (hard disc o SSD che sia).
Ricordiamo chde Linux assegna nomi diversi ai dispositivi di memorizzazione rispetto a FreeBSD, per cui c’è la possibilità di perdere i dati se il dispositivo usato è multi boot.
Su Debian è necessario installare anche tutti gli strumenti necessari all’hypervisor Xen (versione 3.2.1)insieme alle dipendenze usando il comando:

# apt-get install xen-3

all’avvio del computer si presenterà una nuova voce riguardo Xen nell’elenco presentato dal bootloader grub. Avviando il sistema mediante la voce Xen, verrà attivato anche l’hypervisor.
Siccome non esistono immagini già pronte all’uso, è necessario provvedere alla creazione manuale. Bisogna installare FreeBSD 8 all’interno di una macchina virtuale (di VirtualBox o altri software di virtualizzazione) poi spostare i file che sono all’interno della virtual machine nel dom0.
Ecco come fare: accedere alla directory del filesystem dell’installazione di FreeBSD (in qualunque posto o vm che sia) e accertarsi di avere un po’ di spazio per creare dei file.

Creare un file da 256 MB che servirà da immagine:
# truncate -s 256M freebsd.img
Preparare un disco virtuale all’interno del file creato precedentemente:
# mdconfig -f freebsd.img
Il comando dovrebbe restituire qualcosa tipo md0, se così non fosse usare il nome restituito al posto di quello indicato nei successivi esempi.

Creare un Master Boot Record e uno slice nell’immagine disco:

# fdisk -BI md0

Ora creare un BSD-label nello slice:

# bsdlabel -wB md0s1

(ricordo che i caratteri md0 vanno sostituiti col codice del dispositivo restittuito dal comando mdconfig)

Preparare un filesystem di tipo UFS2 con abilitato softupdates

# newfs -U md0s1a

Fare il mount del file system contenuto nel disco immagine in modo da poter scrivere dei file:

# mount /dev/md0s1a /mnt

Eseguire un aggiornamento del tree

# csup -h nearby.mirror.FreeBSD.org -L 2 /usr/share/examples/cvsup/standard-supfile

Ora si andrà a creare un proprio kernel. Di default questo andrà a posizionarsi in /usr/obj qualora si volesse cambiare quest’impostazione è possibile specificare un altro percorso usando il comando:

# export MAKEOBJDIRPREFIX=/other/dir

Per complilare il tutto si usa il comando:

# make buildworld && make buildkernel KERNCONF=XEN

Adesso è necessario posizionare quello che è appena stato compilato nel disco immagine digitando:

# export DESTDIR=/mnt && make installworld && make installkernel KERNCONF=XEN && cd etc && make distribution

Bisogna ancora modificare alcuni file prima di effettuare l’installazione.
Aggiungere all’interno del file /mnt/etc/fstab la seguente riga:

/dev/xbd0       /               ufs     rw              1       1

Inserire nel file /mnt/etc/ttys quest’altra linea:

xc0     "/usr/libexec/getty Pc"         vt100   on  secure

Ora è necessario copiare parte dei file del kernel FreeBSD sul dom0 Debian.

# cp /mnt/boot/kernel/kernel /some/place/freebsd-kernel

Attenzione /some/place/freebsd-kernel è una directory del filesystem del dom0 (sceglierne una adatta).

Al termine dell’operazione di copia, smontare il disco virtuale con i due comandi:

# umount /mnt

Preparazione del file di configurazione del domU

Creare un file di configurazione del domU FreeBSD ponendo queste righe, avendo cura di sostituire il percorso corretto per l’immagine freebsd.img e dei file del kernel estratti precedentemente:

kernel = "/virt/freebsd-8.0p2-i386-xen-domu-kernel"
memory = 512
name = "freebsd"
vif = [ '' ]
disk = [ 'file:/virt/freebsd.img,hda,w' ]
extra = "boot_verbose=1"
extra += ",vfs.root.mountfrom=ufs:/dev/ad0s1a"
extra += ",kern.hz=100"

Controllare che nel file /etc/xen/xend-config.sxp del dom0 sia abilitato il supporto per la rete brigded se non c’è il cancelletto davanti a (network-script network-bridge) è tutto OK, altrimenti togliere il cancelletto salvare il file e riavviare la sezione network di Xen.

Avviare il domU col comando

# xm create -c /some/path/freebsd

Avendo cura di sostituire /some/path/freebsd con il percorso del file di configurazione del domU FreeBSD.

Problemi riscontrabili: Probabilmente il client dhcp automatico non funziona, basta usare il comando dhclient sull’interfaccia di rete virtuale presente nel domU.

Articolo originale in inglese
Scarica i file pronti all’uso:
kernel
config
freebsd.img

linux

Articolo precedente

Backup di MySQL