23.2. オペレーティングシステムの起動
BIOS ブートローダー、ホスト物理マシンのブートローダー、ダイレクトカーネルブート、コンテナーブートなど、仮想マシンを起動する方法は多数あります。
23.2.1. BIOS ブートローダー
BIOS の起動は、完全仮想化をサポートするハイパーバイザーで利用できます。この場合、BIOS は、ブートイメージの場所を決定する起動順序の優先順位 (フロッピー、ハードディスク、CD-ROM、ネットワーク) を持ちます。ドメイン XML の
<os>
セクションには、以下の内容が含まれます。
図23.2 BIOS ブートローダードメイン XML
... <os> <type>hvm</type> <boot dev='fd'/> <boot dev='hd'/> <boot dev='cdrom'/> <boot dev='network'/> <bootmenu enable='yes'/> <smbios mode='sysinfo'/> <bios useserial='yes' rebootTimeout='0'/> </os> ...
ドメイン XML のこのセクションのコンポーネントは以下のとおりです。
要素 | 説明 |
---|---|
<type> | ゲスト仮想マシンで起動するオペレーティングシステムの種類を指定します。hvm は、オペレーティングシステムがベアメタルで実行するように設計されており、完全な仮想化が必要であることを示します。linux は、KVM ハイパーバイザーゲスト ABI をサポートするオペレーティングシステムを指します。オプションの属性も 2 つあります。arch は仮想化に対する CPU アーキテクチャーを指定し、machine はマシンタイプを参照します。詳細は、『libvirt upstream documentation』 を参照してください。 |
<boot> | 次回の起動時に考慮するデバイスを指定します。値は、fd 、hd 、cdrom 、または network のいずれかになります。ブート要素を複数回繰り返して、順番に試行するブートデバイスの優先順位リストを設定できます。同じタイプの複数のデバイスは、バスの順序を維持しながら、ターゲットに従ってソートされます。ドメインを定義すると、libvirt が返す XML 設定により、デバイスがソートされた順にリスト表示されます。ソートされると、最初のデバイスが起動可能としてマークされます。詳細は、libvirt upstream documentation を参照してください。 |
<bootmenu> | ゲスト仮想マシンの起動時にインタラクティブな起動メニュープロンプトを有効にするかどうかを設定します。enable 属性は、yes または no のいずれかになり ます。指定しない場合は、ハイパーバイザーのデフォルトが使用されます。 |
<smbios> | ゲスト仮想マシンで SMBIOS 情報をどのように表示するかを指定します。mode 属性は、emulate (ハイパーバイザーがすべての値を生成できるようにする)、host (UUID を除くブロック 0 とブロック 1 のすべてをホスト物理マシンの SMBIOS 値からコピーします。virConnectGetSysinfo 呼び出しを使用して、どの値がコピーされているかを確認することができます)、または sysinfo (sysinfo 要素の値を使用) のいずれかとして指定する必要があります。指定しない場合は、ハイパーバイザーのデフォルト設定が使用されます。 |
<bios> | この要素には、yes または no の値を持つ属性 useserial があります。この属性は、シリアルグラフィックスアダプターを有効または無効にします。これにより、ユーザーはシリアルポートで BIOS メッセージを表示できるようになります。したがって、シリアルポートを定義する必要があります。rebootTimeout 属性は、(BIOS に応じて) システムの起動に失敗した場合にゲスト仮想マシンが再起動するかどうかと、その起動後どのくらいの時間がかかるかを制御します。この値はミリ秒単位で設定し、上限は 65535 です。-1 を設定すると再起動が無効になります。 |
23.2.2. ダイレクトカーネルブート
新しいゲスト仮想マシンのオペレーティングシステムをインストールする場合は、多くの場合、ホストの物理マシンのオペレーティングシステムに保存されているカーネルと
initrd
から直接起動して、コマンドラインの引数をインストーラーに渡せるようにすると便利です。この機能は、通常、完全仮想化ゲスト仮想マシンおよび準仮想化ゲスト仮想マシンの両方で利用できます。
図23.3 ダイレクトカーネルブート
... <os> <type>hvm</type> <kernel>/root/f8-i386-vmlinuz</kernel> <initrd>/root/f8-i386-initrd</initrd> <cmdline>console=ttyS0 ks=http://example.com/f8-i386/os/</cmdline> <dtb>/root/ppc.dtb</dtb> </os> ...
ドメイン XML のこのセクションのコンポーネントは以下のとおりです。
要素 | 説明 |
---|---|
<type> | BIOS ブートのセクションで説明されているものと同じです。 |
<kernel> | ホスト物理マシンのオペレーティングシステムのカーネルイメージへの完全修飾パスを指定します。 |
<initrd> | ホスト物理マシンのオペレーティングシステムの (任意) ramdisk イメージへの完全修飾パスを指定します。 |
<cmdline> | システムの起動時にカーネル (またはインストーラー) に渡される引数を指定します。これは、多くの場合、代替のプライマリーコンソール (シリアルポートなど)、またはインストールメディアソースやキックスタートファイルを指定するために使用されます。 |
23.2.3. コンテナーブート
コンテナーベースの仮想化を使用してドメインを起動する場合は、カーネルまたはブートイメージの代わりに、
init
要素を使用してinit
バイナリーへのパスを指定する必要があります。デフォルトでは、引数を指定せずに起動します。最初のargv
を指定するには、initarg
要素を必要な回数だけ繰り返します。cmdline
要素は、/proc/cmdline
と同等の機能を提供しますが、<initarg>
には影響を及ぼしません。
図23.4 コンテナーブート
... <os> <type arch='x86_64'>exe</type> <init>/bin/systemd</init> <initarg>--unit</initarg> <initarg>emergency.service</initarg> </os> ...