GRUB/ja

GRUB 2（GRand Unified Bootloader version 2）は、GRUB2 とも表記され、一般的には GRUB とも呼ばれ、Article description::多くのシステムアーキテクチャ上で、様々なファイルシステムからカーネルをロードすることができる、マルチブート 2 次ブートローダです. GRUB は PC BIOS、PC EFI、IEEE 1275 (Open Firmware)、SPARC、MIPS Lemote Yeeloong をサポートしています.

GRUB2 はオリジナルの GRUB Legacy ブートローダとは全く新しく作られており、シェルライクな構文を利用することで高度なスクリプトの作成が可能なのが特徴としており、オリジナルを置き換えるものです.

クイックセットアップアプローチが必要なら、GRUB2 Quick Startを参照してください.

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

インストール
Gentoo では GRUB Legacy (grub-0.97) と GRUB2 はスロット化されているので、両バージョンの GRUB を同じシステムに同時にインストールすることができますが、ハードディスク上のマスターブートレコード（MBR）にはどちらか1つのバージョンのGRUBのみをインストールすることができます.

It is recommended all systems should upgrade to GRUB2, since it supports all the same features sets as Legacy. Legacy was removed from the Gentoo ebuild repository.

前提条件
GRUB をどのプラットフォームにインストールするかコントロールするには、 において GRUB_PLATFORMS 変数をセットしてください. アーキテクチャは多くのシステムで動作するプロファイルのデフォルト値を含んでいます.

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

次に、GRUBをインストールし、設定ファイルを更新してください.

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

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


 * BIOS と MBR
 * BIOS と GPT
 * UEFI と GPT
 * PowerPC 上の Open Firmware (IEEE 1275)

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

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

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

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

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

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

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

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

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

Dual-boot with Windows
An already installed Windows will refuse to boot when the boot mode or the partitioning scheme is changed. Also, older Windows systems don't support GPT (or EFI) at all, demanding that a BIOS or the EFI-CSM along with an MBR must be used. If Windows supports EFI it can be re-installed in the native UEFI mode and the GPT partitioning scheme, as well as Linux; see section UEFI with GPT.

Hybrid partitioning between GPT and MBR creates both a valid GPT partition table and a valid MBR partition table at the same time, but limits the total number of hybrid partitions to four because of the four primary partition limit of the MBR. Since the ESP (the EFI System Partition holding the EFI bootloaders) takes up one partition this leaves only three shared partitions between MBR and GPT. When one partition is used for Windows and one for Linux, there is only one additional hybrid partition possible, like a separate Linux /boot partition or a shared data partition between the two operating systems.

If there are two physical disks available to the system, a great solution is to have one disk use the GPT and the other the MBR partitioning scheme. Normally, the Windows installation uses only one partition as 'system partition' and 'boot partition', called 'drive C:'. When in BIOS mode the initial partition for booting, the 'system partition', must be an MBR partition. This applies to every Windows version since Windows XP and includes Windows 10. Since Windows Vista (actually Windows XP x64 Edition) the Microsoft operating system supports accessing GPT partitions. The solution is to relocate the 'system partition' part of an installation to the MBR partitioned disk, and convert the 'boot partition' (the one containing \WINDOWS) to a GPT partitioned disk. Windows can thereafter access all the GPT partitions on the one disk, and will continue to use the MBR partitions (or hybrid partitions) on the disk containing the 'system partition'. The Windows installation (containing \WINDOWS) would be a GPT partition, even when booted in BIOS mode.

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
が利用可能であることを確認してください. もし別のパーティションにあるなら、マウントされていることを確認してください：

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

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

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

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

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

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

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

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

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

PowerPC 上の Open Firmware (IEEE 1275)
こちらをご覧ください.

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


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

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

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

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

GRUBのメニューのパスワード保護
もし、ブートパラメータを変更できないようにしたり、コマンドラインを使用できなくすることでGRUBを安全にしたい場合、ユーザ/パスワードの組み合わせをGRUBの設定ファイルに追加することができます. grub-mkpasswd-pbkdf2がGRUB用のパスワードのハッシュを作成します：

そして、以下を追加してください：

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

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

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

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

os-prober not running
When running the command,  is not running as expected, even though it is installed:

This can be corrected by setting the GRUB_DISABLE_OS_PROBER variable to  in  file.

Upon the next run, should find additional bootable partitions:

.EFI ファイルを検知しないマザーボードファームウェア
いくつかのマザーボードメーカーは、EFIシステムパーティション(ESP)内の.EFIファイルについて1つの場所のみをサポートしているようです. これに当てはまると思われる場合、GRUBのデフォルトファイルを単に に移動してください. まず、ESPがマウントされていることを確認します. ESPが(Handbookで推奨されているように) にマウントされているとすると、以下を実行します:

removableパラメータを使用して、このファイルをgrub-installコマンドで自動的に作成することもできます：

これでマザーボードのファームウェアがGRUBの実行可能ファイルを読み込めるようになるはずです. システムを再起動して、ファームウェアが正しくGRUBを読み込むようになったか見てみましょう.

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

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

新しいカーネルをインストール
新しいカーネルをGRUBに認識させるため、カーネルをインストールした際には必ずGRUBを再設定しなければなりません. 下記のように、 を実行することで再設定が可能です. あるいは手動で行うこともできます.

GRUBは単に「再設定」が必要なだけで、「再インストール」が必要なわけではありません. 一方、GRUB自身が更新された際にはハードディスク上のGRUB2を再インストールする必要がありますが、このときには普通、再設定は必要ありません.

参考

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

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


 * GNU GRUB 2 manual page
 * Network (PXE) section of GRUB
 * Legacy BIOS issues with GPT article
 * GPT and Hybrid MBR article
 * GPT fdisk utility page
 * Arch Linux GRUB 2 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