QEMU CPUエミュレータユーザードキュメント
QEMUは、速い!プロセッサエミュレータです。ダイナミックトランスレーションを使って、良好なスピードでエミュレーションをします。 QEMUは2つの動作モードを持っています:
QEMUを動かすために、ホストにカーネルドライバを必要としません。しかし、満足なパフォーマンスが得られます。 システムエミュレーションでは、次のようなハードウエアに対するものがサポートされています。
ユーザーモードでは、x86、PowerPC、ARM、SPARC32/64といったCPUがサポートされています。
もし、自分でQEMUをコンパイルする場合は、section 6. ソースコードからのコンパイルセクションを見てください。
もし、あなたのディストリビューションにコンパイル済みのパッケージがあるなら、インストールするだけです。そうでなければ、see section 6. ソースコードからのコンパイル.
実験的な実行ファイルのインストーラをこちらからダウンロードしてください。 http://www.freeoszoo.org/download.php.
実験的な実行ファイルのインストーラをこちらからダウンロードしてください。 http://www.freeoszoo.org/download.php.
QEMUシステムエミュレータは次のような周辺機器をシミュレートします。
SMPは、255個までのCPUをサポートしています。 adlibは、QEMUが-enable-adlibオプションでコンパイルされているときだけ利用可能です。 QEMUは、BochsプロジェクトのPC BIOSと、Plex86/Bochs LGPL VGA BIOSを使っています。 QEMUは、Tatsuyoshi SatohさんのYM3812エミュレーションを使っています。
Linuxイメージ(<TT>`linux.img'</TT>)をダウンロードして、展開します。そして、以下のようにタイプします:
qemu linux.img
Linuxが起動し、プロンプトが現れるはずです。
使い方: qemu [options] [disk_image]
disk_image は IDEハードディスク0として使うraw ハードディスクイメージです。 一般的なオプション:
-M ?)
fr 。) このオプションは、PCキーコードが簡単に得られないときに使われます。(たとえば、MacやX11サーバーで)。 PC/LinuxやPC/Windowsホストでは、必要ありません。
利用可能なレイアウトは:
ar de-ch es fo fr-ca hu ja mk no pt-br sv da en-gb et fr fr-ch is lt nl pl ru th de en-us fi fr-be hr it lv nl-be pt sl trデフォルトは、
en-usです。
qemu -soundhw sb16,adlib hda qemu -soundhw es1370 hda qemu -soundhw all hda qemu -soundhw ?
USBオプション:
usb_addを見てください。
ネットワークオプション:
qemu linux.img -net nic -net tapもっと複雑な例(2つのNIC、それぞれがTAPデバイスに接続)は、
qemu linux.img -net nic,vlan=0 -net tap,vlan=0,ifname=tap0 \
-net nic,vlan=1 -net tap,vlan=1,ifname=tap1
# 最初のQEMUを起動 qemu linux.img -net nic,macaddr=52:54:00:12:34:56 -net socket,listen=:1234 # VLAN 0 を最初のQEMUのVLAN 0に接続 qemu linux.img -net nic,macaddr=52:54:00:12:34:57 -net socket,connect=127.0.0.1:1234
# QEMUを1つ起動します。 qemu linux.img -net nic,macaddr=52:54:00:12:34:56 -net socket,mcast=230.0.0.1:1234 # 同じ”バス”でもう1つQEMUを起動します。 qemu linux.img -net nic,macaddr=52:54:00:12:34:57 -net socket,mcast=230.0.0.1:1234 # 同じ”バス”でさらに1つQEMUを起動します。 qemu linux.img -net nic,macaddr=52:54:00:12:34:58 -net socket,mcast=230.0.0.1:1234例(User Mode Linux互換):
# QEMUを起動します。(選んでいるmcastアドレスは、UMLのデフォルトのアドレスです。) qemu linux.img -net nic,macaddr=52:54:00:12:34:56 -net socket,mcast=239.192.168.1:1102 # UMLを起動します。 /path/to/linux ubd0=/path/to/root_fs eth0=mcast
10.0.2.4 smbserverを、`C:\WINDOWS\LMHOSTS'というファイルに加えなければなりません。 (windows 9x/Meに対して) もしくは、`C:\WINNT\SYSTEM32\DRIVERS\ETC\LMHOSTS' (Windows NT/2000)。 そして、`dir' が、`\\smbserver\qemu'内で、使えます。. SAMBAサーバがホストOSの`/usr/sbin/smbd'にインストールされていなければならないことにに注意してください。QEMUは、Red Hat 9のバージョン2.2.7aとFedora Core 3のバージョン3.0.10-1.fc3のsmbdでのテストは成功しました。
# on the host qemu -redir tcp:6001::6000 [...] # this host xterm should open in the guest X11 server xterm -display :1telnetのホストのポート5555からのコネクションをゲストのtelnetのポートにリダイレクトするには、次のようにします。:
# on the host qemu -redir tcp:5555::23 [...] telnet localhost 5555これで、ホストで、
telnet localhost 5555を使うと、ゲストのtelnetサーバに接続することができます。
Linuxの起動に関すること。このオプションを使うことで、ディスクイメージにインストールすることなく、与えられたLinuxのカーネルを扱うことができます。いろいろなカーネルを容易にテストすることができます。
デバッグ/エクスパートオプション:
vc
pty
null
/dev/XXX
/dev/parportN
file:filename
stdio
pipe:filename
vc、グラフィックモードでなければstdioです。
このオプションは、4つのシリアルポートをシミュレートするまで何回か使えます。
vc、グラフィックモードでなければstdioです。
loadvmしてください)。
グラフィックモードでのエミュレーションでは、次のようなキーがつかえます。
仮想コンソール内ではCtrl-Up, Ctrl-Down, Ctrl-PageUp 、Ctrl-PageDownをつかって、前の入力に戻ることができます。 エミュレーション時に `-nographic'オプションを使っている場合、 Ctrl-a hオプションをターミナルコマンドを入力するのに使って下さい。
The QEMUモニターは、QEMUエミュレータに複雑なコマンドを与える時に使います。このようなことができます。:
次のようなコマンドが使えます:
h と w は、i フォーマットとともに指定し、16ビットと32ビットの命令のサイズを選択することができます。
(qemu) x/10i $eip 0x90107063: ret 0x90107064: sti 0x90107065: lea 0x0(%esi,1),%esi 0x90107069: lea 0x0(%edi,1),%edi 0x90107070: ret 0x90107071: jmp 0x90107080 0x90107073: nop 0x90107074: nop 0x90107075: nop 0x90107076: nop
(qemu) xp/80hx 0xb8000 0x000b8000: 0x0b50 0x0b6c 0x0b65 0x0b78 0x0b38 0x0b36 0x0b2f 0x0b42 0x000b8010: 0x0b6f 0x0b63 0x0b68 0x0b73 0x0b20 0x0b56 0x0b47 0x0b41 0x000b8020: 0x0b42 0x0b69 0x0b6f 0x0b73 0x0b20 0x0b63 0x0b75 0x0b72 0x000b8030: 0x0b72 0x0b65 0x0b6e 0x0b74 0x0b2d 0x0b63 0x0b76 0x0b73 0x000b8040: 0x0b20 0x0b30 0x0b35 0x0b20 0x0b4e 0x0b6f 0x0b76 0x0b20 0x000b8050: 0x0b32 0x0b30 0x0b30 0x0b33 0x0720 0x0720 0x0720 0x0720 0x000b8060: 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x000b8070: 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x000b8080: 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x000b8090: 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720
-を使って、いくつかのキーを同時に押すことができます。
例:
sendkey ctrl-alt-f1このコマンドは、ローレベルでグラフィカルユーザーインターフェースに割り込みをかけるキーを送るのに便利です。たとえば、X Windows の
ctrl-alt-f1などのように。
mouse)もしくは、ホストのUSBデバイス識別子です。ホストのUSBデバイス識別子は、次のようなシンタックスを持っています。host:bus.addrもしくは、host:vendor_id:product_id。
bus.addrというシンタックスを持ちます。モニターコマンドのinfo_usbというコマンドで、取り除くデバイスを確認してください。
モニターでは、すべての整数の引数について整数の表現方法を使うことができます。 $というプレフィックスをつけることで、レジスタの名前を使って、特定のCPUのレジスタの値を得ることができます。
バージョン0.6.1から、QEMUは多くのディスクイメージをサポートします。 増加するディスクイメージ(空でないセクターが書き込まれるごとに大きくなる)や、圧縮された、暗号化されたディスクイメージを含みます。
次のコマンドを使ってディスクイメージをつくれます。
qemu-img create myimage.img mysize
ここで、myimage.imgは、ディスクイメージのファイルの名前で、mysizeは、そのキロバイトでの大きさです。
Mを後ろにつけることでメガバイトでサイズを指定したり、
Gを後ろにつけてギガバイトに指定できます。
See section 3.6.3 qemu-imgの起動 詳しくは、このセクションを見てください。
`-snapshot' オプションを使う場合は、すべてのディスクイメージはリードオンリーとして扱われます。ディスクのセクターに書き込みがあると、 `/tmp' ディレクトリにある一時ファイルに書かれることになります。けれども、モニターでcommitを使う(もしくは、 シリアルコンソールでC-a s を押す)ことによって、rawディスクイメージに書き戻すことができます。
qemu-imgの起動
使い方: qemu-img command [command options]
次のコマンドがサポートされます:
コマンドのパラメータ:
raw
qemu-img infoを使うか、Unix/Linux上でls -lsを使うことで、イメージによって使われている現実のサイズを知ることができます。
qcow
cow
vmdk
cloop
M(megabyteとG(gigabyte)を後ろにつけることがサポートされています。
コマンドの解説:
commitというモニターのコマンドが使われるまで、base_imageは、けっして変更されません。
-eオプション)もしくは、圧縮(-cオプション)が使えます。
qcowというフォーマットのみが、暗号化と圧縮をサポートします。圧縮は、リードオンリーです。これは、圧縮されたセクターが再書き込みされると、圧縮されないデータとして再書き込みされることを意味します。
暗号化は、AESフォーマットを使います。とても安全なものです(128bitキー)。最高の安全性を求めるには長いパスワード(16文字)を用いてください。
qcowやcowといった大きくなるフォーマットを使うとき、イメージの変換はより小さなイメージを得るのにも便利です。:空のセクターは検出され、出力するイメージには抑制されます。
QEMUは、ディレクトリツリーから自動的にVirtual FATディスクイメージを作ります。 使うには、ただ、次のようにタイプするだけです。
qemu linux.img -hdb fat:/my_directory
すると、`/my_directory'にあるすべてのファイルにアクセスできます。ディレクトリをディスクイメージにコピーしたり、SAMBAやNFSでexportする必要がありません。デフォルトのアクセスは、read-onlyです。
フロッピーは、:floppy:オプションでエミュレートされます。
qemu linux.img -fda fat:floppy:/my_directory
リード/ライトサポートは次のオプションでサポートされますが、テスト(ベータステージ)です。
:rw: オプション:
qemu linux.img -fda fat:floppy:rw:/my_directory
決してしてはならないこと。
QEMUは、いくつかのネットワークカード(PCターゲットではNE2000ボード)をシミュレートします。そして、任意の仮想ローカルエリアネットワーク(VLAN)に接続できます。 ホストのTAPデバイスは、QEMUのVLANに接続できます。VLANは、大きなネットワークをシミュレートするために分離されたQEMUのインスタンスを接続することに使えます。 たとえば、特権を持たないユーザーモードネットワークスタックを基本的なネットワーク接続を持たせるため、TAPデバイスに取り替えることができます。
QEMUは、いくつかのVLANをシミュレートします。VLANは、いくつかのネットワークデバイスの間で、仮想コネクションを象徴的に表すことができます。これらのデバイスは、たとえば、QEMUの仮想ネットワークカードであったり、ホストのデバイス(TAPデバイス)であったりします。
これは、現実のネットワークとQEMUを接続する標準的な方法です。
QEMUは、ホスト(tapNと呼ぶ)に仮想ネットワークデバイスを付加します。そして、現実のイーサネットカードであるかのように構成することが可能です。
たとえば、`linux-test-xxx.tar.gz'ファイルをダウンロードし、`qemu-ifup'スクリプトを`/etc'にコピーします。そして、`qemu-ifup'に含まれるifconfigコマンドがrootで実行できるよう、sudoコマンドを適切に設定します。TAPネットワークインターフェースがあなたのカーネルでサポートされていることを確認しなければなりません。`/dev/net/tun'デバイスがないといけません。
section 3.8 Linuxの直接起動を見て、Linuxのディストリビューションでネットワークを使う例を見てください。また、section 3.3 起動を見て、TAPネットワークインターフェースを使うコマンドラインの例を見てください。
`-net user'オプションを付けることにより(`-net'を指定しない場合のデフォルトの設定です。)、QEMUは、完全なユーザーモードで、ネットワークを行います。(仮想ネットワークを使用するときにrootの特権が必要ありません。) 仮想的なネットワークの構成はつぎのようです。:
QEMU VLAN <------> ファイアーウォール/DHCP server <-----> インターネット
| (10.0.2.2)
|
----> DNSサーバ (10.0.2.3)
|
----> SMBサーバ (10.0.2.4)
QEMU VMはファイアーウォールの後ろにあって、すべての入ってくる接続をブロックするよう動作します。QEMU VM内では、DHCPクライアントを使って自動的にネットワークを設定することができます。 DHCPサーバは10.0.2.15から始まるアドレスを設定します。
ユーザーモードでのネットワークが動作していることを確認するためには、アドレス10.0.2.2にpingしたり、QEMUの仮想DHCPサーバから10.0.2.xの範囲のアドレスを割り当てられていることをみることで確認できます。
root特権が必要になるので、pingはインターネットには信頼性をもってサポートされていないことに注意してください。これは、ローカルルータ(10.0.2.2)にのみpingできることを意味します。
装備されているTFTPサーバを使うときは、ルーターはTFTPサーバーでもあります。
`-redir'オプションを使う場合、TCPもしくはUDPのコネクションは、ホストからゲストへリダイレクトされます。たとえば、X11、telnet、SSHといったコネクションをリダイレクトできます。
`-net socket'オプションを使うことで、いくつかのQEMUにまたがるVLANを構成することができます。section 3.3 起動に、基本的な例があります。
このセクションでは、完全に起動可能なイメージを作らずにLinuxをQEMUで動かすことについて説明します。これは、素早いLinuxのカーネルのテストに有効です。QEMUのネットワークの構成の仕方についても説明します。
sudoできるようにします。
`qemu-ifup'に含まれるifconfigコマンドはrootで実行される必要があるからです。 あなたのホストカーネルはTUN/TAPネットワークインターフェースをサポートしているか確認する必要があります:
`/dev/net/tun'デバイスがなくてはなりません。
ネットワークが使用可能になると、ホストのカーネルとエミュレートされたカーネルの間で仮想的なネットワークの接続が作られます。エミュレートされたカーネルはIPアドレス172.20.0.2でホストのカーネルから見ることができます。ホストのカーネルはエミュレートされたカーネルからはIPアドレス172.20.0.1で見ることができます。
qemu.shを実行します。次のような出力が得られます:
> ./qemu.sh Connected to host network interface: tun0 Linux version 2.4.21 (bellard@voyager.localdomain) (gcc version 3.2.2 20030222 (Red Hat Linux 3.2.2-5)) #5 Tue Nov 11 18:18:53 CET 2003 BIOS-provided physical RAM map: BIOS-e801: 0000000000000000 - 000000000009f000 (usable) BIOS-e801: 0000000000100000 - 0000000002000000 (usable) 32MB LOWMEM available. On node 0 totalpages: 8192 zone(0): 4096 pages. zone(1): 4096 pages. zone(2): 0 pages. Kernel command line: root=/dev/hda sb=0x220,5,1,5 ide2=noprobe ide3=noprobe ide4=noprobe ide5=noprobe console=ttyS0 ide_setup: ide2=noprobe ide_setup: ide3=noprobe ide_setup: ide4=noprobe ide_setup: ide5=noprobe Initializing CPU#0 Detected 2399.621 MHz processor. Console: colour EGA 80x25 Calibrating delay loop... 4744.80 BogoMIPS Memory: 28872k/32768k available (1210k kernel code, 3508k reserved, 266k data, 64k init, 0k highmem) Dentry cache hash table entries: 4096 (order: 3, 32768 bytes) Inode cache hash table entries: 2048 (order: 2, 16384 bytes) Mount cache hash table entries: 512 (order: 0, 4096 bytes) Buffer-cache hash table entries: 1024 (order: 0, 4096 bytes) Page-cache hash table entries: 8192 (order: 3, 32768 bytes) CPU: Intel Pentium Pro stepping 03 Checking 'hlt' instruction... OK. POSIX conformance testing by UNIFIX Linux NET4.0 for Linux 2.4 Based upon Swansea University Computer Society NET3.039 Initializing RT netlink socket apm: BIOS not found. Starting kswapd Journalled Block Device driver loaded Detected PS/2 Mouse Port. pty: 256 Unix98 ptys configured Serial driver version 5.05c (2001-07-08) with no serial options enabled ttyS00 at 0x03f8 (irq = 4) is a 16450 ne.c:v1.10 9/23/94 Donald Becker (becker@scyld.com) Last modified Nov 1, 2000 by Paul Gortmaker NE*000 ethercard probe at 0x300: 52 54 00 12 34 56 eth0: NE2000 found at 0x300, using IRQ 9. RAMDISK driver initialized: 16 RAM disks of 4096K size 1024 blocksize Uniform Multi-Platform E-IDE driver Revision: 7.00beta4-2.4 ide: Assuming 50MHz system bus speed for PIO modes; override with idebus=xx hda: QEMU HARDDISK, ATA DISK drive ide0 at 0x1f0-0x1f7,0x3f6 on irq 14 hda: attached ide-disk driver. hda: 20480 sectors (10 MB) w/256KiB Cache, CHS=20/16/63 Partition check: hda: Soundblaster audio driver Copyright (C) by Hannu Savolainen 1993-1996 NET4: Linux TCP/IP 1.0 for NET4.0 IP Protocols: ICMP, UDP, TCP, IGMP IP: routing cache hash table of 512 buckets, 4Kbytes TCP: Hash tables configured (established 2048 bind 4096) NET4: Unix domain sockets 1.0/SMP for Linux NET4.0. EXT2-fs warning: mounting unchecked fs, running e2fsck is recommended VFS: Mounted root (ext2 filesystem). Freeing unused kernel memory: 64k freed Linux version 2.4.21 (bellard@voyager.localdomain) (gcc version 3.2.2 20030222 (Red Hat Linux 3.2.2-5)) #5 Tue Nov 11 18:18:53 CET 2003 QEMU Linux test distribution (based on Redhat 9) Type 'exit' to halt the system sh-2.05b#
lsを動かします。 Ctrl-a hとタイプすると、仮想シリアルコンソール内で使えるキーのヘルプが表示されます。特に Ctrl-a x を使うとQEMUを終了し、Ctrl-a bはMagic SysRqキーとして機能します。
. /etc/linuxrcすると、エミュレートされたLinuxからあなたのPCに、x11のコネクションが張られます:
xhost +172.20.0.2これで`xterm' や `xlogo' を起動し、仮想的なLinuxシステムが現実のものになっていることを確認できます!
注意:
ide1=noprobe ide2=noprobe ide3=noprobe ide4=noprobe ide5=noprobe
QEMUは、PCI UHCI USBコントローラと、それに接続された8つのポートのUSBハブをエミュレートします。仮想的にUSBデバイスをハブに挿したり、現実のUSBデバイスを挿したりできます。(実験的に、Linuxホストのみで)。
仮想的なUSBマウスデバイスがテスト用に利用可能です。 次のようなコマンドで試すことができます。
# マウスデバイスを加えます。 (qemu) usb_add mouse # QEMU仮想USBハブに接続された仮想USBデバイスを表示します。 (qemu) info usb Device 0.3, speed 12 Mb/s # しばらく後マウスを削除します。 (qemu) usb_del 0.3
`-usbdevice'は、モニターコマンドと同じです。
usb_add.
注意:これは、実験的な機能です。使用するとQEMUが遅くなります。リアルタイムのストリーミングが必要なUSBデバイス(USBビデオカメラなど)は、まだサポートされていません。
ls /proc/bus/usb 001 devices drivers
chown -R myuid /proc/bus/usb
info usbhost
Device 1.2, speed 480 Mb/s
Class 00: USB device 1234:5678, USB DISK
使えるデバイスのリストを確認するべきです。(動かないハブを決して動かそうとしてはいけません。)
usb_add host:1234:5678通常、ゲストOSはデバイスが挿入されたとき報告します。 同じことを`-usbdevice'オプションでできます。
QEMUを再起動したときは、もう一度動かすためUSBデバイスを抜き差ししないといけません。 (これはバグです。)
QEMUには、gdbを使う基本的なサポートがあります。それにより、仮想マシンが走っているときに、その状態を検査するために 'Ctrl-C' がつかえます。 gdbを使うためには、qemuを '-s' オプションとともに起動します。qemuはgdbの接続を待ちます:
> qemu -s -kernel arch/i386/boot/bzImage -hda root-2.4.20.img -append "root=/dev/hda" Connected to host network interface: tun0 Waiting gdb connection on port 1234
次にgdbを 'vmlinux' を実行ファイルに指定して起動します:
> gdb vmlinux
gdb上で、QEMUと接続します:
(gdb) target remote localhost:1234
これでgdbを普通に使うことができます。たとえば、'c' をカーネルを起動するために使います:
(gdb) c
ここで、システムコードをgdbで使うための便利なヒントを示します:
info reg を使って、すべてのCPUレジスタを表示します。
x/10i $eip で、PC(プログラムカウンタ)の位置のコードを表示します。
set architecture i8086 で、16ビットのコードをダンプするよう指示します。そして、
x/10i $cs*16+*eip で、PC(プログラムカウンタ)の位置のコードをダンプします。
X11でSVGAグラフィックモードにアクセスするには、vesaもしくは、cirrus X11ドライバーを使います。 最適なパフォーマンスのためには、ゲストとホストのOSで16ビットカラーデプスを使います。
ゲストに2.6のLinuxカーネルを使うときは、
カーネルのコマンドラインオプションにclock=pitオプションを付け加えるべきです。 2.6のLinuxカーネルはデフォルトで厳密なリアルタイムクロックのチェックを行っており、QEMUは正確にシミュレートできないからです。
ゲストに2.6のLinuxカーネルを使う場合は、4G/4Gパッチが有効になっていないことを確認してください。QEMUはこのパッチで遅くなります。QEMUアクセレレータモジュールも遅くなります。
初期のFedora Core 3 Linuxのカーネル(<2.6.9-1.724_FC3)では、デフォルトでこのパッチを含みます。それより新しいカーネルには、含まれません。
もし、遅いホストをお使いなら、Windows 95を使うほうがスピードが出てよいです。 Windows 2000もいい選択です。
QEMUは、Cirrus Logic GD5446ビデオカードをエミュレートします。 Windows 95から始まるすべてのWindowsのバージョンで認識され、このグラフィックカードを使うことができます。 最適なパフォーマンスを得るには、ゲストとホストのOSで16ビットカーラーデプスを使います。
Windows 9xは、CPUのHLT命令を正しく使用していません。 その結果、アイドル状態でもホストのCPUサイクルを使用します。 http://www.user.cityline.ru/~maxamn/amnhltm.zipからユーティリティーをインストールすることで、この問題を解決できます。そのようなツールは、NT、2000、XPでは必要ないことに注意してください。
Windows 2000は、インストールの際disk fullのエラーが出るというバグを持っています。インストールのときは、その問題を回避する`-win2k-hack'というオプションを使ってください。 Windows 2000をインストールした後は、このオプションは必要ありません。(このオプションはIDEの転送速度を遅くします。)
Windows 98は、自動でシャットダウンできますが、Windows 2000は、自動でシャットダウンできません。 Windows 2000は、BIOSから供給されるAPMドライバを自動で使用しないことからきています。 修正するためには、次のようにします。(Struan Bartlettさんに感謝。) コントロールパネル=>ハードウェアの追加/削除 & 次=>デバイスの追加/トラブルシュート=>デバイスの追加 & 次=>いいえ リストからハードウェアの選択 & 次=>NT Apm/Legacy Support=>次(もう一度)何回か。これでドライバがインストールされ、Windows 2000は正しくQEMUに適当なときにシャットダウンするよう指示します。
`-smb'オプションについてのヘルプをsection 3.3 起動で見てください。
Windows XPのいくつかのリリースでは、正確にインストールされますが、セキュリティのエラーがブート時にでます:
A problem is preventing Windows from accurately checking the license for this computer. Error code: 0x800703e6.
わかっている対処はネットワークサポートなしで、セーフモードでブートすることだけです。 将来のQEMUのリリースでは、このバグはなくなるでしょう。
DOSは、CPUのHLT命令を正確に使用していません。その結果、アイドル時にもホストのCPUサイクルを使用します。 http://www.vmware.com/software/dosidle210.zipからユーティリティーをインストールすることで、この問題を解決できます。
QEMUは、一般的なエミュレータであり、PCでないマシンを多くエミュレートします。 オプションのほとんどはPCエミュレータと同じです。違いは次のセクションで説明します。
`qemu-system-ppc' という実行ファイルを使って、完全なPREPもしくはPowerMacのPowerPCシステムをシミュレートします。 QEMUは、次のようなPowerMac周辺機器をエミュレートします。:
QEMUは、次のようなPREP周辺機器をエミュレートします。:
QEMUは、 http://perso.magic.fr/l_indien/OpenHackWare/index.htmで得られるOpen Hack'Ware Open Firmware互換のBIOSを使用しています。 次のオプションは、PowerPCエミュレーションに特有のものです:
これ以上の情報は http://perso.magic.fr/l_indien/qemu-ppc/ で得られます。
`qemu-system-sparc'という実行ファイルをつかって、JavaStation(sun4m アーキテクチャ)をシミュレートします。エミュレーションは、なんとか完全なものになっています。 QEMUは、次のようなsun4m周辺機器をエミュレートします。
周辺機器の数はアーキテクチャで決まっています。 QEMUは、Prollを使います。http://people.redhat.com/zaitcev/linux/で得られるPROMの代替品です。必要とされるQEMU特有なパッチは、ソースコードに含まれます。 Linux 2.6のカーネルとラムディスクのサンプルはQEMUのサイトにあります。 現在、Linux 2.4やNetBSD、OpenBSDは動作しないことに注意してください。 次のオプションはSparcエミュレーションに特有なものです。
`qemu-system-sparc64'という実行ファイルでSun4uマシンをシミュレートします。 エミュレータはまだ、使えません。 QEMUは、次のようなsun4u周辺機器をエミュレートします。
`qemu-system-mips'という実行ファイルで、MIPSマシンをエミュレートします。 エミュレータはLinuxのカーネルをブートできNFSを使ったDebian Linuxのインストールを走らせることができます。 次のデバイスがエミュレートされます:
より詳しい情報は、メーリングリストのアーカイブにあります。
`qemu-system-arm'というファイルでARMマシンをエミュレートします。 ARMのIntegrator/CPボードがエミュレートされ、次のデバイスが使えます。
Linux 2.6のテストイメージがQEMUのウェブサイトで得られます。 より詳しくは、QEMUメーリングリストのアーカイブにあります。
Linuxのプロセスを立ち上げるには、QEMUはそれだけで実行可能なプログラムとダイナミックにリンクされるターゲット(x86)のライブラリが必要です。
qemu-i386 -L / /bin/ls
-L / により`/'からx86ダイナミックリンカがサーチするようにします。
qemu-i386 -L / qemu-i386 -L / /bin/ls
LD_LIBRARY_PATHがセットされてないことを
確認してください:
unset LD_LIBRARY_PATHするとあらかじめコンパイルしたx86の実行形式である`ls'を起動できます:
qemu-i386 tests/i386/ls`qemu-binfmt-conf.sh'を見てください。x86実行形式のプログラムを起動しようとすると、QEMUがLinuxカーネルにより自動的に起動されます。それにはLinuxカーネルの
binfmt_miscモジュールが必要です。
qemu-i386 /usr/local/qemu-i386/bin/qemu-i386 /usr/local/qemu-i386/bin/ls-i386
qemu-i386 /usr/local/qemu-i386/bin/ls-i386
${HOME}/.wine ディレクトリは${HOME/.wine.org}に保存されます。
qemu-i386 /usr/local/qemu-i386/wine/bin/wine /usr/local/qemu-i386/wine/c/Program\ Files/putty.exe
使い方: qemu-i386 [-h] [-d] [-L path] [-s size] program [arguments...]
デバッグオプション:
まず、ソースを解凍しなくてはいけません。:
cd /tmp tar zxvf qemu-x.y.z.tar.gz cd qemu-x.y.z
そして、QEMUをconfigureして、作ります(通常オプションは必要ありません)。
./configure make
そして、rootで次のようにタイプします。:
make install
to install QEMU in `/usr/local'.
QEMUのコンパイルを成功させるには、正しいツールを使うことがとても大切です。 もっとも大切なのは、gccです。テストされていないgccのバージョンを使ってQEMUが動作するかどうかを保証することはできません。 もし、違うバージョンのgccを動かしたい場合は、'configure'と'Makefile'を見てください。
host gcc binutils glibc linux distribution
----------------------------------------------------------------------
x86 3.2 2.13.2 2.1.3 2.4.18
2.96 2.11.93.0.2 2.2.5 2.4.18 Red Hat 7.3
3.2.2 2.13.90.0.18 2.3.2 2.4.20 Red Hat 9
PowerPC 3.3 [4] 2.13.90.0.18 2.3.1 2.4.20briq
3.2
Alpha 3.3 [1] 2.14.90.0.4 2.2.5 2.2.20 [2] Debian 3.0
Sparc32 2.95.4 2.12.90.0.1 2.2.5 2.4.18 Debian 3.0
ARM 2.95.4 2.12.90.0.1 2.2.5 2.4.9 [3] Debian 3.0
[1] On Alpha, QEMU needs the gcc 'visibility' attribute only available
for gcc version >= 3.3.
[2] Linux >= 2.4.20 is necessary for precise exception support
(untested).
[3] 2.4.9-ac10-rmk2-np1-cerf2
[4] gcc 2.95.x generates invalid code when using too many register
variables. You must use gcc 3.x on PowerPC.
./configure --enable-mingw32必要なら、MinGW tools の --cross-prefixオプションを使って、 cross-prefix を変更することができます。 --prefix を使って、Win32インストールパスをセットすることもできます。
Note: 現在、WineはWin32用のQEMUを起動できないようです。
Mac OS Xのパッチは、QEMUに完全にはマージされていません。そのため、必要な情報を得るためにはQEMUメーリングリストのアーカイブを見る必要があります。
This document was generated on 27 January 2006 using texi2html 1.56k.