mercoledì 11 settembre 2013

lubuntu 13.04 powerpc virtualizzato su G4 con Qemu e kvm

Antecedenti

Credo che siano sette anni che cerco di fare funzionare una distribuzione gnu/linux powerpc virtualizzata (od almeno emulata) su di una distribuzione gnu/linux powerpc.

Dalla release 1.4.0 di Qemu per la prima volta sono riuscito a fare girare , in emulazione, lubuntu powerpc su lubuntu powerpc, sino alla versione 1.4.0 di Qemu non ero mai riuscito.

Parlo di emulazione, perchè mai ero riuscito a virtualizzare gnu/linux su powerpc G4 anche perchè qemu (qualsiasi architettura) non riusciva neanche ad emulare powerpc, figuriamoci a virtualizzarlo su architettura powerpc ( che non è certo la mainstream).

Ecco alcune videate dell'installazione lubuntu 12.10 powerpc alternate dentro qemu 1.5.2 il mio lubuntu 12.10 powerpc  sul mio Powerbook G4 che aveva solo 512 Mb di RAM.

Installazione lubuntu alternative powerpc in qemu powerpc
Potete vedere anche la live di lubuntu desktop powerpc, che incredibilmente gira dentro qemu nel mio Powerbook G4 con solo 512MB di ram; tenete presente che ho dato 384MB di ram a QEMU per fare girare la live.

lubuntu powerpc live dentro qemu su lubuntu powerpc
Sino ad ora ho parlato di emulazione e non di virtualizzazione perché a virtualizzare su G4 ci sono arrivato qualche mese dopo... Ma vediamo gli antecedenti perchè credevo che anche su powerpc G4 fosse possibile virtualizzare, nonostante non si trovassero in rete testimonianze, per lo meno lato gnu/linux.

virtualizzare Mac Os X su G4

Eppure già nel 2006 riuscivo a fare virtualizzare Mac Os X su ubuntu powerpc grazie ad una fantastica applicazione mac-on-linux , pacchetto mol. Mol virtualizzava sin da allora il Mac Os X installato praticamente alla velocità nativa, a parte il microfono che non funzionava, per cui c'era già la prova pratica che il G4 ( non ricordo se anche con il G3) virtualizzava alla grande, allora purtroppo sembrava impossibile virtualizzare anche gnu/linux.


Per cui in Aprile di quest'anno sono riuscito, che con tempi cosmici dati dall'emulazione, a fare l'installazione di lubuntu powerpc dentro qemu, è stato un successo, certo inutilizzabile, dato che la sola installazione in emulazione ha impiegato una giornata....

virtualizzare gnu/linux su G4

Sin dal lontano 2008 leggevo che kvm poteva funzionare pressoché su tutti i processori powerpc , compresi quindi anche G4 e G5, ma mai kvm è stato presente come modulo del kernel nelle distribuzioni ubuntu/lubuntu/debian powerpc, che sono le distribuzioni che ho sempre ho usato su i miei ibook G3/G4/powerbook G4.

Compilare il kernel per Powerpc con modulo kvm

La chiave della questione era KVM, che ad un certo punto è stato incluso nel kernel di linux, per cui in sintesi il cuore della questione per virtualizzare su processore powerpc G4 ( e G5) è la compilazione del Kernel.

Diverse volte avevo tentato a ricompilare il kernel per ubuntu ma mai vedevo in Virtualization l'opzione kvm.
Disperato a Luglio di quest'anno ho contattato quelli del team di Mac On Linux , tra cui il famoso Alexander Graf, che è uno di quelli che si occupa del modulo kvm per powerpc nel kernel di linux, oltre ad essere uno degli autori di Mac-on-Linux.

In passato ( l'ultima volta nel 2009) avevo già scritto al team di kvm ed anche a quello di MOL , mi rispose Alexander graf (oltre ad altri del team di kvm) ed allora stavano lavorando sul supporto di kvm per il G5, il G4 allora non era supportato.

Riscrivendo ancora ad Alexander Graf a luglio del 2013, come in passato mi ha risposto prontamente alla mia mail di richiesta di aiuto, ma questa volta mi ha detto che per fare girare Mac-on-Linux sui nuovi kernel bastava ricompilarlo per usare il modulo kvm e che il modulo kvm per G4 era compilabile cambiando le opzioni di compilazione del kernel.

Sapendo di essere di fronte ad un Guru del Kernel e di KVM ho dato per oro colato le sue semplici indicazioni, e mi sono messo a guardare nel MakeFile del kernel per cercare di capire come mai non mi compariva l'opzione, sino a quando sul ho provato a togliere il supporto SMP , a quel punto finalmente mi è apparsa l'opzione Virtualization e Kvm!!!!

E' da notare che invece partendo da una distribuzione debian testing installata sul mio altro Powerbook G4 (con scheda nvidia) è stato necessario ricompilare il kernel ma in quel caso l'opzione KVM in virtualization era presente!!! Mannaggia a me che in questi anni non ho mai installato debian sui miei powerpc!!! VIVA DEBIAN!!!!

Devo ringraziare anche le recenti conferme di Nello Martuscielli di linuxpowerpc.blogspot.it riguardo al supporto di kvm su G4, che mi ha suggerito di testare anche crux powperc 3.0 scaricando questa iso.

Debian Testing "Jessie" powerpc su G4 Nvidia

Tra l'altro lubuntu 13.04 non c'è stato modo di installarla sul mio PowerBook G4 con scheda nvidia, pur seguendo tutti gli howto per powerpc di ubuntu ( in parte aggiornati negli anni anche da me), per cui "forzatamente" ho provato ad installare debian testing (Jessie) powerpc che è andata su senza alcun problema al primo colpo, ringrazio ancora infinitamente Debian di esistere!

Devo ringraziare anche il grande Jeff (Zen) di PowerPC Liberation che testimoniando positivamente dell'utilizzo nel 2013 di debian powerpc, dopo avere anch'esso installato lubuntu 13.04, mi ha incoraggiato ad installarlo!


Fase di installazione di lubuntu 13.04 powerpc dentro qemu powerpc


Conclusa l'installazione di lubuntu 13.04 powerpc

Ecco di seguito il video fatto con recordMyDesktop per vedere l'esperienza reale di virtualizzazione su powerpc G4.
Nel video faccio partire un lubuntu 13.04 powerpc dentro Qemu 1.6.0 che gira su lubuntu powerpc 13.04 con attivo il modulo kvm.

Ecco il comando:
qemu-system-ppc -enable-kvm -m 384 -hda hdppc.qcow2 -kernel hdppc_kernel/vmlinux  -initrd hdppc_kernel/initrd.img -append "ro root=/dev/sda3"

Da notare che sempre con la stessa configurazione , dopo avere creato il disco virtuale di 5 Gigabytes con qemu-img
qemu-img create -f qcow2 hdppc.qcow2 5G

Prova su strada Virtualizzazione su Powerpc G4

Benchmark virtualizzazione

Nel video potete notare che ho fatto alcuni benchmark oltre ad aprie abiword e gnumeric, per darvi un idea della responsività, che è ottima a mio avviso.

Di seguito i benchmark BlowFish, CryptoHash e Fibonacci per misurare le prestazioni della CPU G4 virtualizzata da kvm (sempre dallo stesso powerpc G4, la cosa sorprendente che spesso i risultati sono migliori in virtualizzazione...

BlowFish su Qemu kvm virtualizzato su Powerpc G4

Fibonacci su Qemu kvm virtualizzato su Powerpc G4

CryptoHash su Qemu kvm virtualizzato su Powerpc G4

Confrontiamoli infatti con gli stessi benchmark nativi senza virtualizzazione.

BlowFish su Powerpc G4

Fibonacci su Powerpc G4

CryptoHash su Powerpc G4



I passi necessari per compilare kvm e qemu su powerpc


Compilazione del module kvm per powerpc (debian way)
Ho seguito i passi indicati da Debian Kernel HowTo

Scaricare i sorgenti del kernel ( nel mio caso il più recente era il 3.9.10 )
scompattarle il sorgente in /usr/src/
creare un link simbolico da /usr/src/ a /usr/src/linux 

Installare il necessari per compilare il kernel
apt-get install module-init-tools kernel-package libncurses5-dev fakeroot

entrare nella cartella devo avete scompattato il kernel /usr/src/linux
e copiare dentro il file config di lubuntu
cp /boot/config-`uname -r`.

make menuconfig
andare in processor , togliere supporto SMP
andare in virtualization e attivare KVM
make

sudo fakeroot make-kpkg --initrd --append-to-version=kvm_th kernel_image kernel_headers

Ho scelto come suffisso di versione kvm_th ( che sta per kvm techuman )
Verranno creati i file .deb da installare con dpkg -i .deb

Una volta installati vi troverete nella cartella /boot i nuovi vmlinux e initrd nel mio caso erano:
vmlinux-3.10.9kvmth
initrd.img-3.10.9

a questo punto per utilizzari al boot dovrete creare una voce del /etc/yaboo.conf che si riferisce a questi vmlinux ed initrd, io ho copiato la voce old rinominandola in new ed ho sostituito i rifierimenti ad initrd.old e vmlinux.old con i miei appena installata.
Per installare la nuova configurazione di yaboot ho fatto sudo ybin -v 

Al boot quando compare il bootloader di yaboot premendo tab ora troverete le voci che avete aggiunto nel yaboot.conf, nel mio caso la voce new, che ho selezionato.

Dato che ho scelto di compilare kvm come modulo , poi lo ho caricato con sudo modprobe kvm (se non vi da errore significa che è stato correttamente caricato, potete verificarlo con sudo lsmod | grep kvm)

Ovviamente potete fare caricare kvm al boot ( dovrebbe essere inserito in /etc/modules o /etc/modprobe.d/.conf ), oltre che agganciare il vostro kernel a quello di default che viene caricato ( sempre indicandolo nel /etc/yaboot.conf).



Compilazione di Qemu 1.6.0

Scaricare i sorgenti di qemu 1.6.0
sudo apt-get install pkg-config zlib-devel
apt-get build-dep qemu
./configure

Verificate di avere almeno il supporto sdl
Disinstallate il pacchetto qemu-common
make
sudo make install

Ora che abbiamo qemu 1.6.0 installato e il modulo kvm caricato possiamo per esempio installare lubuntu powerpc 13.04 desktop su nostro visco virtuale di 5G che abbiamo precedentemente chiamato hdppc.qcow2

qemu-system-ppc -enable-kvm -m 384 -vga std -hda hdppc.qcow2 -cdrom Scaricati/lubuntu-13.04-desktop-powerpc.iso -boot d

Terminata l'installazione in cui dovrete creare la partizione boot newworld di 1MB come indicato nel mio post sull'installazione di lubuntu 12.10 powerpc
avrete un disco che qemu non riesce a bootare, sarebbe da approfondire la questione che sicuramente è relazione all' openbios 1.1 che usa qemu e a yaboot il bootloader usare per questa architettura.

Nel mio caso ho trovato la soluzione suggerita da Richard WM Jones ovvero di estrarre vmlinux ed initrd dal disco virtuale in cui abbiamo installato lubuntu powerpc, l'unico problema che sia su debian testing powerpc che su lubuntu 13.04 powerpc non è presente guestfish, ho fatto vari tentativi di compilazione scaricando sia la versione 1.22.5 che 1.22.6 sia la source di debian testing che di lubuntu 13.04 ricompilandoli ma appoggiandosi questo libguest allo stesso qemu e ad immagini initrd e vmlinux c'è da smanettare un pò per preparare il tutto per powerpc per lo meno su debian e derivate, per cui alla finè ho preferito estrarre il tutto appoggiandomi ad una distro ubuntu x86 dove invece c'è il pacchetto, sicuramente in futuro preparerò il pacchetto anche per architettura powerpc...

Guestfish per estrarre vmlinux ed initrd da il disco virtuale con installato lubuntu powerpc

Installare su ubuntu x86
sudo apt-get install guestfish
update-guestfs-appliance

Lanciare guestfish sul disco virtuale
guestfish --ro -a hdppc.qcow2

Dalla console di guestfish dare i seguenti comandi per attivare l'appliance con qemu, aggiungere in il disco virtuale in sola lettura e avere la lista delle partizioni
run
add-ro hdppc.qcow2
list-filesystems

Viste le partizioni ho individuato la boot ( nel mio caso la /dev/vda5)  e la root che dovrò poi specificare a qemu ( nel mio caso la /dev/vda3) e ho dato il comando di guestfish per scaricarmi il vmlinux e l'initrd:

sudo guestfish --ro -a hdppc.qcow2 -m /dev/vda5 download /vmlinux vmlinux : download /initrd.img initrd.img
A questo punto mi sono copiato i file initrd.img e vmlinux sul mio powerbook G4 ed ho avviato lubuntu powerpc installato sul disco virtuale dentro qemu in virtualizzazione.


qemu-system-ppc -enable-kvm -m 384 -hda hdppc.qcow2 -kernel hdppc_kernel/vmlinux  -initrd hdppc_kernel/initrd.img -append "ro root=/dev/sda3"

Finalmente possiamo aiutare nel testing della varie distro gnu/linux powerpc con il nostro Powerbook G4 senza ogni volta dovere formattare tutto la macchina!!!!

Alcune piccole note:
tutta questa sperimentazione la ho fatto usando un Powerbook G4 con 512MB di Ram che poi ho espanso ad 1GB che per virtualizzare sicuramente è meglio.

Ringrazio ancora Giuseppe Longo che mi ha donato questo Powerbook G4 1.66 Ghz , senza il quale non avrei mai potuto dare questo contributo alla comunità.

Ho parlato di Mac-On-Linux , prossimamente farò un post su Mac-On-linux e come farlo funzionare con i kernel attuale appoggiandosi a kvm invece che la modulo di mol che non supporta più i nuovi kernel. Al momento mi sto facendo aiutare da Alexander Graf per superare alcuni problemi, lui stesso mi ha anticipato che stanno lavorando per fare girare Mac os X virtualizzato in qemu, non temete non appena si potrà farò un post anche di questo.



Nessun commento :

Posta un commento