kvm ゲストを新規作成する
たまにしかやらないから忘れるシリーズ。インストール cd やら dvd のイメージから kvm ゲストを作成します。
vm の設定を決めて virt-install する
virt-install のたくさんのオプションの中から、とりあえずこれぐらいかな……というレベルのオプションを選んで設定します。
--connect qemu:///systemオマジナイです。--name _gentoo_hardenedvirsh list --allとかで出てくる vm の名前です。--ram 2048割り当てメモリ量を 2GiB にしています。--vcpus 4この vm が使用可能な cpu(core) 数を 4つに設定しています。--cpu hostこの vm が cpu type をどう認識するか(/proc/cpuinfo とか)の情報を、仮想ホストと同じようにしています。--os-type linuxそのまんまです。この vm にインストールしようとしている os の種類です。--os-variant virtio26指定しておくと vm がさらに最適化された動作をするとかしないとか……指定できるパラメーターはosinfo-query osとかやるとズラズラ出てきます。--disk path=/dev/vg001/_gentoo_hardened_lv001,device=disk,bus=virtio,size=20この vm に割り当てるディスクの情報です。pathで lvm のボリューム名とか、あるいはディスクイメージファイルのパスなんかを指定します。deviceは、今回は raw disk を割り当てる場合はdiskです。busは、パラバーチャライゼーションドライバーを入れる予定なのでvirtioを指定、最後のsizeはこのボリュームのサイズですね。事前にボリュームを用意しなくても、勝手にここで指定した 20GiB のボリュームを作成してくれます。--disk path=/mnt/store/install-amd64-minimal-20170504.iso,device=cdromもう一つのdiskはインストールメディアですね。なのでdeviceはcdromとしています。--graphics vnc,port=5910,listen=0.0.0.0グラフィックの出力先をvncに設定し、使用するポートと ip アドレスを指定しています。--video virtioいつの頃からかデフォルトが 'qxl' になっていて、そういうビルドをした qemu でない場合は明示しないとエラーになります。--network bridge=br0,model=virtiobr0という bridge に tap 挿しなさいというネットワークの設定です。ここもパラバーチャライゼーションドライバーを使う予定なのでmodel=virtioとしています。--boot cdrom,hdブートデバイスですね。ここは複数指定することでいわゆるブートデバイスオーダーを設定できます。初回はインストールメディアで起動したいのでcdromを指定、さらにインストール完了後はインストールメディアを eject した状態で、セカンダリに指定したhdつまりハードディスクから起動するようにしています。
さてこの長ったらしいコマンドを投げると、勝手に lv 作って仮想マシンを起動してくれます。vnc で 5910 に接続して、あとは os のインストール作業をします。
# virt-install --connect qemu:///system --name _gentoo_hardened --ram 2048 --vcpus 4 --cpu host --os-type linux --os-variant virtio26 --disk path=/dev/vg001/_gentoo_hardened_lv001,device=disk,bus=virtio,size=20 --disk path=/mnt/store/install-amd64-minimal-20170504.iso,device=cdrom --graphics vnc,port=5910,listen=0.0.0.0 --network bridge=br0,model=virtio --boot cdrom,hd WARNING Unable to connect to graphical console: virt-viewer not installed. Please install the 'virt-viewer' package. WARNING No console to launch for the guest, defaulting to --wait -1 Starting install... Allocating '_gentoo_hardened_lv001' | 20 GB 00:00 Creating domain... | 0 B 00:00 Domain installation still in progress. Waiting for installation to complete.
今回は使わなかったオプション
--host-device pci_0000_02_00_0pci passthru とかする場合はこんな指定をします。デバイスはvirsh nodedev-list --treeとかlspci -vとかを駆使して頑張って調べます。--video vgaWindows 系をインストールする時はqxlが優先されてしまうので、qemu をそういう風にビルドしていない場合は明示的に指定する必要があるようです。
補足
virt-install コマンドは、このあと vm が停止するまで返ってきませんが、なんなら Ctrl-C とかで切っちゃっても大丈夫です。