Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

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

仮想マシンを起動する方法には多くの異なる方法があります。これには、BIOS ブートローダー、ホスト物理マシンブートローダー、直接のカーネルの起動、およびコンテナーによる起動が含まれます。

23.2.1. BIOS ブートローダー

BIOS の起動は、完全な仮想化に対応するハイパーバイザーで利用できます。この場合は、BIOS にブート順序の優先度(floppy、ハードディスク、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 の本項のコンポーネントは以下のとおりです。

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

要素 説明
<type> ゲスト仮想マシンで起動するオペレーティングシステムのタイプを指定します。HVM、オペレーティングシステムがベアメタル上で実行されるように設計されており、完全な仮想化が必要であることを示します。Linux は、KVM ハイパーバイザーゲスト ABI に対応するオペレーティングシステムを指します。また、2 つのオプション属性があります。arch は CPU アーキテクチャーを仮想化に指定し、マシンはマシン タイプを参照します。詳細は、libvirt アップストリームのドキュメント を参照してください。
<boot> fd、hd、cdrom、または network のいずれかの値を使用して、次に起動デバイスを指定します。ブート要素は複数回繰り返して、ブートデバイスの優先度一覧を設定して順番に設定できます。同じタイプの複数のデバイスは、バスを注文する一方で、ターゲットに従ってソートされます。ドメインの定義後、libvirt が返す XML 設定はソート順にデバイスを一覧表示します。ソートすると、最初のデバイスは起動可能なものとしてマークされます。詳細は、libvirt アップストリームドキュメント を参照してください
<bootmenu> ゲスト仮想マシンの起動時に対話式ブートメニューのプロンプトを有効にするかどうかを指定します。enable 属性は yes または no のいずれかにすることができます。指定しない場合は、ハイパーバイザーのデフォルトが使用されます。
<smbios> ゲスト仮想マシンで SMBIOS 情報が表示される方法を決定します。emulate(ハイパーバイザーが全値を生成する)、ホスト (すべての Block 0 および Block 1)、ホスト(ホスト物理マシンの SMBIOS 値を除く)、および virConnectGetSysinfo 呼び出しを指定する必要があります。virConnectGetSysinfo コールを使用して、コピーする値を確認するか、sysinfo (sysinfo 要素の値を使用します)を確認してください。指定しない場合は、ハイパーバイザーのデフォルト設定が使用されます。
<bios> この要素には、可能な値 yes または no とともに useserial 属性があります。この属性は Serial Graphics Adapter を有効または無効にします。これにより、ユーザーはシリアルポートで 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 の本項のコンポーネントは以下のとおりです。

表23.3 カーネルブート要素

要素 説明
<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>
...