JavaScript is required to for searching.
ナビゲーションリンクをスキップ
印刷ビューの終了
Oracle Solaris 11.1 システムのブートおよびシャットダウン     Oracle Solaris 11.1 Information Library (日本語)
search filter icon
search icon

ドキュメントの情報

はじめに

1.  システムのブートとシャットダウン (概要)

2.  x86: GRand Unified Bootloader の管理 (タスク)

x86: GRUB 2 の紹介

x86: GRUB 2 構成の説明

x86: GRUB 2 パーティションおよびデバイス命名スキーム

x86: GRUB 2 と GRUB Legacy のタスクの比較

x86: GRUB Legacy システムを GRUB 2 をサポートするリリースにアップグレードする

x86: GRUB Legacy システムを GRUB 2 をサポートするリリースにアップグレードする方法

x86: GRUB Legacy メニューエントリが GRUB 2 に移行される方法

x86: GRUB 2 と GRUB Legacy のブート環境を同じシステムで保守する

x86: bootadm コマンドを使用して GRUB 構成を管理する

x86: GRUB メニューエントリを表示する方法

x86: GRUBメニューを手動で再生成する方法

x86: GRUB メニューの保守方法

x86: GRUB メニューの指定したブートエントリの属性を設定する方法

x86: GRUB メニューにブートエントリを追加する方法

x86: GRUB メニューからブートエントリを削除する方法

x86: ブート時に GRUB メニューを編集してカーネル引数を追加する

x86: GRUB メニューを編集して、ブート時に -B prop=val カーネル引数を追加する

ブート時に Oracle Solaris コンソールをリダイレクトする

x86: GRUB 構成のカスタマイズ

x86: 高度な GRUB 管理とトラブルシューティング

x86: bootadm install-bootloader コマンドを使用して GRUB 2 をインストールする

x86: ブートローダーをインストールする方法

x86: ルートプールの復元後にブートローダーをインストールする方法

x86: デフォルトではない場所に GRUB をインストールする方法

x86: GRUB 2 がインストールされているシステムに GRUB Legacy をインストールする

x86: GRUB 2 がインストールされているシステムに GRUB Legacy をインストールする方法

3.  システムのシャットダウン (タスク)

4.  システムのブート (タスク)

5.  システムのネットワークからのブート (タスク)

6.  システムのブートのトラブルシューティング (タスク)

索引

x86: GRUB 2 の紹介

このセクションでは、次の情報について説明しています。

GRUB 2 は、BIOS または UEFI ファームウェアを搭載したシステム上の Unified Extensible Firmware Interface (UEFI) ファームウェアからのブートや任意のサイズの GUID パーティションテーブル (GPT) でパーティション分割されたディスクからのブートなど、幅広いプラットフォームとファームウェアのタイプをサポートする強力なモジュラーブートローダーです。GRUB 2 は UEFI 指定の GPT パーティション分割スキームもサポートしています。

GRUB Legacy と同様に、GRUB 2 は 2 段階のブートプロセスを使用します。GRUB 2 と GRUB Legacy の主な違いは、GRUB 2 では動的にロードされたモジュールに多くの機能を配置し、これにより、コア GRUB 2 (第 2 段階ブートローダー) のイメージを小さくできるため、ロードが速くなり、柔軟性が高まることです。結果として、ブート時に要求に応じて GRUB 機能がロードされます。

GRUB 2 には次の主な変更が導入されています。

x86: GRUB 2 構成の説明

GRUB 2 は GRUB Legacy とまったく異なる構成を使用します。GRUB Legacy 構成は menu.lst ファイルから管理しますが、GRUB 2 は menu.lst ファイルを使用しません。代わりに、GRUB 2 は構成ファイル grub.cfg を使用して、同じタイプの情報を格納します。menu.lst ファイルと同様に、grub.cfg ファイルはルートプール /pool-name/boot/grub の ZFS データセットの上位にあり、たとえば /rpool/boot/grub/grub.cfg などです。

grub.cfg ファイルの構文は、bash スクリプトに基づいており、次の例に示す menu.lst ファイルで使用されている指令のような言語よりも複雑で強力です。

title title
             bootfs pool-name/ROOT/bootenvironment-name
             kernel$ /platform/i86pc/kernel/$ISADIR/unix -B $ZFS-BOOTFS
             module$ /platform/i86pc/$ISADIR/boot_archive

比較のために、次のように、同じ構成を grub.cfg ファイルに格納しています。

menuentry "<title>" {
        insmod part_msdos
        insmod part_sunpc
        insmod part_gpt
        insmod zfs
        search --no-floppy --fs-uuid --set=root f3d8ef099730bafa
        zfs-bootfs /ROOT/<BE name>/@/ zfs_bootfs
        set kern=/platform/i86pc/kernel/amd64/unix
        echo -n "Loading ${root}/ROOT/<BE name>/@$kern: "
        $multiboot /ROOT/<BE name>/@/$kern $kern -B $zfs_bootfs
        set gfxpayload="1024x768x32;1024x768x16;800x600x16;640x480x16;640x480x15;640x480x32"
        insmod gzio
        echo -n "Loading ${root}/ROOT/<BE name>/@/platform/i86pc/amd64/boot_archive: "
        $module /ROOT/<BE name>/@/platform/i86pc/amd64/boot_archive
}

grub.cfg ファイルと menu.lst ファイルのほかの大きな違いは、grub.cfg ファイルを編集しないことです。menu.lst ファイルでは、システムによって自動的に生成されるメニューエントリに加えて、ユーザー作成メニューエントリと、グローバル GRUB 構成ファイルの設定および変数の手動の変更をサポートしています。対照的に、grub.cfg ファイルは、各種 bootadm サブコマンドを使用して管理します。それらの多くはこのリリースで新しいものです。各種 bootadm サブコマンドにより、ほとんどのブートローダー管理タスクを管理できます。「x86: bootadm コマンドを使用して GRUB 構成を管理する」を参照してください。

grub.cfg ファイルの別の機能は、ブートローダー構成を変更するたびに自動生成されることです。ファイルは、特定の操作時および特定のブート管理コマンドが使用されたときにも自動生成されます。必要に応じて、bootadm コマンドと新しい generate-menu サブコマンドを実行して、新しい grub.cfg ファイルを手動で生成できます。このコマンドは、ブート構成が破損した場合にのみgrub.cfg ファイルを作成するために使用します。「x86: GRUBメニューを手動で再生成する方法」を参照してください。


注 - grub.cfg ファイルの自動生成メカニズムは、インストールされたシステムのみを対象とします。


参考のため、GRUB 2 構成は次のファイルに格納されています。

x86: GRUB 2 パーティションおよびデバイス命名スキーム

GRUB Legacy のデバイス命名のしくみに精通している場合、GRUB Legacy の命名スキームと GRUB 2 命名スキームの違いを認識する必要があります。GRUB Legacy はパーティションのインデックスに、0 を基準にする命名スキームを使用しますが、GRUB 2 は、パーティションのインデックスに 1 を基準にする命名スキームを使用します。

GRUB 2 デバイス命名スキームでは、次の形式を使用します。

(hdX, part-type Y, part-typeZ, ...)

パーティションスキームは入れ子にできるため、GRUB のデバイス命名スキームは、任意の入れ子のレベルをサポートするように変更されました。GRUB では、古いスタイルのデバイス命名 (「(hd0,1)」) も、パーティションスキーム名を含む新しいスタイルのデバイス命名のいずれも受け付けます。例:

(hd0, gpt1)

前の例では、先頭のディスクの先頭の GPT パーティションを参照しています。


注 - GRUB のパーティションの番号付けのみが変更されており、ディスクの番号付けは変更されていません。ディスク番号は 0 基準のままです。


GRUB 2 は、正しいデバイスまたはパーティション名を自動的に検索するために、ファイルシステム UUID (またはラベル) と組み込みの検索コマンドに依存しているため、手動でデバイス名を指定する必要がありません。次の表に、GRUB が使用するパーティションインデックスとデバイス名の例を示します。

表 2-1 GRUB 2 パーティションおよびデバイス命名スキーム

デバイス名
説明
注意事項
(hd0, msdos1)
先頭のディスク上の先頭の DOS パーティションを指定します。
(hd0, gpt2)
ディスク上の 2番目の GPT パーティションを指定します。
これは、現在のリリースをインストールする典型的なパーティションの例です。
(hd0, msdos1, sunpc1)
先頭のディスク上の先頭の DOS パーティションに格納されている Oracle Solaris パーティション内の先頭の VTOC スライスを指定します。
これは、このリリース以前の Oracle Solaris のバージョンをインストールする典型的なパーティションの例です。

関心のあるパーティションを参照しているパーティション番号を特定する必要がある場合、C キー (またはメニューエントリを編集している場合は Control-C) を押して、GRUB コマンド行インタプリタにアクセスします。次に、ls コマンドを実行して、次の図のように、GRUB が識別できるすべてのパーティションを一覧表示します。

image:デバイスに関する情報を取得できる GRUB 2 コマンドインタプリタ画面の図。

ls コマンドで -l オプションを使用すれば、次の図のように、ファイルシステムおよびファイルシステム UUID 情報などの各パーティションに関する詳細情報が表示されます。

image:GRUB が識別したデバイスを表示するコマンド出力を示す GRUB 2 コマンドインタプリタ画面の図。

注 - GRUB はドライブのタイプに関係なく 0 からドライブ番号をカウントし、Integrated Drive Electronics (IDE) デバイスと Small Computer Systems Interface (SCSI) デバイスを区別しません。


x86: GRUB 2 と GRUB Legacy のタスクの比較

GRUB 2 は GRUB Legacy といくつかの特性を共有していますが、GRUB 2 は menu.lst ファイルを使用しないため、多くのブート管理タスクが GRUB 2 をサポートするシステムでは異なって実行されます。たとえば、bootadm コマンドの新しいサブコマンドを使用して、GRUB メニューを管理し、各種ブートローダー管理タスクを実行します。

ほとんどの bootadm サブコマンドで、新しい -P pool 引数を使用できます。このオプションにより、GRUB メニューや特定のルートプールのブートエントリを表示したり、変更したりすることができます。GRUB Legacy をサポートするオペレーティングシステムを実行している場合、これらの bootadm サブコマンドで、-P オプションを使用できない可能性があります。

たとえば、次のように、特定のルートプールの GRUB メニューを表示します。

# bootadm list-menu -P pool-name

次の表は、いくつかの一般的な GRUB 2 タスクおよびコマンドを GRUB Legacy の同等のものと比較しています。詳細な手順については、bootadm(1M) のマニュアルページと 「x86: bootadm コマンドを使用して GRUB 構成を管理する」を参照してください。

表 2-2 GRUB Legacy タスクと比較した GRUB 2 タスク

タスクまたはコマンド
GRUB 2 方法
GRUB Legacy 方法
GRUB メニューの現在のブートエントリを一覧表示します。
bootadm list-menu

エントリ番号ごとまたはタイトルごとに個々のエントリを表示することもできます。タイトルごとにエントリを表示するには:

bootadm list-menu entry-title

タイトルにスペースが含まれる場合、タイトルが複数の引数として解釈されないように、引用符を使用する必要があります。例:

bootadm list-menu `This is a menu entry with a title'

エントリ番号ごとにエントリを表示するには:

bootadm list-menu -i entry-number

bootadm list-menu
デフォルトのブートローダー設定と、システム上の各ルートプールの Oracle Solaris ブート環境ごとに 1 つのメニューエントリを格納する新しい GRUB 構成ファイル (grub.cfg) を生成します。
bootadm generate-menu

システムに既存の grub.cfg ファイルがある場合、generate-menu サブコマンドに -f オプションを付けて使用します。この構文は既存の GRUB 2 構成を破棄し、新しい構成で置き換えます。

-P オプションを使用して、システム上の特定のルートプールの新しい GRUB 2 構成ファイルを生成する場合、生成された grub.cfg ファイルがそのルートプールの最上位 ZFS データセットに格納されることに注意してください。

menu.lst ファイルを手動で編集して、新しい情報を追加します。
GRUB メニューに新しいエントリを追加します。
エントリ番号を指定してエントリを追加するには:

bootadm add-entry -i entry-number

タイトルを指定してエントリを追加するには:

bootadm add-entry entry-title

menu.lst ファイルに手動でエントリを追加します。
GRUB メニューのエントリを変更します。
エントリ番号を指定してエントリを変更するには:

bootadm change-entry -i entry-number key=value

タイトルを指定してエントリを変更するには:

bootadm change-entry entry-title key=value

タイトルにスペースが含まれる場合、タイトルが複数の引数として解釈されないように、引用符を使用する必要があります。

このサブコマンドは、Oracle Solaris コンソールデバイスをカーネル引数として指定するなど、個々のブートエントリを変更するために使用します。エントリのタイトルが複数のメニューエントリと一致する場合、最初のエントリのみが変更されます。

ブートエントリの変更は、以前のリリースで、GRUB Legacy エントリで実行していたように、ブート時に GRUB メニューを編集することによって実行することもできます。

持続的な変更をするには、menu.lst ファイルを手動で編集します。

または、ブート時に GRUB メニューを編集して、システムが次回にブートするときまでにだけ持続するブートエントリの変更を行ないます。

GRUB メニューからエントリを削除します。
エントリ番号を指定してエントリを削除するには:

bootadm remove-entry -i entry-number

タイトルを指定してエントリを削除するには:

bootadm remove-entry entry-title

タイトルを指定すると、そのタイトルのすべてのエントリが削除されます。

menu.lst ファイルから手動でエントリを削除します。
GRUB メニューを管理します。たとえば、ブート元となるデフォルトの GRUB メニューエントリを設定します。
bootadm set-menu key= value
bootadm set-menu
Linux エントリなどのカスタムメニューエントリを GRUB メニューに追加します。
custom.cfg ファイルにエントリを追加し、正しい GRUB 2 構成ファイル構文を使用していることを確認してください。「x86: GRUB 構成のカスタマイズ」を参照してください。

注 - まずこのファイルを作成する必要があります。


Oracle Solaris のインストール後に menu.lst ファイルに情報を追加します。
ブート引数を追加するには、ブート時に GRUB メニューを編集します。
1. ブートプロセスに割り込むには、矢印キーを使用して、目的のメニューエントリを選択してから、e と入力します。

2. 指定したブートエントリの $multiboot 行の末尾にブート引数を追加します。

3. Control-X を押して、変更したエントリからブートします。システムコンソールがシリアルデバイス上にある場合、UEFI システムで、F10 キーが正しく認識されないことがあります。その場合、Ctrl-X を使用します。


注 - メニューエントリの編集中に Escape キーを押すとメニューエントリリストに戻り、すべての編集内容が廃棄されます。


1. ブートプロセスに割り込むには、e と入力します。

2. 指定したブートエントリの kernel$ 行の末尾にブート引数を追加します。

3. Return キーを押してから b を入力してシステムをブートします。

ブートローダープログラムをインストールします。
bootadm install-bootloader

このコマンドは、ミラー化ルートプールのすべてのデバイスに自動的にブートローダーをインストールします。

x86 ベースのシステムの場合 installgrub、および SPARC ベースのシステムの場合 installboot
UEFI または BIOS ファームウェアのブートパーティションを作成します。
zpool create コマンドの新しい -B オプションを使用して、ファームウェアに適切なブートパーティションと新しい ZFS プールが格納される ZFS データパーティションを同時に自動的に作成します。

ルートプールにディスクを接続すると、適切なブートパーティションが自動的に作成され、そのディスクにブートローダーがインストールされます。『Oracle Solaris 11.1 の管理: ZFS ファイルシステム』の第 4 章「ZFS ルートプールのコンポーネントの管理」を参照してください。

GRUB Legacy は BIOS ファームウェアを搭載するシステムのみをサポートするため、個別のブートパーティションは必要ありません。