QEMU Tips
QEMUオプション
QEMUモニタコマンド
グラフィカルエミュレーション時のキー操作
-nographicオプション時のターミナルコマンド
QEMUブリッジ型ネットワークの設定 (CentOS)
QEMUブリッジ型ネットワークの設定 (Ubuntu)
- -fda/-fdb <ファイル>
- フロッピーディスク0/1となるファイルを指定します。
- -hda/-hdb/-hdc/-hdd <ファイル>
- ハードディスク0/1/2/3となるファイルを指定します。
- -cdrom <ファイル>
- CD-ROM/DVDとなるisoイメージファイルを指定します。
- -boot a
- 起動デバイスにフロッピーディスクを指定します。
- -boot c
- 起動デバイスにハードディスクを指定します。(デフォルト)
- -boot d
- 起動ディスクとしてCD-ROM/DVDを指定します。
- -snapshot
- ディスクイメージファイルの代わりに一時ファイルに保存します。
- -m <メモリ数>
- ゲストOSが使用する使用するメモリをMバイト単位で指定します。
- (デフォルトは128Mバイト)
- -nographic
- グラフィック出力を停止し、シリアルコンソールに出力します。
- -monitor stdio
- QEMUモニタとして標準入出力を指定します。
- -enable-audio
- サウンドデバイスを有効にします。
- -soundhw <デバイス>
- サウンドデバイスを指定します。
- -localtime
- ホストOSの時間をローカルタイムとします。
- -full-screen
- ゲストOSをフルスクリーン表示します。
- -usb
- USBデバイスを有効にします。
- -usbdevice <デバイス>
- USBデバイスを指定します。
- -net nic[,vlan=n][,macaddr=<MACアドレス>]
- ネットワークカードを作成し、vlan nに接続します。
- (n=0がデフォルト)
- -net user[,vlan=n]
- ユーザモードネットワークを使用します。
- -net tap[,vlan=n][,fd=h][,ifname=<名前>][,script=<ネットワークスクリプト>]
- ホストOSのTAPインターフェースに接続します。
- デフォルトのスクリプトは/etc/qemu-ifupです。
- fd=hは既にオープンされているTAPインターフェースの指定に使います。
- -redir [tcp|udp]:<ホストポート>:[ゲストホスト]:<ゲストポート>
- ユーザーモードネットワークを使用時に、ホストポートからゲストポートにリダイレクトします。
- ゲストホストの指定がないと、QEMUのDHCPサーバのデフォルトアドレス10.0.2.15になります。
- -kernel bzImage
- カーネルのイメージとしてbzImageを指定します。
- -append cmdline
- cmdline をカーネルのコマンドラインとして使用します。
- -initrd <ファイル>
- 指定したファイルを初期化RAMムディスクとして使います。
- help or ? [cmd]
- すべてのコマンドもしくは、指定コマンドcmdのヘルプを表示します。
- commit
- ディスクイメージに変更点を書き込みます。(-snapshotが使用時)
- info version
- QEMUのバージョンを表示します。
- info network
- ネットワークの状態を表示します。
- info block
- ブロックデバイスを表示します。
- info chardev
- キャラクタデバイスを表示します。
- info registers
- CPUレジスタを表示します。
- info history
- コマンド履歴を表示します。
- info pci
- エミュレートされているPCIデバイスについて表示します。
- info usb
- 仮想USBハブに接続されているUSBデバイスについて表示します。
- info usbhost
- すべてのUSBホストデバイスについて表示します。
- info status
- 仮想マシンの状態(running|paused)を表示します。
- info vnc
- vncサーバの状態を表示します。
- info usernet
- ユーザネットワークスタックの接続状態を表示します。
- q or quit
- エミュレータを終了します。
- eject [-f] device
- リムーバブルメディアを取り出します。
- 強制的に取り出すにはには'-f'オプションを使います。
- change device filename
- リムーバブルメディアを入れ替えます。
- stop
- エミュレーションをストップします。
- c or cont
- エミュレーションを再開します。
- sendkey keys
- keysをエミュレータに送ります。
- -を使い、いくつかのキーを同時に押すことができます。
- system_reset
- システムをリセットします。
- usb_add devname
- USBデバイスdevnameをQEMUバーチャルハブに接続します。
- usb_del devname
- USBデバイスdevnameをQEMU仮想USBハブから取り外します。
- Ctrl-Alt-f
- フルスクリーンモードとウィンドウモードを切り替えます。
- Ctrl-Alt
- ホストOSとゲストOS間でマウスとキーボードを切り換えます。
- Ctrl-Alt-1
- ゲストOSの画面に切り替えます。
- Ctrl-Alt-2
- QEMUモニタの画面に切り替えます。
- Ctrl-Alt-3
- シリアルコンソールの画面に切り換えます。
- Ctrl-a h
- このヘルプを表示します。
- Ctrl-a x
- エミュレータを終了します。
- Ctrl-a s
- ディスクデータをファイルに書き戻して保存します。 (-snapshotの場合)
- Ctrl-a t
- タイムスタンプを表示します。
- Ctrl-a b
- breakを送信します。
- Ctrl-a c
- コンソールとモニタを切り換えます。
- Ctrl-a Ctrl-a
- Ctrl-aを送信します。
QEMUのホスト環境とバーチャル環境の間にブリッジ型ネットワークの設定を行います。QEMUではホストOSと同じネットワークに接続するにはブリッジを使用する必要があります。
bridge-utilsパッケージのインストール
ブリッジを作成するためにbridge-utilsパッケージをインストールします。
# yum install bridge-utils
サービスの設定
NetworkManagerをoffに、networkサービスをonに設定します。
# chkconfig NetworkManager off
# chkconfig network on
# service NetworkManager stop
# service network start
ブリッジ用設定ファイルの作成
ブリッジ用のインタフェースの設定ファイル /etc/sysconfig/network-scripts/ifcfg-br0 を作成します。
DHCPの場合
# nano /etc/sysconfig/network-scripts/ifcfg-br0
DEVICE=br0
TYPE=Bridge
BOOTPROTO=dhcp
ONBOOT=yes
DELAY=0
静的なIPアドレスの場合
# nano /etc/sysconfig/network-scripts/ifcfg-br0
DEVICE=br0
TYPE=Bridge
BOOTPROTO=static
BROADCAST=192.168.1.255
IPADDR=192.168.1.3
NETMASK=255.255.255.0
NETWORK=192.168.1.0
DELAY=0
物理NICの設定ファイルの編集
物理NICの設定ファイル /etc/sysconfig/network-scripts/ifcfg-eth0 を編集します。
# nano /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
HWADDR=<MACアドレス>
ONBOOT=yes
BRIDGE=br0
/etc/qemu-ifupと/etc/qemu-ifdownの作成
ブリッジデバイスを利用した場合、qemuは/etc/qemu-ifupスクリプトを実行します。
qemu-ifupスクリプトの作成
qemu-ifupスクリプトの第一引数には作成するデバイス名が渡されます。
# nano /etc/qemu-ifup
#!/bin/sh
echo "Executing /etc/qemu-ifup"
echo "Bringing up $1 for bridged mode..."
sudo /sbin/ifconfig $1 0.0.0.0 promisc up
echo "Adding $1 to br0..."
sudo /usr/sbin/brctl addif br0 $1
sleep 3
/etc/qemu-ifdownの作成
使い終わったデバイスを削除するqemu-ifdownスクリプトを作成します。
# nano /etc/qemu-ifdown
#!/bin/sh
sudo /usr/sbin/brctl delif br0 $1
sudo /sbin/ifconfig $1 down
実行権限付与
実行権限を与えます。
# chmod 755 /etc/qemu-ifup
# chmod 755 /etc/qemu-ifdown
ネットワークの再起動
ネットワークを再起動します。
# service network restart
動作確認
ifconfigコマンドで動作確認を行います。
# ifconfig
ブリッジ接続時のQEMU起動方法
ブリッジ接続を行う場合、QEMU起動時にオプション -net nic -net tap を付ける必要があります。
また、QEMUの起動は sudo で起動する必要があります。
QEMUのホスト環境とバーチャル環境の間にブリッジ型ネットワークの設定を行います。QEMUはデフォルトでNAT型の仮想ネットワークになっています。
必要ツールのインストール
tunctlのインストール
uml-utilities をインストールします。
$ sudo apt-get install uml-utilities
bridge-utilsのインストール
bridge-utilsをインストールします。
$ sudo apt-get install bridge-utils
/etc/network/interfacesの編集
/etc/network/interfacesを編集します。
$ sudo vi /etc/network/interfaces
DHCPでIPアドレス設定する場合
auto lo
iface lo inet loopback
auto br0
iface br0 inet dhcp
bridge_ports eth0
bridge_stp off
bridge_maxwait 1
固定IPアドレスを設定する場合
auto lo
iface lo inet loopback
auto br0
iface br0 inet static
address 192.168.1.2
network 192.168.1.0
netmask 255.255.255.0
broadcast 192.168.1.255
gateway 192.168.1.1
bridge_ports eth0
bridge_stp off
bridge_maxwait 1
/etc/qemu-ifupの編集
/etc/qemu-ifup を編集します。
$ sudo vi /etc/qemu-ifup
#!/bin/sh
echo "Executing /etc/qemu-ifup"
echo "Bringing up $1 for bridged mode..."
sudo /sbin/ifconfig $1 0.0.0.0 promisc up
echo "Adding $1 to br0..."
sudo /usr/sbin/brctl addif br0 $1
sleep 3
ネットワークの再起動
ネットワークを再起動します。
$ sudo /etc/init.d/networking restart * Reconfiguring network interfaces... Waiting for br0 to get ready (MAXWAIT is 1 seconds). [ OK ]
動作確認
ifconfigで動作確認をします。
$ ifconfig
br0 Link encap:イーサネット ハードウェアアドレス 00:0c:29:06:f3:dc
inetアドレス:192.168.1.2 ブロードキャスト:192.168.1.255 マスク:255.255.255.0
inet6アドレス: fe80::20c:29ff:fe06:f3dc/64 範囲:リンク
UP BROADCAST RUNNING MULTICAST MTU:1500 メトリック:1
RXパケット:14 エラー:0 損失:0 オーバラン:0 フレーム:0
TXパケット:32 エラー:0 損失:0 オーバラン:0 キャリア:0
衝突(Collisions):0 TXキュー長:0
RXバイト:1384 (1.3 KB) TXバイト:4117 (4.1 KB)
eth0 Link encap:イーサネット ハードウェアアドレス 00:0c:29:06:f3:dc
inet6アドレス: fe80::20c:29ff:fe06:f3dc/64 範囲:リンク
UP BROADCAST RUNNING MULTICAST MTU:1500 メトリック:1
RXパケット:4169 エラー:0 損失:0 オーバラン:0 フレーム:0
TXパケット:408 エラー:0 損失:0 オーバラン:0 キャリア:0
衝突(Collisions):0 TXキュー長:1000
RXバイト:609430 (609.4 KB) TXバイト:42916 (42.9 KB)
割り込み:19 ベースアドレス:0x2024
lo Link encap:ローカルループバック
inetアドレス:127.0.0.1 マスク:255.0.0.0
inet6アドレス: ::1/128 範囲:ホスト
UP LOOPBACK RUNNING MTU:16436 メトリック:1
RXパケット:3 エラー:0 損失:0 オーバラン:0 フレーム:0
TXパケット:3 エラー:0 損失:0 オーバラン:0 キャリア:0
衝突(Collisions):0 TXキュー長:0
RXバイト:246 (246.0 B) TXバイト:246 (246.0 B)
ブリッジ接続時のQEMU起動方法
ブリッジ接続を行う場合、QEMU起動時にオプション -net nic -net tap を付ける必要があります。
また、QEMUの起動は sudo で起動する必要があります。
sudo で起動しないと下記のようなメッセージが表示されます。
warning: could not open /dev/net/tun: no virtual network emulation
Could not initialize device 'tap'