virt-installコマンドを使用してインストールする。
コンソール環境でのインストールに使用するオプション。
--location ISOイメージ --extra-argsが有効になるように--cdromではなく--locationでISOイメージを指定する--graphics none グラフィカルコンソールを無効にする--console pty,target_type=serial テキストコンソールをシリアルで作成--extra-args console=ttyS0,115200n8 ゲストのkernelでコンソールをシリアルに接続
--extra-argsはカーネルに渡すパラメータ。
よくみかけるのは--extra-args console=tty0 console=ttyS0,115200n8。
tty0はVGAコンソール、ttyS0はシリアルコンソール。
グラフィックディスプレイを接続する場合はtty0が、
virsh consleで接続する場合はttyS0が、
それぞれ対応している。
consoleを複数記述した場合は最後のconsoleがプライマリコンソールになる。 initのメッセージやテキストモードのインストーラの出力はプライマリコンソールにだけ出力される。
シリアルコンソールのみを使用して、今後ともグラフィックディスプレイを接続する予定がなければconsole=ttyS0,115200n8だけで十分。
両方使用し、テキストモードのインストーラをvirsh consoleやvirt-installで見たければconsole=tty0 console=ttyS0,115200n8としてシリアルコンソールをプライマリにする。
逆にテキストモードのインストーラをグラフィックディスプレイで見たければconsole=ttyS0,115200n8 console=tty0としてVGAコンソールをプライマリにする。
inst.graphical console=tty0 console=ttyS0,115200n8とするとプライマリはシリアルコンソールになるが、
グラフィカルモードなのでインストーラはグラフィックディスプレイに出力される。
pty,target_type=serial以外にもpty,target_type=virtioがあるが、
準仮想化だと初期化されるタイミングが遅いためブートローダのメッセージ等を表示できない。
Red Hat系では特に指定しなくてもデフォルトで設定されるため不要。
virt-install --name centos7 --memory 2048 --vcpus 1 --disk size=8 --os-variant centos7.0 --location CentOS-7-x86_64-Minimal-2009.iso --graphics none --extra-args console=ttyS0,115200n8
ディスクは自動パーティションのみなので、LVMの場合はディスクサイズが小さいなら/パーティションとswapのみ、大きくなると/と/homeに分割する。
CentOS 7で/homeのパーティションを削除して/を最大まで拡張し/パーティションのみにする例。
/homeにファイルがある場合は事前に移動しておくこと。
df -h umount /home vi /etc/fstab lvremove /dev/centos/home lvextend /dev/centos/root -l +100%FREE -r vgdisplay df -h
swapを削除する場合、swapの削除はswapoff -a、swapの状態取得はcat /proc/swaps、LVの変更は同上、加えて/etc/default/grubからパーティションの記述を削除しgrub2-mkconfigを実行する。
virt-install --name rocky8 --memory 2048 --vcpus 1 --disk size=8 --os-variant rocky8-unknown --location Rocky-8.7-x86_64-minimal.iso --graphics none --extra-args console=ttyS0,115200n8
virt-install --name rocky9 --memory 2048 --vcpus 1 --disk size=8 --os-variant rocky9-unknown --location Rocky-9.1-x86_64-minimal.iso --graphics none --extra-args console=ttyS0,115200n8
virt-install --name deb11 --memory 2048 --vcpus 1 --disk size=8 --os-variant debian11 --location debian-11.5.0-amd64-DVD-1.iso --graphics none --console pty,target_type=serial --extra-args console=ttyS0,115200n8
他と同じオプション指定では下記のエラーメッセージを出力してインストーラが起動しない。
Starting install... ERROR Couldn't find kernel for install tree. Domain installation does not appear to have been successful.
--locationでkernelとinitrdの場所を指定する必要がある。
virt-install --name ubuntu22 --memory 2048 --vcpus 1 --disk size=8 --os-variant ubuntu22.04 --location ubuntu-22.04.1-live-server-amd64.iso,initrd=casper/initrd,kernel=casper/vmlinuz --graphics none --console pty,target_type=serial --extra-args console=ttyS0,115200n8
画面だけでなくUSB接続なども可能。 マニュアル参照。
virt-installで--graphics spice,listen=0.0.0.0を指定する。
リモートから接続する場合は必ずサブオプションのlistenを追加すること。
| サブオプション | 概要 | 詳細 |
|---|---|---|
| listen=IP | 接続を受け付けるIPアドレス | デフォルトは127.0.0.1 |
| port=PORT | 接続を受け付けるポート番号 | デフォルトは5900以降で使われていない最初のポート オプションで指定すると固定できる |
| password=PASS | 画面接続時のパスワード(ticketing) | デフォルトはパスワード無し |
サブオプションを複数指定する場合は“,”で連結する(例:listen=0.0.0.0,port=5900)。
portを指定しない場合、
virsh domdisplay <DOMAIN>で使用しているポート番号を確認できる。
リモートから接続するならファイアウォールを設定する。
firewall-cmd --add-service vnc-server または firewall-cmd --add-port 5900-5903/tcp。
vnc-serverサービスはポート5900-5903を許可する。
ゲストOSにエージェントをインストールするとSPICEの機能をフル活用できる。
Red Hat系ならdnf install xorg-x11-drv-qxl spice-vdagent。
ただし、X環境が必要。
virt-installで--graphics vnc,listen=0.0.0.0を指定する。
リモートから接続する場合は必ずサブオプションのlistenを追加すること。
| サブオプション | 概要 | 詳細 |
|---|---|---|
| listen=IP | 接続を受け付けるIPアドレス | デフォルトは127.0.0.1 |
| port=PORT | 接続を受け付けるポート番号 | デフォルトは5900以降で使われていない最初のポート オプションで指定すると固定できる |
| password=PASS | 画面接続時のパスワード | デフォルトはパスワード無し |
サブオプションを複数指定する場合は“,”で連結する(例:listen=0.0.0.0,port=5900)。
portを指定しない場合、
virsh domdisplay <DOMAIN>やvirsh vncdisplay <DOMAIN>で使用しているポート番号等を確認できる。
リモートから接続するならファイアウォールを設定する。
firewall-cmd --add-service vnc-server または firewall-cmd --add-port 5900-5903/tcp。
vnc-serverサービスはポート5900-5903を許可する。
virsh consoleで接続できるようにシリアルコンソールを設定しながら、グラフィカルモードでインストーラを実行する。
--autoconsole noneを指定すると、virt-installはVMを起動した後コンソール接続をせずに終了する。
virt-installが終了しているとインストール完了後に再起動を指示してもVMが停止してしまうが、
--waitを指定するとvirt-installがインストールの完了を待機するため再起動できるようになる。
virt-install --name rocky9 --memory 2048 --vcpus 1 --disk size=8 --os-variant rocky9-unknown --location Rocky-9.1-x86_64-minimal.iso --graphics vnc,listen=0.0.0.0,password=foobar --extra-args 'inst.graphical console=tty0 console=ttyS0,115200n8' --autoconsole none --wait
グラフィックディスプレイのみにする場合は、–extra-argsを指定せずにインストールする。
virt-install --name rocky9 --memory 2048 --vcpus 1 --disk size=8 --os-variant rocky9-unknown --location Rocky-9.1-x86_64-minimal.iso --graphics spice,listen=0.0.0.0
SPICEでもVNCでもvirt-viewerで接続可能。Red Hat系ならvirt-viewerパッケージをインストールする。
Windows用のインストーラはhttps://virt-manager.org/downloadから入手可能。
TigerVNCのvncviewer64はポータブルなので、アプリをインストール出来ない環境でも使える。
port=5901を指定した場合、virsh vncdisplayが返すホストのIP:1と
実際のポート番号を使用したホストのIP:5901のどちらでも接続できる。