ナビゲーションリンクをスキップ | |
印刷ビューの終了 | |
Oracle Solaris 11.1 システムのブートおよびシャットダウン Oracle Solaris 11.1 Information Library (日本語) |
2. x86: GRand Unified Bootloader の管理 (タスク)
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 メニューを編集して、ブート時に -B prop=val カーネル引数を追加する
ブート時に Oracle Solaris コンソールをリダイレクトする
x86: bootadm install-bootloader コマンドを使用して GRUB 2 をインストールする
x86: ルートプールの復元後にブートローダーをインストールする方法
x86: デフォルトではない場所に GRUB をインストールする方法
x86: GRUB 2 がインストールされているシステムに GRUB Legacy をインストールする
このセクションでは、次の情報について説明しています。
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 には次の主な変更が導入されています。
構成の変更
GRUB 2 構成は、GRUB Legacy 構成と構文的に異なります。GRUB Legacy によって使用される menu.lst ファイルは、新しい構成ファイル grub.cfg に置き換えられました。menu.lst ファイルと異なり、grub.cfg ファイルはブート管理コマンドによって自動的に再生成されます。そのため、grub.cfg ファイルの再生成時に、すべての編集がただちに破棄されるため、このファイルは直接編集しないでください。「x86: GRUB 2 構成の説明」を参照してください。
パーティションとデバイスの命名の変更
0 を基準にするインデックスの代わりに、GRUB 2 ではパーティションと変更されたデバイス命名スキームに 1 を基準にするインデックスを使用します。「x86: GRUB 2 パーティションおよびデバイス命名スキーム」を参照してください。
ブートローダーと GRUB メニューの管理の変更
bootadm コマンドによって grub.cfg ファイルを管理します。変更されたサブコマンドと新しいサブコマンドによって、これまで menu.lst ファイルを編集することによって行なっていた管理タスクのほとんどを管理できるようになります。2 つの例として、Oracle Solaris ブートインスタンスのブート属性 (カーネル引数など) の設定とブートローダー設定の管理があります。「x86: bootadm コマンドを使用して GRUB 構成を管理する」を参照してください。
GRUB メニューと画面の変更
ブート時に GRUB メニューを編集することによって、カーネル引数を追加するなど、さまざまな GRUB メニューやいくつかのタスクがいくぶん異なって動作するようになりました。これらの違いは、このドキュメント内の各種タスクの該当箇所で説明しています。
その他のブートローダー関連のコマンドの変更
installgrub コマンドはこのリリースで非推奨になりました。このコマンドを使用して、GRUB 2 をサポートするシステムにブートローダーをインストールしないでください。システムのブートが妨げられることがあります。代わりに、GRUB 2 をサポートするリリースを実行する場合は、bootadm install-bootloader コマンドを使用してください。このコマンドは、x86 プラットフォームでの installgrub コマンドおよび SPARC プラットフォームでの installboot コマンドの機能に優先されます。「x86: bootadm install-bootloader コマンドを使用して GRUB 2 をインストールする」を参照してください。
installgrub コマンドを使用して、システムに GRUB Legacy をインストールすることもできますが、インストールする GRUB Legacy のバージョンが、ルートプールの ZFS プールバージョンをサポートしており、さらにシステムに残りの GRUB 2 ブート環境がないことを確認したあとに限ります。手順については、「x86: GRUB 2 がインストールされているシステムに GRUB Legacy をインストールする方法」を参照してください。
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 構成は次のファイルに格納されています。
grub.cfg – GRUB 2 によって使用されるメインの構成ファイルです。
/pool-name /boot/grub/menu.conf – Oracle Solaris によって、最終の grub.cfg 構成ファイルを生成するために使用されるファイルです。
menu.conf ファイルは、GRUB 2 構成のマシン解析可能な表現を格納する個別の GRUB メタ構成ファイルです。
注 - このファイルは編集しないでください。
/pool-name /boot/grub/custom.cfg – grub.cfg ファイルと menu.conf ファイルと同じ場所にある編集可能なファイルです。custom.cfg ファイルは、管理者によって作成されます (デフォルトでシステム上に存在しません)。このファイルは基本 GRUB 構成に複雑な構造 (メニューエントリや他のスクリプト情報) を追加する目的で予約されています。
custom.cfg ファイルは grub.cfg ファイルで参照されています。custom.cfg ファイルがシステムに存在する場合、そのファイル内にあるコマンドや指令が grub.cfg ファイルによって処理されます。詳細については、「x86: GRUB 構成のカスタマイズ」を参照してください。
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 パーティションおよびデバイス命名スキーム
|
関心のあるパーティションを参照しているパーティション番号を特定する必要がある場合、C キー (またはメニューエントリを編集している場合は Control-C) を押して、GRUB コマンド行インタプリタにアクセスします。次に、ls コマンドを実行して、次の図のように、GRUB が識別できるすべてのパーティションを一覧表示します。
ls コマンドで -l オプションを使用すれば、次の図のように、ファイルシステムおよびファイルシステム UUID 情報などの各パーティションに関する詳細情報が表示されます。
注 - GRUB はドライブのタイプに関係なく 0 からドライブ番号をカウントし、Integrated Drive Electronics (IDE) デバイスと Small Computer Systems Interface (SCSI) デバイスを区別しません。
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 タスク
|