GRUB2

From Gentoo Wiki
Jump to: navigation, search
This page is a translated version of the page GRUB2 and the translation is 100% complete.

Other languages:
English • ‎español • ‎français • ‎日本語 • ‎한국어 • ‎polski • ‎português do Brasil • ‎русский • ‎中文(中国大陆)‎

GRUB2GRand Unified Bootloader version 2)は今やGRUB Legacyと呼ばれるようになったオリジナルのGRUBの後継となるブートローダです。GRUB2はGRUB Legacyとは全く新しく作られており、シェルライクな構文を利用することで高度なスクリプトの作成が可能なのが特徴です。

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

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

インストール

sys-boot/grub パッケージはスロット化されています。grub-0.97 (GRUB Legacy) とgrub-2.02 は同時にインストールできますが、ハードディスク上のマスターブートレコード(MBR)にはどちらか1つのバージョンのGRUBのみをインストールすることができます。

前提条件

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

FILE /etc/portage/make.confEMU, EFIとPCをサポートするGRUB_PLATFORMS変数の設定例
GRUB_PLATFORMS="emu efi-32 efi-64 pc"

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

Target
Platform i386 ia64 mips mipsel powerpc spac64 x86_64
arc No No No Yes No No No
coreboot Yes No No No No No 32-bit
efi Yes Yes No No No No Yes
emu Yes Yes Yes Yes Yes Yes Yes
ieee1275 Yes No No No Yes Yes 32-bit
loongson No No No Yes No No No
multiboot Yes No No No No No 32-bit
qemu Yes No No No No No 32-bit
qemu-mips No No Yes No No No No
pc Yes No No No No No 32-bit
注意
いかなる場合でも環境変数GRUB_PLATFORMSの値が変更された際には、変更されたバイナリをビルドするためGRUB2を必ず再emergeする必要があります。以下のemerge sectionで示したとおり、必ず--newuse --deepオプションを使用してください。

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

USE フラグ

USE flags for sys-boot/grub GNU GRUB boot loader

device-mapper Enable support for device-mapper from sys-fs/lvm2 local
efiemu Build and install the efiemu runtimes local
fonts Build and install fonts for the gfxterm module local
libzfs Enable support for sys-fs/zfs local
mount Build and install the grub-mount utility local
multislot Allow concurrent installation of sys-boot/grub SLOT 0 and sys-boot/grub SLOT 2 by renaming all programs. local
themes Build and install GRUB themes (starfield) local
truetype Build and install grub-mkfont conversion utility local

Emerge

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

root #emerge --ask --newuse --deep sys-boot/grub:2

追加のソフトウェア

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

root #emerge --ask --newuse sys-boot/os-prober

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

設定

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

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

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

メインの設定ファイル

grubの設定を生成するために、grub-mkconfig スクリプトを使います。これは /etc/grub.d/* 以下のスクリプト及び /etc/default/grub 設定ファイルを用い、最終的な /boot/grub/grub.cfg を――GRUB2自体が使用する唯一の設定ファイルを――生成します。

ファイル フォーマット 編集すべきか?
/usr/sbin/grub-mkconfig POSIX シェルスクリプト No sys-boot/grub:2 パッケージの一部としてインストールされます。 下に説明されるファイルを設定した後、このスクリプトを実行して /boot/grub/grub.cfg を生成します。
/boot/grub/grub.cfg GRUB2 シェルスクリプト No grub-mkconfig が生成するファイルです。このファイルはGRUB2のビルトインスクリプトインタプリタによって評価されるもので、必ずしもすべてのPOSIXコマンドやシンタックスをサポートするものではありません。サポートされる機能については、GRUBマニュアルの scripting reference を参照してください。このファイルに対する変更は、次回 grub-mkconfig が実行されたとき保持されないことに注意してください。
/etc/grub.d/* POSIX シェルスクリプト Maybe /etc/grub.d/* 以下の、実行可能属性がセットされたスクリプトは順番に評価され、標準出力が結合されて最終的な /boot/grub/grub.cfg(もしくは grub-mkconfig -o オプションで指定された何らかのファイル)を形成します。これらのスクリプトはその時のシステムのシェルを使うので、あらゆるサポートされたシンタックスを使うことができます。理想的にはPOSIX互換のスクリプトであるべきであり、また、出力されるスクリプトはGRUB2のインタプリタと互換性のあるものでなければなりません。スクリプトを無効にしたり追加したりすることが必要かもしれません。例えば、自動では生成できないようなメニュー項目を追加したい時など。
/boot/grub/custom.cfg GRUB2 shell script Maybe このファイルが存在する場合、/etc/grub.d/41_custom のスクリプトがこのファイルを参照して起動時に読み込まれます。このファイルは新たなメニュー項目やコマンドを追加するために提供されており、grub.cfgを再生成する必要がありません。
/etc/default/grub POSIX シェルスクリプト Yes ほとんどの場合、直接変更されるべきファイルはこのファイルただ一つです。これは主に、 /etc/grub.d のスクリプトで用いられる変数を設定して、使える設定ファイルを生成するために利用されます。サポートされる変数については、GRUB2 configuration variables もしくは official reference を参照してください。

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

警告
ソフトウェアRAIDを使用しているとき、grub-mkconfig ユーティリティは正しく動作しません。/etc/grub.d/ にあるスクリプトの手動設定が必要になり、そうしなければ、インストール後にシステムはブート不能な状態におかれることになるでしょう。

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

root #grub-mkconfig -o /boot/grub/grub.cfg
Generating grub.cfg ...
Found linux image: /boot/vmlinuz-3.3.0-gentoo
done

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

警告
もし grub-mkconfig が見つかった項目を報告してこない場合、それはひとつも項目が見つかっていないということです。この場合、GRUB2はシステムの再起動のあとブートオプションをひとつも提供してくれないことになり、解決に時間のかかるトリッキーな状況になるかもしれません。システムを再起動する前に、出力が申し分ないかどうか確かめてください。

設定パラメータのセット

/etc/default/grub にある次の変数はGRUB2がどのように機能するかをコントロールするために設定される最も一般的なものです:

変数 説明 デフォルト値
GRUB_DEFAULT ブート時に最初に選択される項目を定義する変数です。番号の数字かメニュータイトル、あるいは"saved"を設定します。 最初に検出された項目がデフォルトになります。
GRUB_TIMEOUT デフォルトのメニュー項目をブートする前の遅延を秒で指定します。0に設定すると瞬時にブートし、-1にすると無期限に待ちつづけます。 デフォルトは5秒です。
GRUB_CMDLINE_LINUX すべてのLinuxメニュー項目のカーネルコマンドラインに与える引数を設定します。例えば、ハイバーネーションをサポートするためには、swapパーティションが /dev/sdXY なら、 GRUB_CMDLINE_LINUX="resume=/dev/sdXY" を追加する必要があります。
GRUB_CMDLINE_LINUX_DEFAULT リカバリ以外のLinuxメニュー項目のカーネルコマンドラインに与える引数を設定します。
GRUB_DEVICE 初期ルートデバイス(つまり、カーネルの root= 引数)を設定します。これを設定すると、 grub-mkconfig コマンドの自動検知したルートデバイスがオーバーライドされます。例えば、 GRUB_DEVICE=/dev/ram0 と設定すると、カーネルコマンドラインで強制的に root=/dev/ram0 が使われるようになります。

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

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

設定スクリプトの有効化と無効化

/etc/grub.d/ ディレクトリには、 grub-mkconfiggrub.cfg ファイルの生成に用いるスクリプトが含まれます。デフォルトでは、このディレクトリの中身は次のようなものであるはずです:

user $ls /etc/grub.d/
00_header  10_linux  20_linux_xen  30_os-prober  40_custom  41_custom README

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

root #chmod -x /etc/grub.d/{20_linux_xen,30_os-prober,40_custom,41_custom}

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

設定スクリプトに手を加える

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

/etc/grub.d/40_custom スクリプトを以下のように変更します:

FILE /etc/grub.d/40_customデュアルブートの追加
menuentry "FreeBSD" --class freebsd --class bsd --class os {
 insmod ufs2
 insmod bsd
 set root=(hd0,1)
 kfreebsd /boot/kernel/kernel
 kfreebsd_loadenv /boot/device.hints
 set kFreeBSD.vfs.root.mountfrom=ufs:/dev/ada0s1a
 set kFreeBSD.vfs.root.mountfrom.options=rw
 set kFreeBSD.hw.psm.synaptics_support=1
}

/dev/sda1 もしくは (hd0,1) が、FreeBSDが置かれているパーティションです。FreeBSDパーティションに通常のUFSインストールが行われたなら、/dev/sda1 はコンテナになっています(論理パーティションのようなものです)。これはswapとルートパーティションからなります。ls -la /etc/grub.d/40_custom を実行し、40_custom が実行可能であることを確認してください。もし実行可能ビットがセットされていない場合は、chmod u+x 40_custom コマンドでセットしてください。

注意
GRUB レガシーに慣れてきたユーザは、GRUB2 でのパーティション番号は 0 からではなく 1 から始まっていることに注意してください。

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

root #grub-install /dev/sda
root #grub-mkconfig -o /boot/grub/grub.cfg

ブートローダーのインストール

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

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

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

BIOS と MBR

注意
このシステムでMicrosoft Windowsとデュアルブートする場合、システムにUEFIファームウェアがないことを確認してください。このようなシステムがLegacy BIOSモードで起動されると、Microsoft Windowsは起動を拒否します。

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

root #mount /boot

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

root #grub-install /dev/sda
Installation finished. No error reported.

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

BIOS と MBR でのパーティショニング

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


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

BIOS と GPT

注意
このシステムでMicrosoft Windowsとデュアルブートする場合、システムにUEFIファームウェアがないことを確認してください。このようなシステムがLegacy BIOSモードで起動されると、Microsoft Windowsは起動を拒否します。また古いMicrosoft WindowsのシステムはGPTをサポートしないでしょうが、ハイブリッドMBR-GPT という方法が使用できます。Hybrid partition table参照のこと。

もし /boot パーティションが必要ならば、 /boot パーティションのマウントから始めましょう。

root #mount /boot

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

root #grub-install /dev/sda
Installation finished. No error reported.

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

BIOS と GPT でのパーティショニング

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

重要
BIOSブートパーティションと一般的に/bootがマウントされるパーティションは同じではありません/boot と BIOSブートは別のパーティションにあるため、それぞれ別々に扱われるべきです。BIOSブートパーティションは絶対にシステムにはマウントされません。 (例えば/etc/fstabに定義されていないはずです)。対して/bootパーティションは何ら問題なく必ずマウントされるので、/etc/fstabファイルで定義することもできます。

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

(parted)set 1 bios_grub on

sys-apps/gptfdiskcgdisk ユーティリティでは、これはパーティションタイプを 0xEF02 に設定し、 gptbios というラベルを設定することで全うされます。

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

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

root #gdisk /dev/sdc
GPT fdisk (gdisk) version 0.8.1
 
Partition table scan:
  MBR: protective
  BSD: not present
  APM: not present
  GPT: present
 
Found valid GPT with protective MBR; using GPT.
 
Command (? for help): p
Disk /dev/sdc: 976773168 sectors, 465.8 GiB
Logical sector size: 512 bytes
Disk identifier (GUID): AA369F4D-37A4-4C0D-A357-DC24B99A6337
Partition table holds up to 128 entries
First usable sector is 34, last usable sector is 976773134
Partitions will be aligned on 2048-sector boundaries
Total free space is 2014 sectors (1007.0 KiB)
 
Number  Start (sector)    End (sector)  Size       Code  Name
   1            2048       828377087   395.0 GiB   8E00  Linux LVM
   2       828377088       891291647   30.0 GiB    0700  Microsoft basic data
   3       891291648       975177727   40.0 GiB    0700  Microsoft basic data
   4       975177728       976754687   770.0 MiB   8300  Linux filesystem
   5       976754688       976756735   1024.0 KiB  EF02  BIOS boot partition
   6       976756736       976773134   8.0 MiB     EF00  EFI System
 
Command (? for help): 
注意
fdiskをGPTで用いるときは、十六進数の0x接頭辞の入力は必要ありません。

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

root #parted /dev/sdc
GNU Parted 3.0
Using /dev/sdc
(parted) print
...
Sector size (logical/physical): 512B/512B
Partition Table: gpt
  
Number  Start   End    Size    File system  Name                  Flags
 1      1049kB  424GB  424GB                Linux LVM             lvm
 2      424GB   456GB  32.2GB               Microsoft basic data
 3      456GB   499GB  42.9GB               Microsoft basic data
 4      499GB   500GB  807MB   ext2         Linux filesystem
 5      500GB   500GB  1049kB               BIOS boot partition   bios_grub
 6      500GB   500GB  8396kB               EFI System            boot
  
(parted)

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

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

UEFI と GPT

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

root #mount /boot

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

root #grub-install --efi-directory=/boot/efi
Installation finished. No error reported.

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

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

UEFI と GPT でのパーティショニング

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

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

FILE /etc/fstabUEFIに対応したswapパーティションを含む /etc/fstab ファイルの例:
/dev/sda1		/boot/efi	vfat		noauto,noatime	1 2
/dev/sda2		none		swap		sw		0 0
/dev/sda3		/		ext4		noatime		0 1

/boot/efi は100MBもあれば複数の

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

選びぬかれたパーティションツールを使ってパーティションを作成してください。gdisk (sys-apps/gptfdisk) と parted (sys-block/parted) はツールはこの目的には持って来いです。gdiskを使うときは必ずtype EF00を利用してください。

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

root #mkfs.fat -F 32 -n efi-boot /dev/sda1
root #mkdir /boot/efi
FILE /etc/fstab/boot/efi マウント項目の追加
/dev/sda1		/boot/efi	vfat		noauto,noatime	1 2
root #mount /boot/efi
注意
/etc/portage/make.confファイルにて 環境変数GRUB_PLATFORMS を設定しておくと便利です。これはGRUB2が適切なEFIターゲットを検出する際にどのオプションを用いるかを決定する助けになるでしょう。32ビットUEFIシステムには efi-32 を、64ビットシステムには efi-64 を利用してください。
重要
GRUB2を適切にインストールするためには grub-install コマンドを実行する前に、必ずEFIディレクトリがマウントされていて、かつ efivars カーネルモジュールもロードされている必要があります

代替案: デフォルトのUEFIファームウェアの場所を利用する

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

拡張機能

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

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

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

チェーンロード

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

FILE /etc/grub.d/40_customほかのブートローダに引き継ぐ(チェインロード)
menuentry "Custom Super Bootloader Example" {
     insmod part_msdos
     insmod chain
     chainloader (hd1,1)+1
}

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

フレームバッファディスプレイを使う

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

root #emerge --ask --newuse sys-boot/grub:2

次に、/etc/default/grub にあるGRUB2のデフォルト設定ファイルを設定します。例えば、

FILE /etc/default/grubフレームバッファに関する設定
# 解像度と色深度の設定
GRUB_GFXMODE=1366x768x32
 
# カーネルのロードの際に解像度を保つ
GRUB_GFXPAYLOAD_LINUX=keep
 
# 背景画像の設定
GRUB_BACKGROUND="/boot/grub/bg.png"
 
# grub-mkfontユーティリティで変換したカスタムフォントを使う
GRUB_FONT="/boot/grub/fonts/roboto.pf2"

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

(grub)insmod all_video
(grub)videoinfo

トラブルシューティング

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

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

.EFI ファイルを検知しないマザーボードファームウェア

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

root #mkdir -p /boot/efi/efi/boot
root #cp /boot/efi/efi/gentoo/grubx64.efi /boot/efi/efi/boot/bootx64.efi

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

chroot環境下でのos-proberとUEFI

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

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

root #mkdir -p /mnt/gentoo/run/udev
root #mount -o bind /run/udev /mnt/gentoo/run/udev
root #mount --make-rslave /mnt/gentoo/run/udev

新しいカーネルをインストール

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

注意
このステップでは /boot がマウントされている必要があります。
root #grub-mkconfig -o /boot/grub/grub.cfg
Generating grub.cfg ...
Found linux image: /boot/kernel-3.3.8-gentoo
Found initrd image: /boot/initramfs-genkernel-x86_64-3.3.8-gentoo
Found linux image: /boot/kernel-3.2.12-gentoo
Found initrd image: /boot/initramfs-genkernel-x86_64-3.2.12-gentoo
done

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

参考

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

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

外部の情報

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