GRUB/ja

GRUB2 は今やGRUB Legacyと呼ばれるようになったGRUB1の後継となるブートローダです. GRUB2はGRUB Legacyとは全く別のコードベースを持ち、より高度なスクリプティングを可能にするためシェルライクな構文を利用できるのが特徴です.

ショットガンアプローチが必要なら、GRUB2 Quick Startを参照してください.

GRUB レガシーから GRUB2 に移行する方法については、GRUB2 Migration を見てください.

インストール
パッケージはスロット化されています. grub-0.97(GRUB Legacy) と grub-2.00 は同時にインストールされることができますが、マスターブートレコード（MBR）にはどちらか1つのバージョンのGRUBのみをインストールすることができます. この記事では、GRUB2について解説します.

前提条件
デフォルトでは、GRUB2はデフォルトのプラットフォームターゲットをビルド時に推測します. これは において GRUB_PLATFORMS 変数をセットすることでオーバーライドできます.

ターゲットのCPU毎に、次のプラットフォームがサポートされています:

EFIサポートを有効にするため、プロファイルが既定で有効になっています. BIOSベースのシステムを使っている場合、余計な依存ファイルのインストールを避けるため、環境変数 GRUB_PLATFORMS には"emu"を指定して下さい.

Emerge
通常の シンタックスを用いてGRUB2をインストールします.

追加のソフトウェア
必要なら、 ユーティリティ( で提供されます)をインストールして、 コマンドを実行した際にGRUB2が他のオペレーティングシステムを探索するようにしてください. たいていの場合、これでGRUB2が自動で他のオペレーティングシステム(Windows 7, Windows 8.1, 10や他のLinuxディストリビューションなど)を検出できるようになります.

GRUB2(と、場合によっては)をインストールしても、ブートローダは自動では有効になりません. これらは、オペレーティングシステムにソフトウェアをインストールするのみで、(システムのブート時にそれが使われるようにするために)システムそのものにブートローダをインストールするには、追加のステップが必要になります. これについては設定セクションで解説します.

設定
GRUB2 の設定には２つの重要な作業があります:


 * 1) GRUB2 のソフトウェアを、システムのブートローダーとしてインストール
 * 2) GRUB2 ブートローダー自体の設定

GRUB2ソフトウェアのインストールはシステムのタイプによってそれぞれ異なり、ブートローダーのインストールで解説します. まず、ブートローダそのものの設定について解説します.

メインの設定ファイル
grubの設定を生成するために、 スクリプトを使います. これは 以下のスクリプト及び  設定ファイルを用い、最終的な  を――GRUB2自体が使用する唯一の設定ファイルを――生成します.

GRUB2は、(GRUB Legacy や LILO のような)管理者によるブートオプション設定の手動での維持を必要としません. その代わりに、 コマンドを用いて、設定ファイルを生成することができます. このユーティリティは にあるスクリプトと  の設定を使用します.

何らかの設定を変更したら、 ユーティリティを にある出力ファイル(これはGRUB2のデフォルトの出力場所です)を指定した  オプション付きで実行します:

ユーティリティが呼ばれるたびに、新しい設定が生成されます.

設定パラメータのセット
にある次の変数はGRUB2がどのように機能するかをコントロールするために設定される最も一般的なものです:

より完全なリストについては、GRUB2 configuration variablesサブページを参照してください.

パラメータを変更したら、 でGRUB2の設定ファイルを再生成してください.

設定スクリプトの有効化と無効化
ディレクトリには、 が  ファイルの生成に用いるスクリプトが含まれます. デフォルトでは、このディレクトリの中身は次のようなものであるはずです:

GRUB2は、インストールされたスクリプトのうち、実行可能に設定されたすべてのスクリプト(デフォルトでは全部がそうです)を利用します. いずれかのスクリプトを無効にするには、 コマンドを用い、単にスクリプトのファイルパーミッションから実行可能ビットを取り除いてください. 次の例では、 と  を除く全てのスクリプトを無効にします.

スクリプトを変更したり、実行可能ビットを取り除いたりした後は、 を用いてGRUB2の設定ファイルを再生成してください.

設定スクリプトに手を加える
いくつかのGRUB2の機能は、設定スクリプトの書き換えによってのみ利用することができます. 例えば、FreeBSDとのデュアルブートをサポートするには次の操作が必要です.

スクリプトを以下のように変更します:

もしくは  が、FreeBSDが置かれているパーティションです. FreeBSDパーティションに通常のUFSインストールが行われたなら、 はコンテナになっています(論理パーティションのようなものです). これはswapとルートパーティションからなります. を実行し、 が実行可能であることを確認してください. もし実行可能ビットがセットされていない場合は、 コマンドでセットしてください.

次に、 コマンドを用いてGRUB2をインストールし、GRUB2の設定ファイルを更新してください.

ブートローダーのインストール
GRUB2をシステムのブートローダーとしてインストールする方法は、システムがどのようにブートするのか(BIOSかUEFIか)と、ブートローダーがインストールされるディスクがどのようにパーティションされているのか(パーティションレイアウトがMBRかGPTか)によって変わってきます.

この記事では次の場合についてをカバーします:


 * BIOS と MBR
 * BIOS と GPT
 * UEFI と GPT

システムに対して適切なインストール方法の解説を選んでください.

BIOS と MBR
を確実に利用可能にしてください. もしこれが独立したパーティションなら、確実にマウントしてください:

関連するファイルを にコピーするために、  コマンドを実行してください. PCプラットフォームではさらに、これによってマスターブートレコード(MBR)かパーティションのブートセクタにブートイメージがインストールされます. もしすべてがうまくいけば、 の実行後、以下のような出力が得られることが期待されます:

は、CPUアーキテクチャとシステムプラットフォームを指定するための  オプションを受け付けます. 指定しなかった場合、 は適切な値を推測しようとします. / システムにおいては、デフォルトで  が使用されます. はまた、GRUB2のブートファイルを探す場所をGRUB2インストーラに知らせるための  オプションを受け付けます. これはデフォルトでは ですが、ルートパーティションを移動しようとしている場合などに有用です.

BIOS と MBR でのパーティショニング
最初のパーティションの前に十分な空き領域を用意しておいてください. 最初のパーティションをセクタ2048で開始すれば、少なくとも1MiBのディスク領域がマスターブートレコードに残されることになります. GRUBのための"BIOSブートパーティション"とよばれる追加パーティションを作成することが(必須ではありませんが)推奨されます. このパーティションは定義される必要があるだけで、フォーマットは必要ありません. これは後からシステムがGPTパーティションレイアウトに移行される時に必要です. MBRを使い続ける限りは必要ありません.

もしGentoo installation instructionsに従ったのなら、BIOSブートパーティションはすでに有効なはずです.

BIOS と GPT
もし パーティションが必要ならば、  パーティションのマウントから始めましょう.

すべてがうまくいけば、 コマンドの実行後、以下のような出力が得られることが期待されます:

は、CPUアーキテクチャとシステムプラットフォームを指定するための  オプションを受け付けます. 指定しなかった場合、 は正しい値を推測しようとします. / システムにおいては、デフォルトで  が使用されます. はまた、GRUB2のブートファイルを探す場所をGRUB2インストーラに知らせるための  オプションを受け付けます. これはデフォルトでは ですが、ルートパーティションを移動しようとしている場合などに有用です.

BIOS と GPT でのパーティショニング
GPTパーティションテーブルがシステムに存在するとき、タイプ  の小さな"BIOSブートパーティション"(タイプ   の"EFIシステムパーティション(ESP)"とは異なります)を有効にする必要があります. 動作させるには1MiBで十分ですが、2-4MiBがより安全な選択でしょう. このBIOSブートパーティションがブートローダーのステージ2を保持することになります. BIOSブートパーティションはファイルシステムでフォーマットされる必要はありません. コマンドが独自のファイルシステムで既存のファイルシステムを上書きします.

パーティションをBIOSパーティションとして設定するには、コマンドラインツールの  を用い、以下のようにタイプしてください( をBIOSブートパーティションに設定したいパーティションの番号に置きかえてください!):

の ユーティリティでは、これはパーティションタイプを   に設定し、   というラベルを設定することで全うされます.

EFIシステムパーティションは必要ではありませんが、システムのマザーボードがUEFIのボードにアップグレードされたとき、後からこれに変更できるよう、BIOSブートパーティションを十分大きくしておくのはまともな判断でしょう.

次に示すのは、BIOSブート [0xEF02] パーティションとEFI [0xEF00] パーティションの両方を含むGPTパーティションのディスクで ユーティリティを用い、  キーを押したときの出力です:

同様のセットアップに対し、 ユーティリティはやや異なる記法で出力を返します:

でのパーティションの作成は、すでに パーティショニングユーティリティに慣れているユーザーにとっては理解しやすいでしょう. を開始したら、メインメニューで(newを意味する) をタイプし、(必要なら)開始と終了のセクタを与え、EFIシステムパーティションに   パーティションタイプを設定してください.

Gentoo installation instructionsに従ったユーザーならば、すでに適切なパーティションレイアウトに設定されているはずです.

UEFI と GPT
が利用可能であることを確認してください. もし別のパーティションにあるなら、マウントされていることを確認してください：

コマンドを実行することで必要なファイルがにコピーされます. これによりGRUB2がにインストールされ、そのコアイメージをにコピーしたのちefibootmgrを呼び出してブートエントリを追加します.

上のコマンドは、vfatのEFIシステムパーティション(ESP)が にマウントされていることを前提にします. もしESPが に直接マウントされているなら、  としてください.

は、CPUアーキテクチャとシステムプラットフォームを指定するための  オプションを受け付けます. 指定がない場合、は適切な値の推測を試みます. / システムにおいては、デフォルトで  が使用されます. はまた、GRUB2のブートファイルを探す場所をGRUB2インストーラに知らせるための  オプションを受け付けます. これはデフォルトでは ですが、ルートパーティションを移動しようとしている場合などに有用です.

UEFI と GPT でのパーティショニング
GRUB2によるUEFI GPTブートには、システムに必ずFATファイルシステムを含んだ専用のパーティションが必要です.

EFIパーティションは上のの役割を、 上のへと移すことができます. つまりGRUB2を使ったUEFIブートの場合でも、計2つ（スワップパーティションがあるなら計3つ）のパーティション、つまりルートパーティションとEFIパーティションで可能ということです. この設定を使うと、フォルダはルート と同じパーティションに置かれ、EFIパーティションはフォルダの中のにマウントされます. 下記のの例を見るとはっきりするでしょう.

は100MBもあれば複数の ファイルを格納するのには十分です（そもそも複数のエントリが必要になることは滅多になく、ほとんどのシステムは1つしか使いません）.

選びぬかれたパーティションツールを使ってパーティションを作成してください. と  はツールはこの目的には持って来いです. を使うときは必ずtype を利用してください.

続いて次の例のように、 を用いてEFIシステムパーティション上にFATファイルシステムを作成し、  へ項目を追加してください.

代替案: デフォルトのUEFIファームウェアの場所を利用する
もしシステムのUEFIファームウェアがGRUB2のEFIファイルを見つけられない場合、既定のブートローダの場所を利用することで解決するでしょう. このときefibootmgrが提供するブートメニューを使えないため機能は減りますが、エラーは起きづらくなります. これを行うためには、EFIパーティションがにマウントされていることを確認した上でにあるファイルをにコピーして下さい. なおこの例では64bitのUEFIをシステムを前提としています. 32bitの場合は適宜読み替えて下さい.

拡張機能
GRUB2は、その多くの機能によって、非常にパワフルなブートローダーとなっています. サポートされる機能は:


 * UEFIパーティションからのブート
 * ハイブリッドMBRを必要としない、GPTでパーティションされたドライブからのブート(ハイブリッドMBRは、必要なら互換性と移植性のために有効にできます)
 * btrfs でフォーマットされた パーティションからのブート
 * 初期マウントセットアップのための initramfs を必要としない、btrfs raidセットからの直接のブート
 * 論理ボリューム管理からの直接のブート(たとえば LVM2)
 * DM-RAID(RAID 0, 1, 4, 5, 6, 9 と 10)をサポートしたブート
 * 暗号化されたデバイス(LUKS)からのブート

次にいくつかの項目について詳しく説明します.

チェーンロード
GRUB2 は GRUB Legacy よりはるかに優れたチェーンロードモードが備わっています. 他のブートローダーをチェーンロードするには、  オプションを利用してください.

さらなるチェーンロードの情報については Chainloading サブ記事を参照してください.

フレームバッファディスプレイを使う
GRUB2で framebuffer のグラフィカルな表示を利用するには、  USE flag を有効にして再emergeしてください. これによりfont変換ツールの他にデフォルトの True Type フォントがインストールされます.

次に、 にあるGRUB2のデフォルト設定ファイルを設定します. 例えば、

システムのグラフィックカードがどのディスプレイモードをサポートしているか調べるためには、GRUB2シェルで以下に示すコマンドを使ってください:

トラブルシューティング
ほとんどの問題は、正しいパーティションレイアウトを確実に設定することで解決できます. ディスクの最初のパーティションの前に十分な領域を確保するか、任意で確実に"BIOSブートパーティション"が利用できるようにしてください. さらに、 が で正しく生成されているか確認するか、あるいはカスタムのメニュー項目で生成してください.

さらなるGRUB2のトラブルシューティングについては、Troubleshootingサブ記事を参照してください.

chroot環境下でのos-proberとUEFI
を使用すると、Microsoft WindowsなどのLinuxの代わりにインストールされたOSを検出できます. これを正しく動作させるには、EFIシステムパーティションのテストのためlive環境のudevの情報にアクセスできるようにする必要があります.

下記のコマンドをホスト環境で実行すると必要なファイルが得られます （この例では、Handbookにある通りGentooはにマウントされているものとしています）.

参考
いくつかのGRUB2の機能について独立のページがあります：


 * In Chainloading GRUB2で他のブートローダーを利用する方法が書かれています. これはデュアルブートやISOファイルのブートを構成する必要がある場合には重要です.
 * In Advanced storage RAIDや論理ボリューム、暗号化ファイルシステムなど、より最新のストレージを利用する際のGRUB2インストール方法や利用方法が書かれています.
 * In Configuration variables で利用可能なすべての GRUB2 configuration variable がまとめられています.
 * In Troubleshooting よくあるGRUB2のエラー（とそれらの解決策）が挙げられています.
 * In Hybrid partition table MBR/GPTが混合したハイブリッドパーティションの設定方法と、そのGRUB2での利用方法がまとめられています.

外部の情報
さらなる情報については、以下を参照してください:


 * GNU GRUB 2 manual page
 * Network (PXE) section of GRUB2
 * Legacy BIOS issues with GPT article
 * GPT and Hybrid MBR article
 * GPT fdisk utility page
 * Arch Linux GRUB2 wiki article
 * Fedora GRUB2 wiki article : Encountering the dreaded GRUB2 boot prompt
 * ubuntu UEFI booting help
 * http://unix.stackexchange.com/questions/109272/dualboot-freebsd-gentoo-with-grub2-mbr
 * A blog post entry on locking specific GRUB2 boot entries with a password