This is Gentoo's testing wiki. It is a non-operational environment and its textual content is outdated.
Please visit our production wiki at https://wiki.gentoo.org
GRUB2
GRUB2(GRand 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 アーキテクチャは多くのシステムで動作するプロファイルのデフォルト値を含んでいます。
/etc/portage/make.conf
EMU, 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 devmapper. Required for LUKS or LVM volume detection. |
+fonts
|
Build and install fonts for the gfxterm module |
+themes
|
Build and install GRUB themes (starfield) |
doc
|
Add extra documentation (API, Javadoc, etc). It is recommended to enable per package instead of globally |
efiemu
|
Build and install the efiemu runtimes |
libzfs
|
Enable support for sys-fs/zfs |
mount
|
Build and install the grub-mount utility |
nls
|
Add Native Language Support (using gettext - GNU locale utilities) |
sdl
|
Add support for Simple Direct Layer (media library) |
secureboot
|
Automatically sign efi executables using user specified key |
test
|
Enable dependencies and/or preparations necessary to run tests (usually controlled by FEATURES=test but can be toggled independently) |
truetype
|
Build and install grub-mkfont conversion utility |
verify-sig
|
Verify upstream signatures on distfiles |
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つの重要な作業があります:
- GRUB2 のソフトウェアを、システムのブートローダーとしてインストール
- 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 Legacy や LILO のような)管理者によるブートオプション設定の手動での維持を必要としません。その代わりに、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-mkconfig が grub.cfg ファイルの生成に用いるスクリプトが含まれます。デフォルトでは、このディレクトリの中身は次のようなものであるはずです:
user $
ls /etc/grub.d/
00_header 10_linux 20_linux_xen 30_os-prober 40_custom 41_custom README
GRUB2は、インストールされたスクリプトのうち、実行可能に設定されたすべてのスクリプト(デフォルトでは全部がそうです)を利用します。いずれかのスクリプトを無効にするには、 chmod コマンドを用い、単にスクリプトのファイルパーミッションから実行可能ビットを取り除いてください。次の例では、 00_header と 10_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 スクリプトを以下のように変更します:
/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/gptfdisk の cgdisk ユーティリティでは、これはパーティションタイプを 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 の例を見るとはっきりするでしょう。
/etc/fstab
UEFIに対応した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
/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
オプションを利用してください。
/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のデフォルト設定ファイルを設定します。例えば、
/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.cfg が grub-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での利用方法がまとめられています。
外部の情報
さらなる情報については、以下を参照してください:
- GNU GRUB 2 manual page
- 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