Solaris のシステム管理 (基本編)

第 15 章 x86: GRUB ベースのブート (参照情報)

この章には、GRUB 実装の詳細や GRUB の追加の参照情報など、x86 ブートプロセスに関する情報が記載されています。

概要については、第 9 章システムのシャットダウンとブート (概要)を参照してください。

システムのブート手順については、第 12 章Oracle Solaris システムのブート (手順)を参照してください。

x86: ブートプロセス

この節では、x86 システムに固有のブートプロセスについて説明します。

x86: システム BIOS

x86 システムの電源が入っているときには、システムは読み取り専用メモリー (ROM) の BIOS (Basic Input/Output System) によって制御されます。BIOS は、64 ビットおよび 32 ビットの x86 をサポートする、Oracle Solaris オペレーティングシステムのファームウェアインタフェースです。

ハードウェアアダプタには通常、そのデバイスの物理特性を表示するオンボード BIOS が搭載されています。この BIOS は、デバイスにアクセスするときに使用されます。システムの BIOS は、起動プロセス中に、アダプタの BIOS が存在するかどうかを調べます。アダプタが見つかった場合は、そのアダプタの BIOS を読み込んで実行します。アダプタの BIOS はそれぞれセルフテスト診断を実行してから、デバイス情報を表示します。

ほとんどのシステムの BIOS には、ブートデバイスの優先順位を選択するためのユーザーインタフェースが用意されており、次の項目が表示されます。

BIOS は、ブート可能なプログラムがある有効なデバイスが見つかるまで、このリストに従って各デバイスからブートを試みます。

x86: カーネル初期化プロセス

/platform/i86pc/multiboot プログラムは、マルチブート仕様に定義されているヘッダーを含む、ELF32 実行可能ファイルです。

マルチブートプログラムは、次のタスクを実行します。

システムの制御を渡されたカーネルは、CPU、メモリー、およびデバイスサブシステムを初期化します。カーネルは次に、ルートデバイスをマウントします。/boot/solaris/bootenv.rc ファイルに指定されている bootpath および fstype プロパティーに対応するデバイスがマウントされます。このファイルはブートアーカイブに含まれます。これらのプロパティーが bootenv.rc ファイルまたは GRUB コマンド行に指定されていない場合には、ルートファイルシステムはデフォルトで /devices/ramdisk:a 上の UFS に設定されます。インストールミニルートをブートする場合には、ルートファイルシステムはデフォルトで UFS に設定されます。ルートデバイスがマウントされたあと、カーネルは sched コマンドと init コマンドを初期化します。これらのコマンドは、サービス管理機能 (SMF) サービスを開始します。

x86: Oracle Solaris OS での GRUB のサポート

この節には、Oracle Solaris OS で GRUB を管理するための追加の参照情報が記載されています。

x86: GRUB の用語

GRUB の概念を十分に把握するには、次の用語を理解することが不可欠です。


注 –

このリストに記載されている用語の中には、GRUB ベースのブートだけに限定されないものもあります。


ブートアーカイブ

Oracle Solaris OS のブートに使用されるクリティカルなファイルの集まり。これらのファイルは、ルートファイルシステムがマウントされる前、システムの起動中に必要です。システムは、複数のブートアーカイブを維持管理しています。

  • 「一次ブートアーカイブ」 は、x86 システムで Oracle Solaris OS をブートするために使用されます。

  • 「フェイルセーフブートアーカイブ」は、一次ブートアーカイブが損傷を受けたとき、回復のために使用されます。このブートアーカイブは、ルートファイルシステムをマウントすることなくシステムを起動します。GRUB メニューでは、このブートアーカイブは「フェイルセーフ」と呼ばれます。このアーカイブの主な目的は一次ブートアーカイブを再生成することであり、通常は一次ブートアーカイブがシステムのブートに使用されます。

ブートローダー

システムの電源を入れたあとに最初に実行されるソフトウェアプログラム。このプログラムがブートプロセスを開始します。

フェイルセーフアーカイブ

ブートアーカイブを参照してください。

GRUB

GRUB (GNU GRand Unified Bootloader) は、メニューインタフェースを備えたオープンソースのブートローダーです。このメニューには、システムにインストールされているオペレーティングシステムの一覧が表示されます。GRUB を使用すると、Oracle Solaris OS、Linux、または Windows などのさまざまなオペレーティングシステムを、簡単にブートすることができます。

GRUB メインメニュー

システムにインストールされているオペレーティングシステムがリストされたブートメニュー。このメニューから、BIOS または fdisk パーティションの設定を変更することなく、簡単にオペレーティングシステムをブートできます。

GRUB 編集メニュー

GRUB メインメニューのサブメニュー。このサブメニューには、GRUB コマンドが表示されます。これらのコマンドを編集して、ブート動作を変更できます。

menu.lst ファイル

システムにインストールされているすべてのオペレーティングシステムがリストされた構成ファイル。このファイルの内容は、GRUB メニューに表示されるオペレーティングシステムの一覧を記述したものです。GRUB のメニューから、BIOS または fdisk パーティションの設定を変更することなく、簡単にオペレーティングシステムをブートできます。

ミニルート

ブート可能な最小ルート (/) ファイルシステム。Solaris インストールメディアに収録されています。ミニルートは、システムのインストールおよびアップグレードに必要な Solaris ソフトウェアで構成されます。x86 システムでは、ミニルートはシステムにコピーされて、フェイルセーフブートアーカイブとして使用されます。フェイルセーフブートアーカイブの詳細は、ブートアーカイブを参照してください。

一次ブートアーカイブ

ブートアーカイブを参照してください。

x86: GRUB の機能コンポーネント

GRUB は、次の機能コンポーネントで構成されています。

dd コマンドを使用して、stage1 および stage2 のイメージをディスクに書き込むことはできません。stage1 イメージは、ディスク上にある stage2 イメージの場所に関する情報を受け取れる必要があります。installgrub コマンドを使用してください。このコマンドは、GRUB ブートブロックをインストールするためにサポートされている方法です。

GRUB の構成に使用される命名規則

GRUB が使用するデバイス命名規則は、以前の Solaris リリースの場合と多少異なっています。GRUB デバイス命名規則を理解すると、使用しているシステムで GRUB を構成するときに、ドライブとパーティションの情報を正しく指定できます。

次の表に、この Oracle Solaris リリースの GRUB デバイス命名規則を示します。

表 15–1 GRUB デバイスの規則

デバイス名 

説明 

(fd0)

最初のフロッピーディスク 

(fd1)

2 番目のフロッピーディスク 

(nd)

ネットワークデバイス 

(hd0,0)

最初のハードディスク上の最初の fdisk パーティション

(hd0,1)

最初のハードディスク上の 2 番目の fdisk パーティション

(hd0,0,a),

最初のハードディスク上の最初の fdisk パーティションのスライス a

(hd0,0,b)

最初のハードディスク上の最初の fdisk パーティションのスライス b


注 –

GRUB デバイス名はすべて括弧で囲む必要があります。


fdisk パーティションの詳細については、『Solaris のシステム管理 (デバイスとファイルシステム)』「fdisk パーティションの作成上のガイドライン」を参照してください。

findroot コマンドで使用される命名規則

Solaris 10 10/08 リリース以降では、GRUB で以前使用されていた root コマンドが findroot コマンドに置き換わりました。findroot コマンドは、ブートデバイスに関係なく対象ディスクを見つけるための拡張機能を提供します。findroot コマンドは、ZFS ルートファイルシステムからのブートもサポートします。

次に、さまざまな GRUB 実装で findroot コマンドが使用するデバイス命名規則についての説明を示します。

GRUB で複数のオペレーティングシステムをサポートする方法

この節では、同じディスク上にある複数のオペレーティングシステムを GRUB でサポートする方法について説明します。次の例は、Solaris 10 10/08 OS、Solaris 9 OS、Linux、および Windows が同じディスク上にインストールされている x86 システムを示しています。

表 15–2 GRUB メニュー設定の例

オペレーティングシステム 

ディスク上の場所 

Windows 

fdisk パーティション 0

Linux 

fdisk パーティション 1

Oracle Solaris 

fdisk パーティション 2

Solaris 9 OS 

スライス 0

Solaris 10 10/08 OS 

スライス 3

この情報に基づいて、GRUB メニューが次のように表示されます。


title Oracle Solaris 10
			findroot (pool_rpool,0,a)
			kernel$ /platform/i86pc/multiboot -B $ZFS-BOOTFS
			module /platform/i86pc/boot_archive
title Solaris 9 OS (pre-GRUB)
			root (hd0,2,a)
			chainloader +1
			makeactive
title Linux
			root (hd0,1)
			kernel <from Linux GRUB menu...>
			initrd <from Linux GRUB menu...>
title Windows
			root (hd0,0)
			chainloader +1

注 –

Oracle Solaris スライスをアクティブなパーティションにする必要があります。また、 Windows メニューの下に、makeactive を指定しないでください。そのようにすると、毎回 Windows がブートされることになります。Linux が GRUB をマスターブートブロック上にインストールした場合には、Oracle Solaris ブートオプションにアクセスできません。Solaris パーティションをアクティブなパーティションにしたかどうかにかかわらず、Solaris ブートオプションにアクセスできなくなります。


このような場合には、次のいずれかの操作を実行できます。

Oracle Solaris Live Upgrade ブート環境の詳細については、『Oracle Solaris 10 9/10 インストールガイド (Solaris Live Upgrade とアップグレードの計画)』を参照してください。

x86: サポートされる GRUB のバージョン

Oracle Solaris 10 では、GRUB はマルチブートを使用します。menu.lst ファイルの内容は、実行している Oracle Solaris リリース、使用するインストール方法、およびシステムを Oracle Solaris ZFS ルートまたは UFS ルートのどちらからブートしているかに応じて異なります。

menu.lst ファイルの説明 (ZFS サポート)

次に、ZFS ブートローダーを含むブート環境の menu.lst ファイルのさまざまな例を示します。


注 –

ミニルートは実際のルートファイルシステムとしてマウントされるため、フェイルセーフアーカイブが ZFS データセットから読み取られても、menu.lst ファイル内のフェイルセーフブート用のエントリが ZFS bootfs プロパティーに変わることはありません。ブートローダーがミニルートを読み取ったあとは、ZFS データセットはアクセスされません。



例 15–1 デフォルトの menu.lst ファイル (新規インストールまたは標準アップグレード)


title Solaris 10 5/08 s10x_nbu6wos_nightly X86
findroot (pool_rpool,0,a)
kernel$  /platform/i86pc/multiboot  -B $ZFS-BOOTFS
module /platform/i86pc/boot_archive

title Solaris failsafe
findroot (pool_rpool,0,a)
kernel /boot/multiboot kernel/unix -s    -B console=ttyb
module /boot/x86.miniroot-safe


例 15–2 デフォルトの menu.lst ファイル (Oracle Solaris Live Upgrade)


title be1
findroot (BE_be1,0,a)
bootfs rpool/ROOT/szboot_0508
kernel$  /platform/i86pc/multiboot  -B $ZFS-BOOTFS
module /platform/i86pc/boot_archive

title be1 failsafe
findroot (BE_be1,0,a)
kernel /boot/multiboot kernel/unix -s    -B console=ttyb
module /boot/x86.miniroot-safe

menu.lst ファイルの説明 (UFS サポート)

次に、UFS からのブートをサポートするシステムの menu.lst ファイルの例を示します。


例 15–3 デフォルトの GRUB menu.lst ファイル (新規インストールまたは標準アップグレード)


title Solaris 10 5/08 s10x_nbu6wos_nightly X86 
findroot (pool_rpool,0,a)
kernel /platform/i86pc/multiboot
module /platform/i86pc/boot_archive

title Solaris failsafe
findroot (rootfs0,0,a)
kernel /boot/multiboot kernel/unix -s -B console-ttyb
module /boot/x86.miniroot-safe


例 15–4 デフォルトの GRUB menu.lst ファイル (Oracle Solaris Live Upgrade)


title be1
findroot (BE_be1,0,a)
kernel /platform/i86pc/multiboot
module /platform/i86pc/boot_archive

title be1 failsafe
findroot (BE_be1,0,a)
kernel /boot/multiboot kernel/unix -s    -B console=ttyb
module /boot/x86.miniroot-safe