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

参考

LXDでプロファイルを作成する

作成(ここでPROF_NAMEは任意の名前)
lxc profile create PROF_NAME
一覧表示
lxc profile list
ひとつのプロファイルを表示
lxc profile show PROF_NAME
プロフィールにNICを追加する例
lxc profile device add PROF_NAME eth0 nic nictype=bridged parent=BRIDGE_NAME
プロファイルをコンテナに追加
lxc profile add CONTAINER_NAME PROF_NAME
コンテナのデバイスに調べ方についてはこちらを参照 lxdのコンテナにNICを増設する例

LXDのコンテナにNICを増設する例

以下で、NIC_NAMEはeth1などに適宜変更。parentにはHost上のBridge名を指定
lxc config device add CONTAINER_NAME NIC_NAME nic nictype=bridged parent=br-exp0
構成の確認方法は次のとおり
lxc info CONTAINER_NAME
設定は次のように表示できる。
lxc config show CONTAINER_NAME
--expandedを加えると更に詳細な情報が表示される
lxc config show --expanded CONTAINER_NAME

opensslメモ

概要コマンド(例)
証明書の内容表示openssl x509 -text -in cert.pem
RSA鍵の作成openssl genrsa -out key.pem 2048

ksoftirqdとkworkerの比較

項目SoftirqTaskletWorke Queue
実行ksoftirqdkworker
sleep 不可 不可
同種の並列実行 不可 ?

B-timesなどの予約駐車場について

B-timesを始めとする、1日単位で予約・利用できる駐車場サービスが増えています。出先と駐車場が確保できる安心感と便利さは素晴らしい。当日、車の出し入れが自由な点も経済的で助かる。 一方、これまで利用してきて、留意すべき事項もあると思う。ここでは2つ紹介する。 1つ目は、近くに学校がある場所。スクールゾーンということで通学時間帯に通行が制限されていたり、幼稚園に子供をおくりにした保護者の自転車が路上に止められていて、駐車がものすごくしにくい。というかできずに使用を諦めたこともある(当日キャンセルしても料金は返ってこない) 2つ目は、車室番号の表示が消えかかっているケース。駐車場の中で番号を確かめるために右往左往していると、オーナーなのか、他の契約者なのかに、「関係者ですか?」と質問されてことがある。まあ、相手からするとこちらが不審者なのかもしれないが、少し高圧的で気分を害した。