QEMU CPU EmulatorCome recita il sito http://fabrice.bellard.free.fr/qemu/, QEMU is a FAST! processor emulator using dynamic translation to achieve good emulation speed. A parere mio Qemu si comporta come un bios a cui è possibile innestare una parte dell'hardware; ma questa è una considerazione tutta personale. Le periferiche emulate sono le seguenti:
Si tratta di un emulatore coi fiocchi; è multipiattaforma e offre l'opportunità di provare vari sistemi operativi senza per questo doverli installare sul PC. Dà la possibilità di usare anche immagini ISO, quindi distro live, senza che sia necessario masterizzare il file ISO nottetempo scaricato. Su http://www.freeoszoo.org/download.php, si trovano i pacchetti per l'uso sotto Linux, MAC OS X e Windows, oltre ad immagini RAW di hard disks contenenti sistemi operativi già installati e pronti all'uso. E' ovvio che trattasi di sistemi free, quindi è inutile cercare immagini contenenti un Windows qualsiasi installato. La documentazione si trova su http://fabrice.bellard.free.fr/qemu/qemu-doc.html e sembra piuttosto dettagliata, quindi mi limiterò all'indispensabile: Prima di tutto installiamo il pacchetto e magari anche il launcher, che aiuta molto... anche se poi la shell è sempre la shell :P. # apt-get install qemu qemu-launcher [nota di mrjive: esiste l'utility qemu-img per creare l'immagine: qemu-img create miaraw.img 2Gper creare un'immagine di due giga, e un ottimo tutorial che giuSerpe mi ha segnalato: http://www.montellug.it/wiki/index.php/Windows_su_Linux_con_qemu ] Prepariamo subito un'immagine RAW vuota: $ dd of=miaraw.img bs=1024 seek=1024000 count=0il file miaraw.img ottenuto avrà la dimensione di 1,024 GB. Una nota particolare la richiede il partizionamento. L'uso di fdisk non ha portato a risultati idonei: rimediamo con [Ranish] che è piuttosto intuitivo. Ranish non offre molte possibilità di scelta del tipo di filsystem, ma è molto potente ed efficace ed ha giusto cio' che ci serve. L'unico guaio è che funziona sotto DOS, quindi è necessario procurarsi un floppy di boot opportuno: http://www.bootdisk.org/. [nota di mrjive: io ho fatto senza; w2k non ne vuole sapere, ma il 98 si e' installato senza problemi.] una volta presa l'immagine di floppy-boot che preferiamo, la portiamo su floppy con: $ dd if=immagine_floppy-boot of=/dev/fd0e gli aggiungiamo i files contenuti nel pacchetto di Ranish. Ripensamenti circa la dimesione del file di un'immagine raw possono risolversi con la seguente riga, che, nell'esempio, porterà la dimensione del file image.raw a 2 Gb: dd if=/dev/zero of=image.raw seek=20480000 count=0 A questo punto siamo pronti per partizionare la nostra immagine RAW; per farlo lasciamo il floppy nel lettore ed utilizziamo appunto qemu: $ qemu -L /usr/share/qemu -hda miaraw.img -fda /dev/fd0 -boot a -localtimesarà avviato il sistema guest, in questo caso quello contenuto nel foppy, da cui far partire Ranish e partizionare a piacere in nostro file-immagine. [Screenshot] Fatto il partizionamento, possiamo passare all'installazione del sistema che preferiamo, dopo aver inserito nel lettore cdrom il cd di installazione: $ qemu -L /usr/share/qemu -hda miaraw.img -cdrom /dev/cdrom -boot d -localtime -pci Lo stesso risultato è ottenibile semplicemente utilizzando l'installer del SO che abbiamo scelto di installare, a patto che non usi fdisk. Es.: $ qemu -L /usr/share/qemu -hda miaraw.img -cdrom warty-x.iso -boot d -localtime -pciche installerà [UBUNTU] su miaraw.img (ammesso che 1 GB ci basti) preoccupandosi del partizionamento. Il file miaraw.img resta accessibile a Linux attraverso un mount così congegnato: $ mount -o loop,offset=32256 miaraw.img -t vfat /punto_di_mountAttenzione però: il "numero magico" 32256, usato per saltare la tabella delle partizioni e passare direttamente all'area dati del file RAW, può non essere corretto ed il mount può anche non funzionare; conviene perciò far ricorso ad [lomount]: un comodissimo script che farà tutto al posto nostro. Host e Guest in LANParticolare attenzione merita la possibilità di condivisione delle risorse tra Host e Guest.Per fare ciò, è necessario un gateway attraverso il quale i due sistemi possano guardarsi. Come è ovvio, prima di tutto occorre installare samba e configurarlo adeguatamente. Poi, per dar vita al gateway è necessario installare il pacchetto vtun con: #apt-get install vtunmediante cui, al momento dell'avvio di qemu, sarà creata l'interfaccia di rete tun0 che rimarrà in essere fino alla chiusura di qemu stesso. Creiamo, quindi, un file di nome /etc/qemu-ifup in cui inseriremo queste righe: #!/bin/sh # This is file /etc/qemu-ifup for use with tun/tap sudo /sbin/ifconfig tun0 192.168.1.254Cio' consentirà di attribuire all'interfaccia tun0 l'ip di gateway. Infine, avviato qemu, bisognerà attribuire all'interfaccia di rete del sistema emulato lo stesso ip di gateway ed un idoneo ip di rete tipo: ip 192.168.1.200 mask 255.255.225.0 gateway 192.168.1.254Dopo il riavvio del sistema emulato (ammesso che si tratti di Windows), sarà possibile condividere porzioni di filesystem, così come, da Guest, sì avrà la possibilità di inviare i nostri lavori alla stampare di Host. [nota di mrjive: usando l'opzione -user-net e impostando l'OS ospite per ottenere l'ip in DHCP la rete (internet) va. Per le condivisioni e' possibile usare l'opzione -smb dir (che devo ancora testare) -user-net funziona out-of-the-box ] [nota di micetto: sulle ultime versioni di debian bisogna assegnare un owner all'interfaccia tun0 altrimenti non puo' essere utilizzata. Per fare questo bisogna utilizzare il comando tunctl che si trova nel pacchetto uml-utilities] Condividere la connessione ad internetE' possibile utilizzando Linux condividere la connessione ad internet al sistema operativoemulato. Basta aggiungere le seguenti righe al file /etc/qemu-ifup di startup delle interfaccie di rete di qemu. #!/bin/sh # This is file /etc/qemu-ifup for use with tun/tap sudo /sbin/ifconfig tun0 192.168.1.254 sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE sudo echo "1" >/proc/sys/net/ipv4/ip_forward Utilizzando come gateway l'indirizzo 192.168.1.254 viene condivisa la connessione ad internet. [nota di micetto: Nelle versione recenti di Qemu ( >= 0.8.0 ) bisogna specificare a linea di comando la configurazione di rete per l'emulatore. In particolare, per condividere la connessione bisogna avviare l'emulatore nel seguente modo: qemu -net nic,vlan=0 -net tap,vlan=0,ifname=tun0 -L /usr/share/qemu -hda miaraw.imgRicordate anche che l'opzione -user-net non esiste più. Viene sostituita da -net user . ] Qualche istruzione per Windows:Prendiamo l'ultima versione da: ftp://ftp.freeoszoo.org/qemu/win32/daily/ ed installiamo.Andiamo in shell di DOS ed entriamo nella dir di Qemu (solitamente c:\Programmi\qemu); quindi creiamo la nostra immagine raw con c:\Programmi\qemu>mkdiskimage miaraw.img -s xxin cui xx è la dimensione in MB dell'immagine da creare. L'uso di Qemu da shell è identico a quello di Linux, tranne che, ovviamente, per il mount che non è possibile, a meno di utility che io non conosco. Anche per Windows c'è un launcher niente male. dd if=/dev/zero of=discoxp.img bs=1M count 48 se poi vuoi partizionarlo tu: losetup /dev/loop0 discoxp.img fdisk /dev/loop0 losetup -d /dev/loop0 per formattare la prima partizione: lostetup -o 32256 /dev/loop0 discoxp.img mkfs.vfat /dev/loop0 http://www.itsistemi.net/viewtopic-247682.html Links:
Screenshots:IRC:Server irc.freenode.netChan #qemu-it Chatzilla irc://irc.freenode.net/#qemu-it |