21.2. オペレーティングシステムの起動

仮想マシンを起動するには多くの方法があり、それぞれに利点と欠点があります。それぞれの方法については、後続のサブセクションで説明します。これには、BIOS ブートローダー、ホスト物理マシンブートローダー、およびカーネルによるダイレクトブートが含まれます。

21.2.1. BIOS ブートローダー

BIOS から起動する方法は、完全仮想化に対応するハイパーバイザーで利用できます。この場合、BIOS には起動順序の優先順位 (フロッピー、ハードディスク、CD-ROM、ネットワーク) があり、ブートイメージの取得/検索方法が決定されます。ドメイン XML の OS セクションには、以下のような情報が含まれます。

  ...
  <os>
    <type>hvm</type>
    <loader>/usr/lib/xen/boot/hvmloader</loader>
    <boot dev='hd'/>
    <boot dev='cdrom'/>
    <bootmenu enable='yes'/>
    <smbios mode='sysinfo'/>
    <bios useserial='yes' rebootTimeout='0'/>
  </os>
  ...

図21.2 BIOS ブートローダーのドメイン XML

ドメイン XML のこのセクションを構成するコンポーネントは以下の通りです。

表21.2 BIOS ブートローダー要素

要素説明
<type>ゲスト仮想マシンで起動されるオペレーティングシステムのタイプを指定します。hvm は、OS がベアメタルで実行されるように設計されたものであることを示すため、完全仮想化が必要になります。linux は Xen 3 ハイパーバイザーのゲスト ABI に対応する OS を参照します。さらに、2 つのオプション属性があり、arch は仮想化に対する CPU アーキテクチャーを指定し、machine はマシンタイプを指します。詳細は、Driver Capabilities を参照してください。
<loader>ドメインの作成プロセスを支援するために使用されるファームウェアの部分を参照します。これは、Xen 完全仮想化ドメインを使用する場合にのみ必要になります。
<boot>fdhdcdrom または network のいずれかの値を取り、考慮される次のブートデバイスを指定するために使用されます。boot 要素は、順番に試行するブートデバイスの優先順序のリストをセットアップするために複数回繰り返すことができます。同じタイプの複数デバイスは、バスの順序を保持した状態で、それらのターゲットに基づいてソートされます。ドメインが定義された後に、libvirt によって (virDomainGetXMLDesc から) で返される XML 設定は、ソートされた順序でデバイスを一覧表示します。ソート後は、最初のデバイスに bootable (起動可能) というマークが付けられます。詳細は、BIOS bootloader を参照してください。
<bootmenu>ゲスト仮想マシンの起動時のインタラクティブなブートメニューのプロンプトを有効にするかどうかを決定します。enable 属性には yes または no のいずれかを使用できます。いずれも指定されない場合、ハイパーバイザーのデフォルトが使用されます。
<smbios>SMBIOS 情報をゲスト仮想マシンで表示する方法を決定します。mode 属性は、emulate (ハイパーバイザーがすべての値を生成) か、または host (ホスト物理マシンの SMBIOS 値から、UUID を除くブロック 0 およびブロック 1 のすべての値をコピー。virConnectGetSysinfo 呼び出しはコピーされた内容を表示するために使用できる)、または sysinfo (sysinfo 要素の値を使用) のいずれかに指定される必要があります。いずれも指定されない場合、ハイパーバイザーのデフォルト設定が使用されます。
<bios>この要素には、yes または no の値が使用される可能性のある属性 useserial が含まれます。この属性は、ユーザーがシリアルポートに BIOS メッセージを表示することを可能にする Serial Graphics Adapter を有効/無効にします。そのため、シリアルポートを定義しておく必要があります。さらに、ブートが失敗した場合にゲスト仮想マシンが起動を再び開始するかどうかや、どの程度の時間が経過した後に再起動を開始するかなどを (BIOS に従って) 制御する、rebootTimeout という別の属性があることにも注意してください。最大値 (ミリ秒単位) は 65535 で、特別な値である -1 の場合は再起動が無効になります。