Installare e Usare Qemu (e kqemu) su Ubuntu Dapper/Edgy

24/11/06: aggiornamento per includere un trucchetto per chi usa qemu con Compiz attivo (nel paragrafo “Utilizzo”)

Innanzi tutto dico che questo è un attrezzo per veri nerd. Qemu è un emulatore di processore, assolutamente open source, che permette trucchetti come questo:

qemu01-thu.png
Dapper dentro Dapper… ma vi giuro che si possono fare anche cose un po’ meno inutili :D

Carino no? In questo caso stavo emulando un x86 per avviare una Ubuntu Dapper virtuale all’interno della mia Dapper reale :-) C’è anche la possibilità di installare un’intero OS su un singolo hard disk virtuale che consiste di un solo file, di usare la macchina ospite come server dhcp

Vi spiego in pochi semplici passi cosa fare per installare Qemu e cominciare a “giocare” da subito :-)

Installazione

Prima cosa da fare: recuperare il binario già pronto per Dapper a questo indirizzo: http://fabrice.bellard.free.fr/qemu/download.html Non link direttamente il file ma dovreste scaricare quello denominato ” Binary distribution for linux-i386″. I sorci ci sarebbero ma ve li sconsiglio perché dovreste compilare usando gcc3, mentre Dapper ha gcc4.

Una volta recuperato il binario scompattiamolo direttamente nella root directory, in modo da sparpagliare correttamente il tutto nel filesystem, non temete: andrà tutto in /usr/local. Date questi comandi:

$: cd /
$: sudo tar zxf ~/qemu-0.8.2-i386.tar.gz

Ovviamente il numero di versione potrebbe essere diverso.

Adesso Qemu è già installato e pronto per l’uso, ma se abbiamo un procio x86 possiamo sfruttare un apposito modulo per il kernel Linux, che funziona da acceleratore di Qemu, rimandando molte chiamate direttamente al processore “ospite”.

Per installare il modulo abbiamo bisogno di far finta di installare da sorgenti, per cui recuperiamoli dalla stessa pagina indicata più su per il binario. Da quella pagina prendiamo anche il “Qemu Accelerator Module”. Piccola nota di dolore: il modulo kernel purtroppo non è liberamente distribuibile ed è software proprietario perché l’autore spera di poterlo vendere, o qualcosa del genere

Posizioniamoci nella nostra directory dei sorgenti (ne avete una, si?), e operiamo così:

$: cd ~/src
$: tar zxf ../qemu-0.8.2.tar.gz
$: cd qemu-0.8.2
$: tar zxf ../../kqemu-1.3.0pre9.tar.gz

Abbiamo cioè scompattato qemu in ~/src e successivamente scomppattato kqemu dentro la directory dei sorgenti di qemu, diamo un:

$: ./configure --disable-gcc-check

Per far finta di voler compilare qemu. L’operazione è velocissima, adesso possiamo finalmente entrare nella sottodirectory kqemu e compilare il modulo:

$: cd kqemu-1.3.0pre9
$: ./configure && make && sudo make install

Adesso il modulo è installato, ma per poterlo utilizzare da semplice utente è necessario creare il file /etc/modprobe.d/kqemu con questo contenuto:

options kqemu major=0

install kqemu /sbin/modprobe --ignore-install kqemu && chmod 666 /dev/kqemu

Per avere tutta la documentazione relativa a Qemu e Kqemu e come comportarsi col modulo in dettaglio visitate la pagina della documentazione.

Utilizzo

ubuntu-beos.png
Qemu alle prese con BeOS qualche tempo fa (su una Ubuntu Breezy, credo)

Usare Qemu è molto semplice, basta farci un po’ la mano, ecco cosa uso per lanciare un LiveCD di Dapper appena scaricato:

$: qemu -boot d -cdrom ubuntu-6.06.1-desktop-i386.iso

Potrei anche usare direttamente un CD nel mio lettore in /dev/hdd:

$: qemu -boot d -cdrom /dev/hdd

La cosa divertente è che si può perfino installare un intero OS in un disco virtuale, che è un semplice file immagine. Qemu ci mette a disposizione l’utilità qemu-img per creare le immagini disco. Ecco come farei per creare un disco da 1GB e per avviare il CD di Dapper che ho in /dev/hdd con l’intenzione di installarla su quel disco, specificando che voglio dedicare a qemu 512MB di Ram:

$: qemu-img create ImmagineDiscoQemu.img 1GB
$: qemu -boot d -cdrom /dev/hdd -hda ImmagineDiscoQemu.img -m 512

Semplice! E anche divertente, in un modo tutto nerd di intendere il divertimento :D

Nota: se usate Compiz la finestra di Qemu vi apparirà quasi trasparente, per ovviare a questo basta impostare una variabile prima di lanciare Qemu:

XLIB_SKIP_ARGB_VISUALS=1 qemu eccetera eccetera

Occhio: non esportate la variabile e non impostatela dal vostro .bashrc o simili.. altrimenti Compiz non partirà più (beh, solo gtk-window-decorator)

About these ads

67 pensieri su “Installare e Usare Qemu (e kqemu) su Ubuntu Dapper/Edgy

  1. io con qemu faccio girare (tristemente) win2000 nella mia debian sid che ci sono un macello di file *.mdb che devo maneggiare per l’universita’.

  2. Dice il saggio….
    perche’ compilare quando hai a disposizione apt-get?

    sudo apt-get install qemu

    :)

  3. vorrei aggiungere che per i possessori di processori intel core duo e superiori e pentium D 9xx e superiori (che quindi hanno supporto VT) possono provare il nuovo kvm e’ un modulo del kernel che fa quello che fa kqemu ma sfruttando le istruzioni vt quindi teoricamente + veloce

  4. e se non sono root sulla macchina? e’ la macchina del lavoro.
    vorrei incapsularci dentra una ubuntu in cui sono root cosi’ da installare programmi con apt-get. e usare sempre e solo la ubuntu qemulata.
    fattibile? consigliabile?

  5. @paolo: Fattibile? Sì, scegliendo un target di installazione interno alla tua home, e precaricando eventuali librerie condivise che fossero necessarie (non lo ricordo sinceramente). Tieni presente che, però, dovresti farti installare in /lib/modules/[versionekernel] kqemu, altrimenti il sistema emulato sarà insopportabilmente lento – quindi, magari, a che ci sei, prova a farti installare l’intero applicativo system-wide.

  6. Sono riuscito a far partire qemu ma nn kqemu infatti quando lancioun’immagine qemu mi dice:
    Could not open ‘/dev/kqemu’ – QEMU acceleration layer not activated

    Eppure ho seguito tutti i passi della guida.
    DOve ho sbagliato?
    ma quella cartella
    /dev/kqemu
    la devo creare io?

  7. @disturbo residuo:
    Non è una “cartella” ma un file dispositivo, e viene creata automaticamente da udev. Prova a vedere se esiste e che permessi ha

  8. ma il modulo kqemu è caricato?

    sudo lsmod | grep kqemu

    Se non restituisce niente prova a caricarlo con

    sudo modprobe kqemu

    Dovrebbe creare il file automaticamente

  9. felipe bellissima guida solo che c’è un comando in cui invece di “tar” hai scritto “taz” :D

    Tra le altre cose è successo pure a me il problema di Disturboresiduo (CCCP docet ?) ossia che seguendo tutti i passi non sembrava attivarsi “l’accelerazione”… fortunatamente il comando da te suggerito “sudo modprobe kqemu” ha risolto tutto.

    Ciao e grazie.

  10. ottima guida !!!
    finalmente sono riuscito a installare qul maledetto modulo (kqemu) :-)
    Cmq ho eseguito questa tua guida sulla edgy e funziona ancora benissimo!!

  11. ehmm.. mi sono dimenticato una cosa prima:
    ho letto da piu’ parti che le macchine virtuali create con qemu possono essere avviate anche con vmware player.
    Qualcuno ha provato? E soprattutto come fà ad avviarle vmware se non ha il file di configurazione hardware (vmx) insieme alle img del sistema operativo??
    ariciao

  12. Scusate….
    …ho installato qemu e provato a far partire il cd di Win2000 seguendo diverse guide, ma non sono riuscita a creare l’immagine iso din winzoz per avviare l’installazione…
    Ecco il risultato del tentativo fallito…

    ~/win2k$ dd if=/media/cdrom of=win2k.iso
    dd: lettura di `/media/cdrom': Is a directory
    entrati 0+0 record
    usciti 0+0 record
    0 bytes transferred in 0,006834 seconds (0 bytes/sec)

    Qualche suggerimento?
    Grazie mille.

  13. @Grisù:
    $ dd if=/dev/cdrom of=win2k.iso

    /dev, non /media!

    In ogni caso sappi che puoi usare direttamente il cdrom, senza farne un’imamgine, basta usare il parametro:

    -cdrom /dev/cdrom

    e qemu userà direttamente il CD nel tuo lettore :)

  14. Grazie mille! Perfetto!
    O quasi…come preannunciato in una delle guide che avevo letto win2000prof ha problemi con msgina.dll e chiede di ripristinare la DLL originale.
    Il problema è che dice di prendere il file da un altro pc con WIN2000 SP2 e copiare il file su un dischetto per poi riavviare con CDROM e floppy insieme.
    Qui nascono i problemi:
    1. non ho il floppy
    2. non ho un altro PC con win2000 SP2 per prendere il file
    3. inizio a pensare che winzoz sia veramente inutile!!!
    Adesso mi chiedo…
    …se prendo il file msgina.dll da un pc con win2000 SP4 cambia qualcosa?
    …e se lo copio sull’harddisk del pc invece che su un dischetto?
    …e…se ciò fosse possibile che comandi dovrei usare?

    Ancora grazie mille e … per fortuna che esiste linux!!!

  15. Ah…dimenticavo…un’altra domanda…
    ho creato un file win2k.img che, da quel che ho capito, viene usato come HD del pc emulato…durante l’installazione di win2000 è stato formattato in FAT32…
    La domanda è…qualsiasi casino di winzoz, crash, danni, ecc…avvengono lì dentro, vero? Cioè, il resto del pc, o meglio dell’HD, non rischia nulla…giusto?
    Grazie ancora e scusate le domande un po’ banali, ma sono un’UTENTE linux, lo uso tranquillamente, mi diverto a cercare di fare pasticci ma non è che ci capisca molto…

  16. @Grisù 28: Da quanto dicono qui sì.

    @Grisù 29: Sì, tutta la merda resta dentro l’harddisk virtuale (è la ragione principale per cui tutti noi ci divertiamo a fare bordello con le VMs) :)

  17. @Grisù 28: Dimenticavo di dirti che puoi accedere alla partizione virtuale usando il filesystem di loopback. Ti potrei spiegare tutto qui adesso, ma ho trovato sulla wiki di ArchLinux un pezzo fatto apposta per te.

  18. GRAZIE!!!
    Fantastico…ho montato, copiato msgina.dll nuovo e ora win2000 si avvia!
    E direi che va anche bene, ho solo altre due domande…
    1. qemu mi si apre in una finestrella piccolina e anche se la metto a tutto schermo windows rimane piccolino….c’è modo di impostare le dimensioni della finestra qemu?
    2. è possibile accedere dal pc virtuale ai file del resto dell’HD? Cioè, se dvo aprire un file con word, per esempio, devo per forza copiarlo prima dentro alla partizione virtuale o posso riuscire a far vedere il resto del PC a winzoz “emulato”?
    Grazie mille in anticipo!!!

  19. @Grisù 32:

    Per la 1) non so come aiutarti, sorry. In linea teorica dovresti poter aumentare la risoluzione del sistema guest sino all’infinito tramite Proprietà – Schermo, ma sinceramente non so se sia possibile farlo out-of-the-box.
    Per la 2a invece puoi impostare a Samba sul computer vero e a Winzozz lo stesso nome di dominio (e nomi di sistema smb diversi), e farli comunicare tramite l’interfaccia di rete virtuale di qemu. Maggiori lumi li trovi nella documentazione di Qemu (io per ora non ho un’installazione di Qemu pronta, perchè sto testando VirtualBox per finirne l’articolo su Wikipedia Italia [sono il fesso che ha iniziato l'articolo e messo lo screenshot, se bazzichi pure lì]).

  20. Ecco, ho combinato un pasticcio! Visto che, grazie ai vostri consigli, tutto funzionava a dovere….ho deciso di andare oltre e tentare di installare kqemu.

    Premessa: qemu l’ho fatto installare ad Aptitude e mi mette la versione 0.7.0 … forse perchè ho una ubuntu vecchia.

    Allora ho recuperato i sorgenti delle vecchie versioni qemu-0.7.0.tar.gz e la sua versione di kqemu-0.6.2-1.tar.gz
    Fatto questo ho seguito la guida qui sopra e…arrivata a configurare kqemu mi dà errore…che la vecchia versione non preveda ./configure???

    Cmq non mi importa che kqemu non vada…il fatto è che ora non mi parte proprio più qemu! Infatti non riesce ad aprire l’immagine del disco…
    …cosa devo fare per ripristinare il mio qemu originale?
    Immagino che sia stata colpa del comando
    ./configure –disable-gcc-check
    ma come posso tornare indietro?

    Grazie mille….prometto che se funziona stavolta mi fermo, altrimenti iniziate ad odiarmi!!!

  21. Sono una ciuccia! Prima non ero uscita dalla directory…poi uscendo non funzionava comunque, ma chiudentdo il terminale e riavviando il tutto…non ho più avuto problemi. Non tento più di installare kqemu e per ora mi accontento.
    Grazie siete stati gentilissimi, rapidissimi e chiarissimi nelle spiegazioni!

  22. Posizioniamoci nella nostra directory dei sorgenti (ne avete una, si?), e operiamo così:
    $: cd ~/src
    $: tar zxf ../qemu-0.8.2.tar.gz
    $: cd qemu-0.8.2

    Io mi blocco qui.
    Innanzitutto non ho una directory src. Me ne sono creata una nella Home (.src per l’esattezza, così non la vedo. Va bene lo stesso?).
    Inoltre quando scompatto il tar di qemu non mi crea mica una cartella qemu, quindi non posso fare cd qemu ecc…
    Forse dipende dal fatto che ho scaricato la versione 0.9.0?

  23. @PiKappa:

    1) Sì, va benissimo anche nascosta. Se avessimo voluto fare i megaformalisti, avremmo potuto scegliere come base di compilazione /usr/local/src, ma va bene uguale.

    2) Può darsi che la directory sia diventata qemu-0.9.0. Tu prova a fare cd qemu* e ti metti al sicuro, altrimenti fai ls e ti verrà elencata la directory. Se invece ti decomprime tutti i file nella directory corrente, puoi forzare la creazione di una directory con

    tar zxf [archivio] -C [directory]

  24. Decomprimo il file compresso ‘qemu-0.9.0-i386.tar.gz’
    Viene fuori un’unica cartella ‘usr’ che contiene un’unica cartella ‘local’ che contiene due cartelle, ‘usr’ e ‘share’
    L’unica cartella ‘qemu’ in tutto l’archivio è contenuta nella cartella ‘share’
    Va bene quindi la cartella ‘usr/local/share/qemu’?

  25. Ah, ecco dov’è il problema.

    Tu hai scaricato qemu-0.9.0-i386.tar.gz, che è una distribuzione binaria precompilata (nella pagina da dove l’hai preso c’è scritto), mentre dovevi scaricare questo se vuoi seguire la guida di Felipe.

  26. Doh!
    Ok, grazie.
    Che ci volete fare, raramente esco da Synaptic…
    Comunque anche dentro ‘qemu-0.9.0.tar.gz’ non c’è alcuna cartella ”qemu*’…
    :-(

  27. Nel file che ti ho linkato c’è una directory qemu-0.9.0, che è quella che ti serve
    cd qemu* ti ci fa andare comunque, se hai correttamente decompresso il file.

  28. Ce l’ho fatta e ho anche avviato una iso di ubuntu!!!
    Bellissimo!!!
    Non riesco però a far partire il boot dal cdrom:

    $ qemu -boot d -cdrom /media/hda1
    Could not configure ‘/dev/rtc’ to have a 1024 Hz timer. This is not a fatal
    error, but for better emulation accuracy either use a 2.6 host Linux kernel or
    type ‘echo 1024 > /proc/sys/dev/rtc/max-user-freq’ as root.
    qemu: could not open hard disk image ‘/media/hda1′

    Ho messo hda1, perchè la partizione dove ho più spazio libero.
    E’ una fat32 con dentro WinXP.
    Dove sbaglio?

  29. Attenzione: specificando

    -cdrom /media/hda1

    dici a QEMU che il CD-ROM si trova in /media/hda1, cosa che è alquanto improbabile, se non altro perchè /media/hda1 è una locazione mountata.

    Il parametro -cdrom vuole un’immagine ISO o un device fisico, quindi credo che la tua cmdline vada modificata in

    qemu -boot d -cdrom immagine.iso -hda /dev/hda

    perchè mi sembra di ricordare che non si possono usare locazioni mountate, ma solo device fisici o file immagine.

  30. scusate. ho installato tutto come da guida..
    qemu e kqemu..
    come faccio a disinstallare il tutto sempre usando terminale?
    grazie

  31. Innanzitutto .. buongiorno!

    ho provato a seguire la guida su edgy con kernel 2.6.17-11 e durante la compilazione tutto sembra funzionare correttamente, salvo un warning durante il make di kqemu :

    WARNING: could not find /home/paul/src/qemu-0.9.0/kqemu-1.3.0pre11/.kqemu-mod.o.

    Avviando qemu però vengo avvisato che:

    Could not open ‘/dev/kqemu’ – QEMU acceleration layer not activated

    Ed infatti provando, come suggerito da felipe,

    sudo modprobe kqemu

    ottengo:

    FATAL: Module –ignore_install not found.
    FATAL: Error running install command for kqemu

    Avete qualche idea ?

  32. Risolto. Il messaggio di warning in compilazione non era legato al fatal error in esecuzione..

    Il problema stava nel contenuto del file “/etc/modprobe.d/kqemu”, che avevo copiato ed incollato dal testo di felipe senza far caso che, in questo passaggio, i “–” erano stati sotituiti da un unico differente carattere.

    E dire che leggo spesso nei post che è molto comune..

    Comunque ho pensato di scriverlo qualora servisse ad altri.

    Ciao.

  33. @Paul:
    Grazie, in ogni caso credo di averlo sistemato. Mi confermi che la guida funziona con Qemu 0.9.0?

    Eventualmente mi segnali se c’è qualcosa da cambiare/sistemare (a parte il numero di versione)? :)

  34. @felipe

    Funziona tutto perfettamente con Qemu 0.9.0 e KQemu 1.3.0pre11.
    (edgy e Kernel 2.6.17-11)

    Alla compilazione “fasulla” dei sorgenti di Qemu in realtà mi è stata segnalata la mancanza delle librerie sdl 1.2, che ho installato con synaptic. (forse non era necessario, dovendosi fermare al “configure”)

  35. Felipe ho fatto come dici però l’acceleration layer non mi va:

    coobox@coobox-desk:~$ qemu -boot d -cdrom /media/hda/ISO/Windows\ XP\ SP2.iso -hda /media/hda/ISO/WindowsXPSP2.img
    Could not open ‘/dev/kqemu’ – QEMU acceleration layer not activated

    XP Parte cmq e mi pare assai veloce

  36. @Coobox

    prova a seguire le istruzioni del commento #15.

    Se il messaggio restituito digitando “sudo modprobe kqemu” è qualcosa di simile a “Fatal Error” prova a controllare di aver compilato correttamente il file “/etc/modprobe.d/kqemu”. (vedi mio messaggio #49)

  37. Salve a tutti devo dire che questa guida è veramente utile. Stò installando Winzozz ma è un pò (parecchio) lento…. in konsole c’è scritto ” Could not open ‘/dev/kqemu’ – QEMU acceleration layer not activated “… che posso fare per velocizzare l’emulazione?

    Grazie

  38. skusate ho fatto nn so kome danno potete dirmi kome rimontare /dev/kqemu?
    Could not open ‘/dev/kqemu’ – QEMU acceleration layer not activated

  39. per chi nn trova /dev/kqemu
    date da root

    ‘mknod /dev/kqemu c 250 0′ per creare il nodo

    ‘chmod 666 /dev/kqemu’ per dargli i giusti permessi

    io sono utente debian ma credo debba funzionare anche per voi!!
    ciao

  40. bella guida, grazie pollyNERD ^^

    segnalo che io ho installato il pacchetto libsdl-dev per far andare sdl

    ciao

Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...