FreeBSD come XEN DomU

FreeBSD è un eccellente sistema operativo particolarmente adatto a gestire un server.
Con l’ultima versione stabile, la settima, il kernel di FreeBSD (http://people.freebsd.org/~kris/scaling/smp.html) ha notevolmente migliorato le prestazioni multithreading grazie anche allo sviluppo e al perfezionamento del supporto di più processori (SMP) le cui performance continuano a crescere fino a che il numero dei thread raggiunge il numero delle cpu.
Per questo motivo un’applicazione server, che faccia uso di multithreading, risulta essere più rapida.
Dunque FreeBSD 7 è un’ideale sistema operativo da far girare in una macchina virtuale.
La paravirtualizzazione, al momento, non è supportata in quanto manca il supporto a livello kernel (http://www.freebsd.org/doc/en/books/handbook/virtualization.html).
Esiste un progetto che si occupa del porting di Xen nel kernel FreeBSD tuttavia la soluzione è altamente sperimentale quindi inadatta ad un uso server.
Vecchie versioni di FreeBSD (5.3) implementavano il supporto a release Xen inferiori alla 3.0.2, che però non è compatibile con gli ultimi Xen.
Per questo motivo è necessario utilizzare la modalità HVM di Xen.
Le cose non sono facili comunque, in quanto, un bug (Bug 622: FreeBSD bootloader stops with BTX halted in hvm domU) rende impossibile il corretto caricamento del loader di FreeBSD. Per risolvere questo fastidioso problema è necessario compilare i sorgenti di Xen disabilitando il supporto per vmxassist oppure utilizzare la versione 3.2.2 di Xen che ha già disabilitato vmxassist di default.
Una volta compilato Xen da sorgenti oppure installato i pacchetti (http://xen.org/download/) per la propria distribuzione GNU/Linux con vmxassist non abilitato, si può agevolmente creare un file di configurazione per l’installazione di FreeBSD con:

name = “FreeBSD7”
builder = “hvm”
memory = “512”
disk = [‘file:/virtual/freebsd.img,hda,w’,’file:/virtual/swap.img,hdb,w’,’file:/iso/7.0-RELEASE-i386-dvd.iso,hdc:cdrom,r’]
vif = [ ‘type=ioemu,bridge=eth0’ ]
device_model = “/usr/lib64/xen/bin/qemu-dm”
kernel = “/usr/lib/xen/boot/hvmloader”
sdl=1
vnc=0
boot=”d”
vcpus=1
acpi=”0″

(naturalmente i file freebsd.img, swap,img e il file .iso devono esistere), personalmente io consiglio di usare come iso l’immagine di installazione via rete se la connessione ad internet è attiva e operativa.
Una volta installato FreeBSD 7 è possibile creare un file di configurazione per l’esecuzione normale del domU.

name = “FreeBSD7”
builder = “hvm”
memory = “512”
disk = [‘file:/virtual/freebsd.img,hda,w’,’file:/virtual/swap.img,hdb,w’]
vif = [ ‘type=ioemu,bridge=eth0’ ]
device_model = “/usr/lib64/xen/bin/qemu-dm”
kernel = “/usr/lib/xen/boot/hvmloader”
vnc=1
vcpus=1
acpi=”0″

quest’ultima configurazione attiva il supporto alle librerie vnc e non sdl.
Il problema riguardante il loader di FreeBSD affligge anche Opensolaris e può essere superato disabilitando vmxassist.