QEMU Tips

LinkIconQEMUオプション
LinkIconQEMUモニタコマンド
LinkIconグラフィカルエミュレーション時のキー操作
LinkIcon-nographicオプション時のターミナルコマンド
LinkIconQEMUブリッジ型ネットワークの設定 (CentOS)
LinkIconQEMUブリッジ型ネットワークの設定 (Ubuntu)

milk_btn_pagetop.png

QEMUオプション  

  • -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ムディスクとして使います。

2011.10.16
milk_btn_pagetop.png

QEMUモニタコマンド  

  • 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ハブから取り外します。

2011.10.17
milk_btn_pagetop.png

グラフィカルエミュレーション時のキー操作  

  • Ctrl-Alt-f
    • フルスクリーンモードとウィンドウモードを切り替えます。
  • Ctrl-Alt
    • ホストOSとゲストOS間でマウスとキーボードを切り換えます。
  • Ctrl-Alt-1
    • ゲストOSの画面に切り替えます。
  • Ctrl-Alt-2
    • QEMUモニタの画面に切り替えます。
  • Ctrl-Alt-3
    • シリアルコンソールの画面に切り換えます。

2011.10.16
milk_btn_pagetop.png

-nographicオプション時のターミナルコマンド  

  • 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を送信します。

2011.10.16
milk_btn_pagetop.png

QEMUでのブリッジ接続 (CentOS)  

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 で起動する必要があります。

2011.10.17
milk_btn_pagetop.png

QEMUブリッジ型ネットワークの設定 (Ubuntu)  

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'

2010.11.30
milk_btn_pagetop.png