KVM: virt-installでゲストをインストール


前提


ドキュメント


インストール作業の自動化

それぞれについて、GUI(マウス)かCLI(コマンド)か。

既存のゲスト(ボリューム)をクローン・インポートする方法もある。


virt-installの主要なオプション

必須のオプション

その他

# Linux種類(短縮ID)を調べる
osinfo-query -f short-id,name,version os family=linux

ネットワーク選択

Linuxインストール画面をGUIで行うとき


キックスタート(自動インストール)

キックスタートファイル

キックスタートファイルの文法

必須項目を省略すると、インストール中に回答を求められる(GUI|CUIそれぞれの形で)。

キックスタートで使うオプション


各種コンソール設定

双方が合致しないとうまくいかない。

インストール時のコンソール

インストール後のコンソール

仮想・シリアルともに入出力できるようにする。

ゲストのGRUB設定: /etc/default/grub => grub.cfgへ反映


仮想マシン設定だけCLI: Linuxインストール画面はGUI

変数例

# ゲストの名前: 重複しないこと(virsh list --all)
name=centos7
name=ubuntu1804
# プールパス: ボリューム保存ディレクトリ
pool=/path/to/pool
# ボリュームパス: 拡張子例.qcow2
path=$pool/$name.qcow2

# メモリサイズMiB
memory=1024
# ディスクサイズGiB
size=10
# CPUの数
cpu=2
# Linux種類
linux=ubuntu18.04
linux=centos7.0

# ネットワーク
network="network=default" # NATモード

# ISOファイル・ロケーション
iso=ubuntu-18.04.3-server-amd64.iso
iso=ubuntu-18.04.3-desktop-amd64.iso
iso=CentOS-7-x86_64-DVD-1908.iso
location=/path/to/$iso

グラフィカルコンソール起動

virt-install --name $name  --memory $memory  --vcpus $cpu \
  --os-variant $linux  --noreboot  --network $network \
  --disk path=$path,size=$size \
  --cdrom $location

キックスタートで自動インストールの例

# キックスタート・ファイル名
ks_name=c7-server.ks
# ホストパス
ks_path=/path/to/$ks_name
# Ubuntuなら「inst.ks=」を「ks=」に
virt-install --name $name  --memory $memory  --vcpus $cpu \
  --os-variant $linux  --noreboot  --network $network \
  --disk path=$path,size=$size \
  --location $location  --initrd-inject $ks_path \
  --extra-args "inst.ks=file:/$ks_name console=tty0 console=ttyS0" \
  --noautoconsole && virsh console $name # そのままコンソール接続

キックスタートファイルの内容