yosh1

メモ

コマンドラインでKVMゲストOSをインストール

virt-install コマンドを使用して、仮想マシンを作成し、ゲストOSをインストールします。
ゲストOSは、Ubuntu 22.04.4 server を使用します。

$ sudo virt-install \
    --name ubuntu-2204-server \
    --vcpus 1 --memory 2048 \
    --cpu mode=host-passthrough \
    --network network=default,model=virtio \
    --location /path/to/ubuntu-22.04.4-live-server-amd64.iso,kernel=casper/vmlinuz,initrd=casper/initrd \
    --os-variant ubuntu22.04 \
    --disk size=80,cache=none,format=qcow2 \
    --graphics none \
    --extra-args 'console=tty0 console=ttyS0,115200n8 --- console=tty0 console=ttyS0,115200n8' \
    --boot uefi

あとは、インストーラの指示通りに進んでください。

virt-install オプション

オプションの詳細は、libvirtのドキュメントを参照 Domain XML format

# サブオプションの一覧を表示
$ virt-install --memory=?
$ virt-install --memory help

--name ubuntu-2204-server

ゲスト仮想マシンの名称
現在アクティブでないものも含め、すべてのゲスト仮想マシンの中で一意である必要があります。

--memory 2048

ゲスト仮想マシンに割り当てるメモリ量を指定(MiB単位)

--vcpus 1

ゲスト仮想マシンに割り当てられる仮想CPUの数を指定

--cpu mode=host-passthrough

ゲスト仮想マシンのCPUモデルを設定

  • mode=host-passthrough:ホストCPUと同じモデルと機能をゲスト仮想マシンに設定します。

--network network=default,model=virtio

ゲスト仮想マシンをホストネットワークに接続する方法を選択

  • network=default:「default」という名前の、仮想NATネットワークに接続します。
  • model=virtio:ゲストから見たネットワークデバイスのモデル。

「default」ネットワークは、KVMをインストールすると自動的に作成されます。
「default」ネットワーク上の仮想マシンは、ネットワークに完全にアクセスできますが、
ホストPC以外のデバイスはホスト上の仮想マシンと通信できません。
ホストPCだけがゲスト仮想マシンにアクセスできます。

「default」ネットワークの設定は以下のコマンドで確認できます。

$ virsh net-dumpxml default

--location /path/to/ubuntu-22.04.4-live-server-amd64.iso,kernel=casper/vmlinuz,initrd=casper/initrd

インストーラーイメージのパスを指定

  • kernel=casper/vmlinuz,initrd=casper/initrd:
    virt-installが利用するlibosinfoがkernelとinitrdの場所を知らないときに指定します。

指定しなかった場合、Ubuntu 22.04.4 server では以下のエラーが出てインストールができませんでした。

ERROR    Couldn't find hvm kernel for Ubuntu tree.

Couldn't find hvm kernel for Ubuntu tree Autoinstall quick start

--disk size=80,cache=none,format=qcow2

ゲスト仮想マシンが使用するストレージの設定

  • size=80:ストレージの容量(GiB単位)
  • format=qcow2:ディスクイメージ形式
  • cache=none:キャッシュの設定

--graphics none

ゲスト仮想マシンにグラフィカルコンソールを割り当てません。

ゲスト仮想マシンにアクセスするために、
--extra-argsオプションで、ゲスト仮想マシンのシリアルポートにテキストコンソールを設定する必要があります。

--extra-args 'console=tty0 console=ttyS0,115200n8 --- console=tty0 console=ttyS0,115200n8'

  • 最初の console=tty0 console=ttyS0,115200n8 は、
    VGAコンソール(console=tty0)またはシリアルコンソール(console=ttyS0)を使用してゲスト仮想マシン
    毎秒115200ビット、パリティビットなし、データビット数8ビット(115200n8)でインストールするように virt-install に指示します。

  • トリプルダッシュ(---)の後の、同じ console=tty0 console=ttyS0,115200n8 は、
    インストールされたゲスト仮想マシンブートローダー/etc/default/grubファイルのGRUB_CMDLINE_LINUX行に追加されます。

--boot uefi

インストール後のブート構成を指定