Jak jsem upgradoval QEMU z verze 7.2 na 8.0
QEMU je open source emulátor celého počítače. Ve verzi 8.0 již plně podporuje jako cílový emulovaný systém:
- x86
- x86_64
- ARM
- SPARC
- PowerPC
- MIPS
QEMU spustíte na platformě:
- x86
- x86_64
- PowerPC
Průběžně aktualizovaný seznam cílových a hostujících platforem je k dispozici na domovské stránce QEMU.
Jak jsem instaloval
Instalace s RPM balíčku má nevýhodu v tom, že jednoduše nelze zkompiloval akcelerátor KQEMU pro aktuální verzi jádra. Jak jsem tak zjistil, QEMU ve verzi v RPM balíčku není zkompilována s podporou KQEMU vůbec.
Takže jsem si stáhnul klasicky zdrojový tarball pro verzi 8.0 a připravil ke kompilaci.:
$ tar zxvf qemu-0.8.0.tar.gz
$cd qemu-0.8.0
Pak jsem si stáhnul i akcelerátor KQEMU, což je modul do jádra, který abnormálně zrychluje práci s QEMU. Do složky se zdrojovým kódem QEMU jsem rozbalil i zdrojový kód KQEMU v aktuální verzi.
$ tar zxvf kqemu-0.7.2.tar.gz
Nyní by mělo stačit opět klasicky pokračovat:>
$ ./configure --prefix=/usr
Ale chyba lávky, vrátila se hláška:
ERROR: "gcc" looks like gcc 4.x
QEMU is known to have problems when compiled with gcc 4.x
It is recommended that you use gcc 3.x to build QEMU
To use this compiler anyway, configure with --disable-gcc-check
Kompilátor GCC 4 je již defaultní v Mandrivě 2006 a je jím kompilované jádro řady 2.6 v této distribuci. Zkusil jsem mu vnutit kompilaci na této verzi, ale jak už jsem byl varován, není to dobrý nápad, kompilace selhala.
Řešením bylo doinstalování GCC 3 a jeho nastavením jako defaultního GCC kompileru pro systém. To je možné udělat změnou symlinku /etc/alternatives/gcc na u mne /usr/bin/gcc-3.3.6.
Teď už byl GCC 3 defaultní a bylo možné provést kompilaci
$ ./configure --prefix=/usr
Install prefix /usr
BIOS directory /usr/share/qemu
binary directory /usr/bin
Manual directory /usr/share/man
ELF interp prefix /usr/gnemul/qemu-%M
Source path /home/pchovancik/download/qemu-0.8.0
C compiler gcc
Host C compiler gcc
make make
host CPU i386
host big endian no
target list i386-user arm-user armeb-user sparc-user ppc-user mips-user mipsel-user i386-softmmu ppc-softmmu sparc-softmmu x86_64-softmmu mips-softmmu arm-softmmu
gprof enabled no
static build no
SDL support yes
SDL static link yes
mingw32 support no
Adlib support no
CoreAudio support no
ALSA support no
DSound support no
FMOD support no
kqemu support yes
KQEMU Linux module configuration:
kernel sources /lib/modules/2.6.12-17mdk/build
kbuild type 2.6
Vše už je v pořádku, takže už po třetí klasicky jsem zkompiloval QEMU a nainstaloval.
$ make
$ make install
QEMU je instalováno a funkční, teď zbývalo již doinstalovat jen modul jádra akcelerátoru KQEMU. Vrátil jsem zpět kompilátor GCC na verzi řady 4, protože modul jádra sice zkompilovat GCC 3 možné je, avšak zavést jej se nepodaří. Je jen prostě nutné zkompilovat stejnou řadou kompilátoru, jako je samotné jádro. Poté jsem pokračoval tím, že jsem nejprve vyčistil kompilaci modulu s GCC 3 a poté jej znovu sestavil s GCC 4, nainstaloval a zavedl do jádra:
$cd kqemu
$ make clean
$ make all
$ ./install.sh
$ modprobe kqemu
A ono se to fakt povedlo a QEMU fungovalo i s podporou akcelerátoru
Změna nastavení sítě
Od verze řady 7 se výrazně změnilo nastavení sítě. Našel jsem výborný dokument, což mi ušetřilo hodně času. U mne bylo nutné pro rozchození sítě následující:
- Nastavit v emulovaném počítači TPC/IP protokol
- Připravit soubor /etc/qemu-ifup
Použil jsem jako cílový operační systém Windows 2000 Professional (vzkaz pro BSA: mám je legálně koupené, nebojte
) Nastavil jsem TCP/IP následovně:

Na hostitelském systému jsem vytvořil soubor /etc/qemu-ifup, zde jej QEMU očekává defaultně. Skripty by v /etc být asi neměly.
Obsah souboru je:
#!/bin/bash
echo QEMU TAP zarizeni je $1
sudo /sbin/ifconfig $1 192.168.2.1
Soubor /etc/qemu-ifup si spustí QEMU při svém startu a nastaví TAP zařízení na IP adresu, kterou jsem si vybral. Abych mohl zpouštět QEMU i jako normální uživatel, ještě jsem musel nastavit SUDO pomocí příkazu visodu, kam jsem vložil pchovancik ALL=(ALL) NOPASSWD: /sbin/ifconfig.
Poslední věcí bylo nastavení IPTABLES, což jsem udělal přes shorewall, kdy do souboru /etc/shorewall/masq jsem přidal:
#INTERFACE SUBNET ADDRESS PROTO PORT(S) IPSEC
eth0 tap0
Teď jsem už byl celkem připraven na start QEMU s Windows 2000 Professional.
$ qemu -hda win2k.img -net nic -net tap
QEMU TAP zarizeni je tap0
QEMU monitor
Pro otestování, že funguje podpora KQEMU a jak je nastavená síť, se dá použít QEMU monitor, který se zapne stiskem Ctrl+Alt+2 a opět vypne pomocí Ctrl+Alt+1. Pak již stačí jednoduše zadat info kqemu či třeba info network. V konzoli je i možné změnit výměnné médium.
Emulace zvukové karty
S QEMU 8.0 také přestane fungovat parametr -enable-audio, místo něj si již můžete vybrat mezí více chipsety například:
$ qemu -hda win2k-sp.img -soundhw es1370 $1 $2 -net nic -net tap>








10.Duben 2006 (Pondělí) 23:05
[...] Na QEMU 0.8.0 s akcelerátorem KQEMU byl výsledek instalace a provozu tedy na jedničku a i rychlost na mém 2 roky starém zkušebním PC s Athlonem 64 3200XP+ s 1 GB RAM byla více než-li uspokojivá. [...]