Xen recipes #3: guest OpenIndiana 151 para-virtualizzato
Questo post è obsoleto.
Per installare Solaris (o qualsiasi derivato come Nexenta/OpenIndiana/ecc.) c’è bisogno di fare ricorso alla para-virtualizzazione. In questo caso il sistema operativo guest viene fornito di un kernel appropriato e il tutto si trasforma in un piccolo esercizio di ricorsione.
Sotto questa modalità l’hypervisore lancia ed esegue direttamente il kernel para-virtualizzato ed il problema è quello di estrarlo e copiarlo sul sistema operativo host insieme a qualche altro pezzo di sistema (nel caso di Solaris c’è bisogno anche del boot_archive). Ergo occorre:
- estrarre e copiare i file platform/i86xpv/kernel/amd64/unix e /platform/i86pc/amd64/boot_archive dall’iso in una directory sul sistema operativo host (ad es.: /xen/openindiana)
- creare un file di configurazione usando il seguente template:
name='openindiana'
memory = "2048"
vif = [ "mac=FF:FF:FF:FF:FF:FF, bridge=br0” ]
disk = [
"file:/xen/openindiana/oi.img,xvda,w",
]
vcpus=2
kernel = "/xen/openindiana/unix"
ramdisk = "/xen/openindiana/boot_archive"
extra = "/platform/i86xpv/kernel/amd64/unix -B console=ttya" - lanciare la macchina virtuale ed eseguire l’installazione.
Terminata l’installazione, prima di spengere la macchina virtuale, vanno annotati il root dataset (comando “zfs list”; valore di ‘default’ rpool/ROOT/openindiana) e il nome del disco di avvio così come identificato dal sistema (comando “echo format”, dovrebbe restituire qualcosa come xdf@51712).
Successivamente, prima del primo riavvio, va modificata la linea evidenziata in modo da indirizzare il kernel appena installato verso il file system appena creato con la seguente:
extra = "/platform/i86xpv/kernel/amd64/unix -B zfs-
bootfs=rpool/ROOT/openindiana,bootpath=/xpvd/xdf@51712:a"
(unica riga)
A questo punto il sistema guest si avvierà e comincerà a funzionare come da aspettative. Se si vuole usare openindiana come server SMB, bisogna avere l’accortenza di aggiungere questa riga al file di configurazione /etc/pam.conf altrimenti l’autenticazione SMB non funzionerà come ci si aspetta:
other [TAB] password required [TAB] pam_smb_passwd.so.1 [TAB] nowarn
([TAB] rappresenta il carattere di tabulazione).
Un’ultima importante osservazione è che alcune operazioni, come l’import di pool esistenti, tendono a modificare il file di ramdisk. Per cui, prima di riavviare per l’ultima volta potrebbe essere necessario forzare l’aggiornamento del ramdisk (che solitamente avviene durante l’operazione di shutdown) con:
bootadm update-archive -f
e sovrascrivere il ramdisk presente sul sistema operativo host con:
scp /platform/i86pc/amd64/boot_archive
root@ip_host:/xen/openindiana
(unica riga)
Teoricamente si può bypassare questa necessità di tenere copie aggiornate di kernel e ramdisk sul sistema operativo host usando dei bootloader di guest alternativi come pygrub, però purtroppo l’ultima versione di pygrub non supporta l’ultima versione di ZFS per cui, fino a patch definitiva, quella di sincronizzare i file sull’host è una pratica necessaria.
Le performance di una macchina para-virtualizzata su XEN tendono ad essere significativamente superiori a quelle di una macchina fully virtualized; c’è infine da aggiungere che purtroppo le ultime versioni di Solaris non girano correttamente in maniera fully virtualized e pertanto la para-virtualizzazione rappresenta l’unica via di uscita.
-quack
Linkografia utile:
http://www.gossamer-threads.com/lists/xen/users/200909
http://docs.oracle.com/cd/E19082-01/820-2429/smbservertasks/index.html
http://tinyurl.com/89m4j8s
http://360is.blogspot.com/2010/03/paravirtualized-opensolaris-solaris-on.html
Prossima puntata le variazioni sul tema XCP 1.5, versione opensource di XenServer 6