QEMUの基本的な使用方法

QEMUは、ハイパーバイザー型の完全仮想化ソフトウェアです。Linuxでは、Virt-Manager経由で利用されることもしばしばあります。 しかし、QEMUの持つ機能を直接使用したり、よりシンプルに利用する場合、QEMUを直接起動するほうが便利です。 この記事では、基本的な起動方法を紹介します。

なお、x86_64アーキテクチャでは、LinuxのKVMという仮想化支援機能を用いて高い実行性能を実現しています。 そのめ、QEMU/KVM、あるいは、単にKVMと呼ばれることもあります。

基本形

QEMUのコマンドラインは、仮想マシンの構成を含むためやや長くなりがち。そのため、以下ではシェルスクリプトとして起動コマンドを記載する例を示す。下記の内容を適当なファイル名(例: launch-qemu.sh)で保存し、実行すればよい。
#!/bin/sh

QEMU=qemu-system-x86_64
DISK_IMAGE=disk1.raw
MEMORY=1024

${QEMU} \
-enable-kvm \
-cpu host \
-m ${MEMORY} \
-drive format=raw,file=${DISK_IMAGE},if=virtio \
-nic user,model=virtio-net-pci
上記の実行により、次のようなWindowが起動する。

ドライブを追加する(SCSI接続のドライブ追加やUSBドライブの接続を含む)

以下の記事を参照

NICをブリッジモードに変更したり、ユーザモードで外部からアクセスする

上記の-nic userは、QEMU内でのNATを行うNICを追加する。 10.0.2.0/24のプライベートアドレスが仮想マシンに割り当てられる。 仮想マシン内から外部へのアクセスは行えるが、以下の制約がある。
  • pingで外部のノードと通信できない
  • 外部ノードから仮想マシンにアクセスできない(例えば、sshやnginxを仮想マシンで起動しても外部からアクセスできない)
これらが問題となるなる場合、ブリッジモードにするか、ユーザモードでポートフォワーディングの設定をする。 設定方法については、以下の記事を参照。

シリアルコンソールで起動する

X11を使っていない場合や、GUIのWindowが不要な場合、-nographicオプションを追加すると、 コマンドを起動した端末をシリアルコンソールにすることができる。
-nographic
nographicモードでシリアルコンソールとなった端末から復帰する方法については以下を参照

カーネルを直接起動する

冒頭のコマンド例では、物理マシンと同じように仮想ドライブ内に格納されているブートローダーが、同じく仮想ドライブ内のLinuxカーネルを起動する。QEMUは、ホストOS上の(仮想ドライブ内にない)Linuxカーネルを直接起動できる。以下に追加するコマンド例を示す。 -appendはカーネルの起動オプションである。
-kernel vmlinuz \
-append root=PARTUUID=a99825a2-e759-4e41-9c4c-b4804d050caa console=ttyS0 \
-initrd initrd.gz

参考

0 件のコメント: