{{tag>virsh libvirt}} # kvm ゲストを新規作成する たまにしかやらないから忘れるシリーズ。インストール cd やら dvd のイメージから kvm ゲストを作成します。 ## vm の設定を決めて virt-install する `virt-install` のたくさんのオプションの中から、とりあえずこれぐらいかな……というレベルのオプションを選んで設定します。 - `--connect qemu:///system` オマジナイです。 - `--name _gentoo_hardened` `virsh 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=virtio` `br0` という 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_0` pci passthru とかする場合はこんな指定をします。デバイスは `virsh nodedev-list --tree` とか `lspci -v` とかを駆使して頑張って調べます。 - `--video vga` Windows 系をインストールする時は `qxl` が優先されてしまうので、qemu をそういう風にビルドしていない場合は明示的に指定する必要があるようです。 ## 補足 `virt-install` コマンドは、このあと vm が停止するまで返ってきませんが、なんなら `Ctrl-C` とかで切っちゃっても大丈夫です。