Linuxユーザー必見!GRUBとは?機能と使い方を徹底解説
Linuxを使っているあなたは、パソコンの電源を入れてから見慣れたデスクトップ画面が表示されるまでに、一体何が起こっているのか考えたことはありますか? BIOS/UEFIが起動し、ハードウェアを初期化した後、オペレーティングシステム(OS)を読み込むための「橋渡し」役が必要です。その重要な役割を担っているのが、「ブートローダー」と呼ばれるプログラムです。
そして、多くのLinuxディストリビューションで標準的に採用されているのが、今回詳しく解説する GRUB です。
GRUBについて深く理解することは、Linuxの起動プロセスを把握し、マルチブート環境を構築したり、起動時のトラブルを解決したりする上で非常に役立ちます。この記事では、GRUBとは何かという基本的なことから、その多機能な側面、設定方法、そして困った時の対処法まで、初心者にも分かりやすいように徹底的に解説していきます。
さあ、Linuxの世界への玄関口とも言えるGRUBの奥深い世界を一緒に探求しましょう。
1. はじめに:なぜGRUBを知る必要があるのか?
あなたは普段、Linuxマシンの電源を入れて、GRUBのメニュー画面を見ることなく、あるいはデフォルトで設定されたOSが自動的に起動するのを待っているかもしれません。しかし、以下のような状況に直面したことはありませんか?
- WindowsとLinuxを一つのPCで使いたい(マルチブート環境)。
- インストールされている複数のLinuxディストリビューションから、起動時に選択したい。
- Linuxが起動しなくなった。
- 起動時のオプション(カーネルパラメータ)を変更して、特定のハードウェア問題を回避したい。
- GRUBのメニュー画面のデザインを変えたい。
これらの要望や問題に対応するためには、GRUBの仕組みや設定方法を知っていることが不可欠です。GRUBは単にOSを起動するだけのプログラムではなく、非常に強力でカスタマイズ性の高いブートローダーなのです。
この記事を読むことで、あなたは以下のことを習得できます。
- GRUBがLinuxの起動プロセスで果たす役割。
- GRUBの多様な機能とその活用方法。
- GRUBの主要な設定ファイルとその編集方法。
- GRUBメニューでの高度な操作方法。
- GRUBに関する一般的なトラブルの診断と修復方法。
Linuxシステムをより深く理解し、自在にコントロールするための一歩として、GRUBについてしっかりと学びましょう。
2. GRUBとは何か? その進化と役割
GRUBとは GRand Unified Bootloader の略称です。その名の通り、複数のオペレーティングシステムを統合的に管理し、起動するためのブートローダーです。
2.1. ブートローダーの役割
コンピューターの電源を入れると、まずマザーボード上の BIOS (Basic Input/Output System) またはより新しい UEFI (Unified Extensible Firmware Interface) と呼ばれるファームウェアが起動します。このファームウェアは、CPU、メモリ、ディスクなどのハードウェアを初期化し、次にどのプログラムを実行するかを探します。
伝統的なBIOSシステムでは、ハードディスクの先頭(通常は最初のセクタである MBR (Master Boot Record))に記録されたプログラムを実行します。UEFIシステムでは、ディスク上の ESP (EFI System Partition) に格納されたブートローダープログラム(.efi
ファイル)を実行します。
いずれの場合も、BIOS/UEFIが直接Linuxカーネルを読み込んで起動させるわけではありません。間に立って、複雑なファイルシステムからカーネル本体(vmlinuz-*
)と初期RAMディスク(initrd-*
または initramfs-*
)を探し出し、メモリにロードして実行を開始させるのがブートローダーの役割です。
GRUBはまさにこのブートローダーとして機能し、Linuxだけでなく、Windows、BSD、macOSなど、様々なOSの起動をサポートします。
2.2. GRUB Legacy と GRUB 2
GRUBには主に二つの世代があります。
- GRUB Legacy (GRUB 0.9x): かつての標準的なGRUBです。設定ファイルは
/boot/grub/menu.lst
で、設定構文はシンプルですが、機能拡張性や柔軟性に限界がありました。現在はほとんどのディストリビューションでサポートが終了しています。 - GRUB 2 (GRUB 1.9x 以降): 現在の標準的なGRUBです。完全に書き直されており、モジュール化されたアーキテクチャ、柔軟な設定、UEFIネイティブ対応、LVM/RAID/暗号化ディスクなどへの幅広い対応が特徴です。設定ファイルは
/boot/grub/grub.cfg
ですが、これは自動生成されるのが一般的です。
この記事で解説するのは、現在の標準である GRUB 2 です。特に断りがない限り、「GRUB」はGRUB 2を指します。
2.3. GRUB 2 のアーキテクチャ
GRUB 2は、GRUB Legacyに比べてはるかに洗練されたアーキテクチャを持っています。主な特徴は以下の通りです。
- モジュール性: GRUBの機能(ファイルシステムドライバ、圧縮形式のサポート、ターミナル出力など)はモジュール化されており、必要な機能だけをロードすることで、ブートローダー本体をコンパクトに保つことができます。これらのモジュールは通常
/boot/grub/<アーキテクチャ>/
ディレクトリに.mod
ファイルとして格納されています。 - スクリプトベースの設定: メイン設定ファイル
grub.cfg
は、ユーザーが直接編集するのではなく、スクリプトによって自動生成されることが推奨されています。これにより、カーネルアップデートや新しいOSの検出などが自動的に設定に反映されます。 - UEFIネイティブ対応: UEFIシステムにおけるESPからの起動にネイティブに対応しています。
- 広範なファイルシステム/デバイス対応: 多くのファイルシステム(ext4, XFS, Btrfs, ZFS, NTFS, FATなど)やデバイス(SATA, NVMe, USB, RAID, LVMなど)をブートローダー自身が直接読み書きできます。
このアーキテクチャにより、GRUB 2は非常に強力で柔軟なブートローダーとなっています。
3. GRUBの多機能性:OS起動だけじゃない!
GRUBは単にOSを起動するだけでなく、様々な便利な機能を提供します。
3.1. マルチブート機能
これがGRUBの最もよく知られた機能の一つです。同じコンピューターに複数のOS(例: LinuxとWindows、または複数のLinuxディストリビューション)がインストールされている場合、GRUBは起動時にメニューを表示し、ユーザーが起動したいOSを選択できるようにします。
- Windowsの検出: GRUBは通常、
os-prober
というツールを使って他のパーティションにインストールされているWindowsなどを自動的に検出します。 - 他のLinuxの検出: 同様に、他のLinuxディストリビューションも自動的に検出してメニューに追加します。
- カスタムエントリ: 自動検出されないOSや、特別な起動設定を行いたい場合は、手動でGRUBの設定ファイルにエントリを追加することも可能です。
3.2. 多様なファイルシステムとデバイスへの対応
GRUBはOSが完全に起動する前の段階で、ファイルシステムを理解し、その中のファイル(カーネル、initramfsなど)を読み込む必要があります。GRUB 2は多くの一般的なファイルシステム(ext2/3/4, XFS, Btrfs, JFS, ReiserFS, VFAT, NTFS, HFS+など)をサポートしており、OSが認識する前にこれらのファイルシステム上のファイルを読み出すことができます。
また、HDD/SSD(SATA, NVMe)、USBドライブ、CD/DVD、ソフトウェアRAID、LVMボリューム、さらには暗号化されたディスク上のパーティションからでもOSを起動できます(暗号化解除のためのパスワード入力が必要になる場合があります)。
3.3. カーネルパラメータの変更
Linuxカーネルは、起動時に様々なパラメータを受け取って動作を変更できます。例えば、特定のドライバをロードしない、デバッグ情報を表示する、特定のランレベルで起動するなどです。
GRUBメニューで起動エントリを選択し、’e’キーを押すと、そのエントリに設定されているカーネルパラメータを編集できます。例えば、トラブルシューティングのために single
(シングルユーザーモード) や ro
(rootファイルシステムを読み取り専用でマウント) などのパラメータを追加・変更して一時的に起動できます。
3.4. レスキューモード (GRUB Rescue)
GRUBの設定ファイル(grub.cfg
)が見つからなかったり、重要なモジュールがロードできなかったりした場合、GRUBは限定的なコマンドラインインターフェースである「grub-rescue>
」プロンプトを表示することがあります。
このレスキューモードでは実行できるコマンドは限られますが、ディスク上のパーティションを探索したり、ブートローダーのルートディレクトリやモジュールディレクトリの場所を特定したり、基本的なファイルシステム情報を表示したりすることができます。適切に操作すれば、ここからシステムを起動させたり、GRUBを修復するための情報を得たりすることが可能です。
3.5. メニュー表示とカスタマイズ
GRUBは起動時にメニュー画面を表示し、ユーザーにどのOSまたはカーネルバージョンで起動するかを選択させます。このメニューの外観や挙動はカスタマイズ可能です。
- タイムアウト: ユーザーが何も選択しない場合に、何秒後にデフォルトのOSを起動するかを設定できます。
- デフォルトエントリ: タイムアウト時に自動起動するエントリを指定できます。
- メニュー非表示: シングルブート環境などでは、メニューを完全に非表示にして迅速に起動させる設定も可能です。
- テーマ: 背景画像、フォント、色などを変更してメニュー画面をカスタマイズできます。
3.6. セキュリティ機能
GRUBメニューや、特定の起動エントリにパスワードを設定することができます。これにより、権限のないユーザーがシステムを起動したり、起動オプションを変更してシステムにアクセスしたりすることを防ぐことができます。シングルユーザーモードへのアクセス制限などに有効です。
3.7. GRUBコマンドラインインターフェース
GRUBメニューで ‘c’ キーを押すと、より強力なGRUBのコマンドラインインターフェースに入ることができます。ここでは、ファイルシステムの探索、モジュールのロード、カーネルやinitramfsの手動ロード、そしてOSの起動といった様々な操作が可能です。これは、自動起動に失敗した場合に手動でシステムを起動させたり、問題の原因を診断したりする際に非常に役立ちます。
4. GRUBの動作原理:起動シーケンスを追う
GRUBが実際にどのように動作し、OSを起動するのかを理解するために、システム起動からOS起動までのシーケンスを詳しく見ていきましょう。GRUB 2は、BIOSベースのシステムとUEFIベースのシステムでロードされる最初の部分が異なりますが、その後の動作原理はほぼ同じです。
4.1. BIOSベースの起動シーケンス
- BIOS起動: マザーボードのBIOSが起動し、ハードウェアの初期化、POST (Power-On Self Test) を行います。
- ブートデバイスの選択: BIOS設定に基づいて、OSをロードするブートデバイス(通常はHDD/SSD)が選択されます。
- MBR読み込み: BIOSは選択されたディスクの先頭セクタ、MBR (Master Boot Record) を読み込み、そこに格納されている最初のプログラム(512バイト)を実行します。
- GRUB Stage 1: MBRに格納されているのは、GRUB Stage 1 と呼ばれる非常に小さなプログラムです。Stage 1は非常に限定された機能しか持たず、主に次のステージである Stage 1.5 をディスク上の決まった場所(通常はMBRの直後、または
/boot
パーティションの開始部分)から読み込んで実行することだけを目的としています。 - GRUB Stage 1.5: Stage 1.5 は、Stage 1 よりも多くのファイルシステムドライバなどを含んでいます。Stage 1.5 の役割は、
/boot
パーティションなどの特定の場所にある/boot/grub/core.img
というファイルを読み込んで実行することです。 - GRUB Stage 2 (core.img):
core.img
は、GRUB 2の核となる部分です。この中に、ほとんどのモジュールや、ファイルシステムドライバなどが含まれています。core.img
が起動すると、GRUBは本格的に動作を開始し、/boot/grub/grub.cfg
という設定ファイルを読み込もうとします。 grub.cfg
の読み込み: GRUBはgrub.cfg
に書かれた設定(メニューエントリ、カーネルパラメータ、タイムアウトなど)を読み込みます。- GRUBメニュー表示: 必要に応じて、GRUBメニューが表示されます。
- カーネルとinitramfsのロード: ユーザーがエントリを選択するか、タイムアウトが発生すると、
grub.cfg
に記述されたパスに従って、Linuxカーネル (vmlinuz-*
) と初期RAMディスク (initramfs-*
) がメモリに読み込まれます。 - OS起動: GRUBはロードしたカーネルに制御を渡し、カーネルが実行を開始します。カーネルはinitramfsを展開し、そこで初期化処理を行い、最終的に実際のルートファイルシステムをマウントして、
init
またはsystemd
などのプロセスを起動し、OSの起動が完了します。
4.2. UEFIベースの起動シーケンス
UEFIシステムではMBRは使われず、代わりに ESP (EFI System Partition) を使用します。
- UEFI起動: マザーボードのUEFIファームウェアが起動し、ハードウェアの初期化を行います。
- ブートエントリの選択: UEFI設定(NVRAMに保存されている)に基づいて、起動するOSまたはブートローダーが選択されます。
- ESPからのブートローダー実行: UEFIはESPパーティション(FAT32形式が多い)をマウントし、UEFI設定で指定されたパスにある
.efi
ファイルを実行します。Linuxディストリビューションの場合、これは通常/boot/efi/EFI/<ディストリビューション名>/grubx64.efi
のようなパスにあるGRUBのUEFIアプリケーションです。 - GRUB Stage 2 (core.img):
grubx64.efi
は、/boot/grub/grub.cfg
を読み込むために必要な最低限の機能(ファイルシステムドライバなど)を含んでいるか、または/boot/grub/core.img
をロードします。UEFIの場合、core.img
は必須ではありませんが、多くのディストリビューションは共通の仕組みとして使用しています。 grub.cfg
の読み込み:/boot/grub/grub.cfg
が読み込まれます。- GRUBメニュー表示: 必要に応じて、GRUBメニューが表示されます。
- カーネルとinitramfsのロード: カーネルとinitramfsがメモリに読み込まれます。UEFIの場合、カーネルは EFI Hand-off Protocol を通じて制御を受け取ります。
- OS起動: GRUBはロードしたカーネルに制御を渡します。
BIOSとUEFIで最初のステップは異なりますが、GRUB本体が起動して grub.cfg
を読み込み、カーネルとinitramfsをロードして起動する後半のプロセスは共通です。
4.3. GRUBのファイル構造と配置場所
GRUB 2に関連する重要なファイルやディレクトリは主に以下の場所にあります。
/boot/grub/
: GRUBのコアファイル、モジュール、設定ファイルが格納される主要なディレクトリです。grub.cfg
: GRUBのメイン設定ファイルです。手動での編集は推奨されません。通常はupdate-grub
コマンドによって自動生成されます。<アーキテクチャ>/
(例:i386-pc
,x86_64-efi
): 各アーキテクチャ向けのモジュール (.mod
ファイル) やコアイメージが格納されています。themes/
: メニューテーマが格納されています。
/etc/default/grub
: ユーザーがGRUBの基本的な設定を変更するためのファイルです。このファイルを編集し、update-grub
を実行することで、その設定がgrub.cfg
に反映されます。-
/etc/grub.d/
:update-grub
コマンドがgrub.cfg
を生成する際に実行されるスクリプトが格納されています。これらのスクリプトが、/etc/default/grub
の設定を読み込み、システム上のカーネルや他のOSを検出して、grub.cfg
の内容を組み立てます。00_header
: GRUBメニューの全体的な設定(タイムアウト、デフォルトなど)を生成します。/etc/default/grub
の設定を読み込みます。10_linux
: 現在実行中のLinuxシステムのカーネルとinitramfsのエントリを生成します。20_linux_xen
: Xenカーネルのエントリを生成します(Xenを使用している場合)。30_os-prober
:os-prober
コマンドを実行し、他のOS(Windows、他のLinuxなど)を検出してエントリを生成します。40_custom
: ユーザーが手動で追加したいカスタムエントリを記述するためのファイルです。
update-grub
コマンド(多くのDebian/Ubuntu系システムで使用)や grub-mkconfig -o /boot/grub/grub.cfg
コマンド(Fedora/CentOS/RHEL系などで使用)を実行すると、/etc/grub.d/
内のスクリプトが実行され、それらが結合されて /boot/grub/grub.cfg
が上書き生成されます。スクリプトのファイル名の先頭の数字は実行順序を示しています。
5. GRUBの設定方法:grub.cfg
を自在に操る(間接的に)
GRUBの設定は、原則として /boot/grub/grub.cfg
を直接編集するのではなく、/etc/default/grub
と /etc/grub.d/
ディレクトリ内のスクリプトを編集し、update-grub
コマンドで反映させるのが正しい方法です。これにより、カーネルアップデートなどで grub.cfg
が再生成されても、ユーザーの設定が失われることがありません。
5.1. /etc/default/grub
の編集
このファイルは、GRUBメニューの表示に関する基本的な設定や、カーネルに渡すデフォルトのパラメータなどを記述します。テキストエディタ(nano, vimなど)を使って編集します。管理者権限が必要です。
bash
sudo nano /etc/default/grub
主な設定項目とその意味は以下の通りです(システムやGRUBのバージョンによって存在する項目は異なります)。
GRUB_DEFAULT=0
: デフォルトで起動するメニューエントリを指定します。0
はメニューの一番上のエントリを意味します。エントリ名(引用符付き)やsaved
を指定することもできます(saved
にすると、前回起動したエントリを覚えています)。GRUB_TIMEOUT=5
: メニューを表示する秒数です。この時間内にユーザーが操作しないと、GRUB_DEFAULT
で指定されたエントリが自動起動します。-1
にすると、無期限にメニューが表示され続けます。0
にすると、メニューは表示されずに即座にデフォルトエントリが起動します(GRUB_HIDDEN_TIMEOUT
などとの組み合わせに注意)。GRUB_DISTRIBUTOR=
“lsb_release -i -s 2> /dev/null || echo Debian"
: GRUBメニューに表示されるディストリビューション名を指定します。多くの場合は自動で設定されています。GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
: 通常起動時のLinuxカーネルに渡されるデフォルトのパラメータです。quiet
: 起動時のメッセージを少なくします。splash
: 起動中のスプラッシュスクリーン(グラフィカルなアニメーションなど)を有効にします。- トラブルシューティング時には、
quiet
やsplash
を削除したり、nomodeset
(グラフィックドライバの問題回避),single
(シングルユーザーモード),init=/bin/bash
(initプロセスをbashに置き換える) などを追加したりします。
GRUB_CMDLINE_LINUX=""
:GRUB_CMDLINE_LINUX_DEFAULT
に追加して、すべてのLinuxエントリ(通常起動、リカバリモードなど)に常に渡されるパラメータです。#GRUB_HIDDEN_TIMEOUT=0
: コメントアウトされていますが、これを有効にすると、メニュー表示前に指定した秒数だけ待機し、その間に特定のキー(通常はShiftキー)が押されなかった場合にメニューを表示せずにデフォルトエントリを起動します。GRUB_TIMEOUT_STYLE=hidden
と組み合わせて使用します。GRUB_TIMEOUT_STYLE=menu
: タイムアウトが発生するまでメニューを表示します。他にcountdown
(タイマーを表示),hidden
(メニューを隠して待機) などがあります。hidden
を使う場合はGRUB_TIMEOUT
またはGRUB_HIDDEN_TIMEOUT
が0以外である必要があります。GRUB_UEFI_PIXFORMAT="rgbx"
: UEFIシステムでの画面表示に関する設定(ディストリビューションによっては存在しないかもしれません)。GRUB_GFXMODE=640x480
: GRUBメニューが表示される解像度を指定します。対応している解像度は環境によります。auto
にすると自動選択されます。GRUB_GFXPAYLOAD_LINUX=keep
: カーネル起動後もGRUBで設定したグラフィックモードを維持するかどうか。text
にするとテキストモードに戻ります。#GRUB_DISABLE_OS_PROBER=true
: コメントアウトを外すと、os-prober
による他のOSの自動検出を無効にできます。マルチブート環境で特定のOSをメニューに表示したくない場合などに使用します。GRUB_DISABLE_RECOVERY="true"
: コメントアウトを外すと、リカバリモードのエントリをメニューに表示しなくなります。GRUB_ENABLE_CRYPTODISK=y
: 暗号化されたディスク上の/boot
パーティションやルートパーティションから起動する場合に必要です。有効にすると、起動時にパスフレーズの入力を求められます。
設定を変更したらファイルを保存します。
5.2. 設定の反映 (update-grub
または grub-mkconfig
)
/etc/default/grub
や /etc/grub.d/
のスクリプトを編集しただけでは、その変更は有効になりません。必ず 以下のコマンドを実行して、/boot/grub/grub.cfg
を再生成する必要があります。
- Debian, Ubuntu, Mintなどの場合:
bash
sudo update-grub - Fedora, CentOS/RHEL, openSUSEなどの場合:
bash
sudo grub2-mkconfig -o /boot/grub2/grub.cfg
# UEFIシステムの場合は /boot/efi/EFI/<ディストリビューション名>/grub.cfg
# ディストリビューションによってパスが異なる場合があります。man grub-mkconfig で確認してください。
(注: 最近のディストリビューションでは/boot/grub/grub.cfg
となっている場合もあります。grub-mkconfig --help
またはドキュメントを確認してください。)
コマンドを実行すると、/etc/grub.d/
内のスクリプトが順番に実行され、その出力が結合されて新しい grub.cfg
が生成されます。コマンドの出力で、どのようなエントリが追加されたか(Linuxカーネル、リカバリモード、他のOSなど)を確認できます。
重要: /boot/grub/grub.cfg
は 自動生成されるファイル です。このファイルを直接手動で編集しても、次回 update-grub
が実行された際に上書きされてしまい、変更が失われます。カスタムエントリなどを追加したい場合は、/etc/grub.d/40_custom
ファイルを使用するのが正しい方法です。
5.3. /etc/grub.d/
を使ったカスタムエントリの追加
os-prober
が検出できないOS(例: 古いOS、特殊な構成のOS)や、特定の目的のための特別な起動エントリをGRUBメニューに追加したい場合があります。この場合は、/etc/grub.d/40_custom
ファイルを使用します。
このファイルには、他のスクリプトによって生成されるエントリとは別に、ユーザーが自由にGRUBスクリプト構文でエントリを記述できます。デフォルトの 40_custom
ファイルにはコメントで使い方の例が書かれています。
bash
sudo nano /etc/grub.d/40_custom
ファイルを開き、既存のコメントの下に以下のような形式でエントリを追加します。
“`grubconf
!/bin/sh
exec tail -n +3 $0
This file provides an easy way to add custom menu entries. Simply type them into this file.
After changing this file, run ‘update-grub’.
menuentry ‘My Custom Linux Entry’ {
set root=(hd0,msdos1) # または (hd0,gpt1)
linux /vmlinuz-5.4.0-77-generic root=/dev/sda1 ro quiet splash
initrd /initrd.img-5.4.0-77-generic
}
menuentry ‘Chainload Windows’ {
set root=(hd0,msdos1) # Windowsがインストールされているパーティションを指定
chainloader +1
}
“`
menuentry 'エントリ名' { ... }
: GRUBメニューに表示されるエントリ名を指定します。set root=(hdX,YY)
: OSがインストールされているパーティションを指定します。(hd0,msdos1)
は1番目のディスクの1番目のパーティション(BIOS/MBR)、(hd0,gpt1)
は1番目のディスクの1番目のパーティション(UEFI/GPT)を意味します。ディスクとパーティションの番号は0から始まります。linux <カーネルパス> <カーネルパラメータ>
: ロードするLinuxカーネルのパスと、カーネルに渡すパラメータを指定します。カーネルパスはroot
で指定したパーティションからの相対パスです。root=/dev/sdXY
またはroot=UUID=...
でルートファイルシステムの位置を指定する必要があります。initrd <initramfsパス>
: ロードする初期RAMディスクのパスを指定します。boot
: ロードしたカーネルとinitramfsを使ってシステムを起動します。chainloader +1
: 別のブートローダー(例: Windowsのブートマネージャー)に制御を渡します。通常、Windowsがインストールされているパーティションの先頭セクタ(またはUEFIシステムでのESP上のWindowsブートローダー)をロードして実行します。
ファイルを保存したら、忘れずに sudo update-grub
(または対応するコマンド)を実行して変更を grub.cfg
に反映させてください。
/etc/grub.d/
内のスクリプトは、ファイル名の数字が小さい順に実行されます。40_custom
は他の多くの自動生成スクリプトより後に実行されるため、追加したカスタムエントリはメニューの下の方に表示されることになります。もしカスタムエントリをメニューの一番上に表示したい場合は、ファイル名を 06_custom
のように変更することも可能ですが、既存のスクリプトとの衝突に注意が必要です。
6. GRUBメニューでの操作:トラブル時の救世主
システムの起動に問題が発生した場合や、一時的に起動オプションを変更したい場合など、GRUBメニュー自体での操作が非常に重要になります。
6.1. メニュー画面でのキー操作
GRUBメニューが表示されている間に利用できる主なキー操作は以下の通りです。
- 上下矢印キー: メニューエントリを選択します。
- Enterキー: 選択しているエントリでシステムを起動します。
- ‘e’ キー: 選択しているエントリの起動コマンドを編集します。一時的な変更であり、システムを再起動すると元の設定に戻ります。
- ‘c’ キー: GRUBコマンドラインインターフェースに移行します。
- ‘Esc’ キー: タイムアウト中でもメニューを閉じずに表示し続けます(または、メニュー非表示設定時にメニューを表示させます)。
6.2. 起動エントリの編集 (‘e’ キー)
これは、起動トラブル時に最もよく使う機能の一つです。例えば、特定のカーネルパラメータが必要なのにデフォルト設定に含まれていない場合や、quiet splash
のせいで起動時のエラーメッセージが見えない場合などに利用します。
GRUBメニューで起動したいエントリを選択し、’e’ キーを押すと、以下のような画面が表示されます(内容はシステムによって異なります)。
“`grubconf
setparams ‘Ubuntu’
insmod gzio
if [ x$grub_platform = xefi ]; then insmod part_gpt; insmod ext2; else insmod part_msdos; insmod ext2; fi
set root='hd0,gpt2' # パーティションの指定
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root 1234abcd-5678-efgh-ijkl-mnopqrstuvwx # UUIDによるパーティション特定
fi
linux /boot/vmlinuz-5.4.0-77-generic root=UUID=1234abcd-5678-efgh-ijkl-mnopqrstuvwx ro quiet splash # カーネルパスとパラメータ
initrd /boot/initrd.img-5.4.0-77-generic # initramfsパス
“`
ここで、テキストカーソルを移動させて内容を編集できます。
linux
で始まる行が、ロードするカーネルと、それに渡すカーネルパラメータです。initrd
で始まる行が、ロードするinitramfsのパスです。
例:起動時のメッセージを詳しく見たい場合、quiet splash
を削除します。
linux /boot/vmlinuz-5.4.0-77-generic root=UUID=... ro quiet splash
↓
linux /boot/vmlinuz-5.4.0-77-generic root=UUID=... ro
例:シングルユーザーモードで起動したい場合、行の末尾に single
を追加します。
linux /boot/vmlinuz-5.4.0-77-generic root=UUID=... ro quiet splash
↓
linux /boot/vmlinuz-5.4.0-77-generic root=UUID=... ro quiet splash single
編集が終わったら、通常は F10 キー または Ctrl+X キー を押すと、編集した内容でシステムが起動します。Esc キーで編集を破棄してメニューに戻ります。
6.3. GRUBコマンドラインインターフェース (‘c’ キー)
GRUBメニューで ‘c’ キーを押すと、より低レベルなGRUBのコマンドラインに入ります。プロンプトは通常 grub>
または grub-rescue>
です。これは、grub.cfg
が正常に読み込めなかった場合や、メニューからの起動に失敗した場合に、手動でシステムを起動させたり、トラブルシューティングを行ったりするための強力なツールです。
grub-rescue>
プロンプトは grub>
プロンプトよりも機能が限定されています(例えば、ほとんどのモジュールがロードされていないためファイルシステムを認識できないことが多い)。
GRUBコマンドラインでの主なコマンド:
ls
: ディスクやパーティションの内容を表示します。ls (hd0,gpt1)/
のように指定すると、指定したパーティションのルートディレクトリの内容が表示されます。補完機能(Tabキー)が使えます。set
: GRUBの環境変数を設定します。例:set root=(hd0,gpt2)
unset
: GRUBの環境変数を解除します。insmod <module>
: モジュールをロードします。例:insmod ext2
(ext2/ext3/ext4ファイルシステムを読み込むため),insmod normal
(normal
コマンドを使うため)linux <カーネルパス> [カーネルパラメータ]
: ロードするLinuxカーネルのパスとパラメータを指定します。例:linux /boot/vmlinuz-5.15.0-56-generic root=/dev/sda2 ro
initrd <initramfsパス>
: ロードするinitramfsのパスを指定します。例:initrd /boot/initrd.img-5.15.0-56-generic
boot
: ロード済みのカーネルとinitramfsでシステムを起動します。configfile <path>
: 指定したgrub.cfg
ファイルを読み込んで実行します。これは、GRUBレスキューモードから正規のメニューに戻る際などに使用します。例:configfile (hd0,gpt2)/boot/grub/grub.cfg
search --set=root --fs-uuid <UUID>
: 指定したUUIDを持つパーティションを探し、そのパーティションをroot
環境変数に設定します。chainloader <path>
: 指定したパスのプログラム(通常は別のブートローダー)をロードします。chainloader +1
は、指定したパーティションの先頭セクタをロードする古いBIOSスタイルのコマンドですが、UEFI環境でもWindowsのブートローダーを起動するために使われることがあります。
GRUBレスキューモードからの復旧例:
grub-rescue>
プロンプトが表示された場合、通常はGRUBが normal
モジュールや grub.cfg
を見つけられていません。
ls
コマンドを使って、どのパーティションに/boot
ディレクトリがあるか、またはルートファイルシステムがあるかを特定します。
grub-rescue> ls
(hd0) (hd0,gpt3) (hd0,gpt2) (hd0,gpt1) ...- 各パーティションの中身を見て、
/boot
ディレクトリを探します。
grub-rescue> ls (hd0,gpt2)/
./ ../ lost+found/ boot/ etc/ home/ ... # /boot/ がある!
または/boot/grub
ディレクトリを探します。
grub-rescue> ls (hd0,gpt2)/boot/grub/
./ ../ fonts/ grub.cfg grubenv locale/ ... # grub.cfg がある!
この例では/boot
が/dev/sda2
(UEFI/GPTシステムでは(hd0,gpt2)
) にあると特定できました。 - GRUBのrootデバイスとprefix(モジュールや設定ファイルの場所)を設定します。
grub-rescue> set prefix=(hd0,gpt2)/boot/grub
grub-rescue> set root=(hd0,gpt2) normal
モジュールをロードします。
grub-rescue> insmod normal
normal
モジュールがロードされると、通常のGRUBメニューが表示されたり、normal
コマンドが使えるようになったりします。これでシステムを起動できるかもしれません。
grub-rescue> normal # 通常のGRUBメニューが表示されるか、起動プロセスが続行される
- これで起動できた場合は、ログイン後に
sudo grub-install /dev/sda
(BIOS) またはsudo grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=GRUB
(UEFI) とsudo update-grub
を実行してGRUBを修復します。
もし insmod normal
が失敗する場合は、他の必要なモジュール (linux.mod
, ext2.mod
など) も手動でロードする必要があるかもしれません。これはかなり高度な操作になります。
7. GRUBのインストールと再インストール:システム起動の要を修復する
GRUBはシステムの起動に不可欠な部分です。GRUBが破損したり、他のOSに上書きされたり、ディスク構成を変更したりした場合には、GRUBを再インストールまたは修復する必要があります。
7.1. なぜGRUBの再インストールが必要か?
- Windowsなどをインストールした: Windowsのインストーラーは、通常Linuxのブートローダーを考慮せず、MBR(BIOS)やESP(UEFI)を自身のもので上書きします。これにより、次回起動時に直接Windowsが起動し、GRUBメニューが表示されなくなります。
- ディスクを交換/追加した: ディスクの順序が変わったり、新しいディスクを追加したりすると、GRUBの設定(特に
grub.cfg
内のデバイス指定)が古くなり、正常に起動できなくなることがあります。 - MBRやESPのブートローダー部分が破損した: ディスク障害や不適切な操作によって、GRUBの Stage 1 /
core.img
/grubx64.efi
部分が壊れることがあります。 - GRUBの設定ファイルを誤って削除/破損した: 特に
/boot/grub/grub.cfg
や関連ファイルが壊れた場合。
7.2. GRUBの再インストール方法(ライブメディアを使用)
GRUBが完全に破損してシステムが起動できない場合は、LinuxのライブCD/USBメディアを使ってシステムを起動し、chroot環境を構築してGRUBを再インストールするのが最も一般的な方法です。
ここでは、UbuntuのライブUSBを例に手順を説明します。他のディストリビューションでも基本的な流れは同じです。
- ライブメディアで起動: LinuxのライブCD/USBでコンピューターを起動し、「Try Ubuntu without installing」などのオプションを選択して、デスクトップ環境に入ります。
- パーティションの特定: ターミナルを開き、
sudo fdisk -l
またはlsblk
コマンドを使って、システムがインストールされているルートパーティション (/
) と、もし分けている場合は/boot
パーティション、そしてUEFIシステムの場合はESP (EFI System Partition) を特定します。- 例: ルートパーティションが
/dev/sda2
、/boot
が/dev/sda1
(BIOS)、ESPが/dev/sda1
(UEFI) とする。
- 例: ルートパーティションが
- パーティションのマウント: 特定したパーティションをライブシステムの
/mnt
ディレクトリ以下にマウントします。/boot
パーティションを分けている場合は、ルートパーティションをマウントした後にその中に/boot
をマウントします。UEFIシステムの場合は、ルートパーティションをマウントした後、その中の/boot/efi
にESPをマウントします。- ルートパーティションのマウント:
bash
sudo mount /dev/sda2 /mnt /boot
パーティションのマウント (分けている場合):
bash
sudo mount /dev/sda1 /mnt/boot- ESPのマウント (UEFIシステムの場合):
bash
sudo mount /dev/sda1 /mnt/boot/efi
- ルートパーティションのマウント:
- chroot環境の準備: chroot環境でGRUBのコマンドを実行するために、必要なディレクトリをバインドマウントします。
bash
for i in /dev /dev/ptmx /proc /sys /run; do sudo mount -B $i /mnt$i; done
(Note:/run
は一部のシステムで不要かもしれません) - chroot環境に入る:
bash
sudo chroot /mnt
これで、プロンプトが変わり、ライブシステムではなく、インストールされているシステムの中にいるかのようにコマンドを実行できるようになります。 -
GRUBの再インストール: ここでGRUBを再インストールします。コマンドはBIOSとUEFIで異なります。
- BIOSシステム: GRUBをディスクのMBRにインストールします。デバイスファイル名(例:
/dev/sda
)を指定し、パーティション番号は付けません。
bash
grub-install /dev/sda
エラーが出なければ成功です。Installation finished. No error reported.
のようなメッセージが表示されます。 - UEFIシステム: GRUBをESPにインストールし、UEFIブートエントリを作成します。
/boot/efi
はESPがマウントされている場所、GRUB
はUEFI設定に登録されるブートローダーの名前です。
bash
grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=GRUB --recheck
(--recheck
は、デバイスマップファイルを再生成します。)
- BIOSシステム: GRUBをディスクのMBRにインストールします。デバイスファイル名(例:
-
GRUB設定ファイルの再生成: インストールされているシステム内の情報を元に
grub.cfg
を再生成します。
bash
update-grub
# または grub-mkconfig -o /boot/grub/grub.cfg (環境による)
このコマンドが、インストールされているカーネルや他のOSを検出し、新しいgrub.cfg
を生成します。 -
chroot環境を終了し、アンマウント:
bash
exit
sudo umount /mnt/boot/efi # UEFIの場合
sudo umount /mnt/boot # /boot を分けている場合
for i in /dev /dev/ptmx /proc /sys /run; do sudo umount /mnt$i; done
sudo umount /mnt - 再起動: ライブメディアを取り出し、コンピューターを再起動します。GRUBメニューが正常に表示され、システムが起動するか確認します。
7.3. LVM, RAID, 暗号化ディスクへのインストール
GRUB 2は、LVM、ソフトウェアRAID (mdadm)、およびLUKSなどで暗号化されたディスク上のファイルシステムからも起動できます。ただし、GRUBをインストールする際や設定する際には、これらの構成をGRUBが認識できるように注意が必要です。
- LVM/RAID: これらの上に
/boot
やルートファイルシステムがある場合、grub-install
は通常自動的に必要なモジュールを組み込んでくれます。しかし、場合によっては特別なオプションや設定が必要になることもあります。 - 暗号化ディスク:
/boot
が暗号化されている場合、GRUBは起動時にパスフレーズを要求する必要があります。/etc/default/grub
でGRUB_ENABLE_CRYPTODISK=y
を設定し、update-grub
を実行することが必要です。ルートファイルシステムだけが暗号化されている場合は、GRUBは/boot
からカーネルとinitramfsを読み込み、initramfs(具体的にはその中のcriptsetup関連のスクリプト)がパスワード入力を処理します。
これらの高度な構成では、インストールの手順がより複雑になる場合があるため、使用しているディストリビューションのドキュメントや公式ガイドを参照することが強く推奨されます。
8. GRUBのトラブルシューティング:起動できない!どうすれば?
システムが起動しない原因は多岐にわたりますが、GRUBに関する問題も少なくありません。ここでは、GRUB関連の一般的なトラブルとその対処法を解説します。
8.1. GRUBレスキューモード (grub-rescue>
)
前述のように、grub-rescue>
プロンプトが表示される最も一般的な原因は、GRUBの Stage 2 (core.img) が grub.cfg
ファイルや必要なモジュール(特に normal.mod
)を見つけられないことです。これは、/boot
パーティションの位置が変わったり、ファイルシステムが破損したり、grub.cfg
が削除/移動されたりした場合に発生します。
対処法:
ls
コマンドでパーティション構造を確認し、システムがインストールされているパーティション、特に/boot
ディレクトリ(またはルートディレクトリ直下の/boot
)があるパーティションを特定します。
grub-rescue> ls
(hd0) (hd0,msdos1) (hd0,msdos2) ...
grub-rescue> ls (hd0,msdos2)/
./ ../ bin/ boot/ ... # boot ディレクトリがある!- 特定したパーティションをGRUBのrootとして設定し、GRUBモジュールが格納されているディレクトリ (
/boot/grub
) をprefixとして設定します。
grub-rescue> set root=(hd0,msdos2)
grub-rescue> set prefix=(hd0,msdos2)/boot/grub - 必要なモジュールをロードします。まず
normal
モジュールを試します。
grub-rescue> insmod normal
normal
モジュールがロードできれば、normal
コマンドを実行します。
grub-rescue> normal
これにより、通常のGRUBメニューが表示されるか、システムが起動するはずです。
重要: grub-rescue>
ではファイルシステムドライバが限られていることが多いです。もし insmod normal
や ls (hdX,YY)/
がエラーになる場合(例: unknown filesystem
)、必要なファイルシステムモジュール(例: insmod ext2
)を先にロードする必要があるかもしれません。しかし、どのモジュールが必要かを知り、それを見つけるのは困難な場合があります。
もし上記の手順でシステムを起動できた場合は、ログイン後に 必ず sudo grub-install ...
と sudo update-grub
を実行してGRUBを完全に修復してください。起動できない場合は、ライブメディアを使った修復が必要になります(前述の「7.2. GRUBの再インストール方法」を参照)。
8.2. GRUBメニューが表示されない、または間違ったOSが起動する
- 原因: WindowsなどをインストールしたことによりMBR/ESPが上書きされた可能性が高いです。
- 対処法: ライブメディアを使用して、GRUBを再インストールします (「7.2. GRUBの再インストール方法」参照)。
8.3. GRUBメニューに特定のOSが表示されない (特にWindows)
- 原因:
/etc/default/grub
でGRUB_DISABLE_OS_PROBER=true
が設定されている。os-prober
がインストールされていないか、正しく実行されていない。- 他のOSがインストールされているパーティションにアクセスできない(例: ファイルシステム破損、ディスク認識問題)。
- 対処法:
/etc/default/grub
を編集し、GRUB_DISABLE_OS_PROBER=true
がコメントアウトされているか、存在しないことを確認します。os-prober
パッケージがインストールされているか確認し、されていなければインストールします (例:sudo apt update && sudo apt install os-prober
またはsudo dnf install os-prober
)。sudo update-grub
を実行して、設定を反映し、os-prober
を実行させます。コマンドの出力に、検出された他のOSが表示されるか確認します。- それでも検出されない場合は、
/etc/grub.d/40_custom
を使って手動でWindowsのエントリを追加することを検討します (「5.3. カスタムエントリの追加」参照)。Windowsのエントリは通常chainloader +1
を使います。
8.4. カーネルアップデート後に起動しなくなった、または古いカーネルしか起動しない
- 原因:
- カーネルやinitramfsのファイルが正しくインストールされなかった。
update-grub
がカーネルアップデート後に自動実行されなかった、または失敗した。/boot
パーティションの空き容量不足。
- 対処法:
- GRUBメニューが表示されるなら、古いカーネルバージョンを選択して起動してみます。古いカーネルで起動できれば、システム自体は正常である可能性が高いです。
- システムが起動したら、以下のコマンドを実行してGRUB設定を更新します。
bash
sudo update-grub df -h /boot
コマンドで/boot
パーティションの空き容量を確認します。容量が不足している場合は、古いカーネルイメージなどを削除して容量を確保し、再度sudo update-grub
を実行します。- カーネルやinitramfsのパッケージが破損している可能性も考慮し、必要に応じて再インストールします (例:
sudo apt reinstall linux-image-generic linux-headers-generic
またはsudo dnf reinstall kernel kernel-core
)。その後sudo update-grub
を実行します。
8.5. UUID/PARTUUIDの不一致による起動失敗
- 原因:
/etc/fstab
や GRUB設定 (grub.cfg
) でパーティションをUUIDやPARTUUIDで指定している場合に、ディスクのクローン、パーティションの再作成などでUUID/PARTUUIDが変わってしまった。 - 対処法:
- GRUBメニューが表示されるなら ‘e’ キーで起動エントリを編集し、
root=UUID=...
やroot=PARTUUID=...
の部分を、現在の正しいUUID/PARTUUIDまたはデバイス名(例:/dev/sda2
)に一時的に変更して起動を試みます。正しいUUID/PARTUUIDは、GRUBコマンドラインでls -l (hdX,YY)/
や、ライブメディアで起動してsudo blkid
コマンドなどで確認できます。 - システムが起動したら、
/etc/fstab
を編集してUUID/PARTUUIDを修正します。 sudo update-grub
を実行して、grub.cfg
内のUUID/PARTUUIDも更新します。
- GRUBメニューが表示されるなら ‘e’ キーで起動エントリを編集し、
8.6. GRUBテーマが適用されない、または画面表示がおかしい
- 原因: GRUBが使用できるグラフィックドライバや解像度の問題、またはテーマファイルが見つからない。
- 対処法:
/etc/default/grub
のGRUB_GFXMODE
やGRUB_GFXPAYLOAD_LINUX
設定を確認・修正します。互換性の高い解像度(例:640x480
)を試してみます。sudo update-grub
を実行して設定を反映します。- GRUBコマンドラインで
vbeinfo
またはvideoinfo
コマンドを実行し、GRUBが認識しているグラフィックモードと解像度を確認できます。 - テーマを使用している場合は、
/boot/grub/themes/<テーマ名>/theme.txt
や関連ファイルが正しく配置されているか確認します。
トラブルシューティングは、原因を切り分け、一つずつ可能性を潰していくことが重要です。エラーメッセージ(画面に表示されるものや、GRUBコマンドラインでの出力)は貴重な情報源となります。
9. GRUBの高度な使い方:さらなるカスタマイズと機能
GRUBはさらに高度な使い方にも対応しています。
9.1. テーマの適用
GRUBメニューの見た目を大きく変えることができます。インターネット上には様々なGRUBテーマが公開されています。
- 使用したいGRUBテーマをダウンロードし、通常は
/boot/grub/themes/
ディレクトリ以下に展開します。 /etc/default/grub
を編集し、以下の行を追加または編集します。
grubconf
GRUB_TIMEOUT_STYLE=countdown # または menu
GRUB_TIMEOUT=5
GRUB_THEME="/boot/grub/themes/<テーマ名>/theme.txt"
<テーマ名>
はテーマを配置したディレクトリ名に置き換えてください。sudo update-grub
を実行して設定を反映します。
9.2. パスワード保護
GRUBメニュー全体、または特定の起動エントリにパスワードを設定できます。
- 以下のコマンドでパスワードハッシュを生成します。パスワードを入力するとハッシュが表示されます。
bash
sudo grub-mkpasswd-pbkdf2 - 生成されたハッシュ(
grub.pbkdf2.sha512....
から始まる文字列)をコピーします。 /etc/grub.d/40_custom
ファイル(または他の適切なスクリプトファイル)を編集し、ファイルの先頭または関連するmenuentry
の前に以下の行を追加します。
grubconf
set superusers="<ユーザー名>"
password_pbkdf2 <ユーザー名> <コピーしたハッシュ>
<ユーザー名>
は任意のユーザー名に置き換えてください。複数のユーザーをスペース区切りで指定できます (set superusers="user1 user2"
)。- これでGRUBメニューにアクセスしたり、パスワードで保護されたエントリを選択したりする際に、ユーザー名とパスワードの入力を求められるようになります。
sudo update-grub
を実行して設定を反映します。
メニュー全体ではなく、特定の menuentry
ブロックの中に password_pbkdf2
行を書くことで、そのエントリだけをパスワード保護することも可能です。
9.3. ネットワークブート (PXE)
GRUBはPXE (Preboot Execution Environment) を利用したネットワークブートにも対応しています。これにより、ネットワーク上のサーバーからGRUBをロードし、OSを起動することができます。これは、ディスクを持たないシンクライアント環境や、大量のPCに同一環境を展開する場合などに有用です。
PXEサーバー側でGRUBの設定を行い、クライアントがネットワークからGRUBイメージをダウンロードできるように構成する必要があります。これは通常、DHCPサーバー、TFTPサーバー、そしてGRUBのネットワークブート用イメージ (core.img
のPXEバージョンなど) の設定を伴う、やや複雑な作業です。
10. GRUBのバージョン管理と代替ブートローダー
GRUB 2は現在主流のブートローダーですが、その進化や、他の選択肢についても簡単に触れておきましょう。
10.1. GRUB Legacyからの移行
既にほとんどのモダンなLinuxディストリビューションはGRUB 2を採用しており、GRUB Legacyを使用しているシステムは少数派となりました。GRUB LegacyからGRUB 2への移行は、通常はディストリビューションのアップグレードプロセスの一部として自動的に行われるか、あるいは手動でGRUB 2をインストールすることで実現します。設定ファイルの構文が大きく異なるため、手動での移行には注意が必要です。
10.2. GRUB 2の今後の開発
GRUB 2は現在も積極的に開発が続けられており、新しいハードウェアへの対応、セキュリティ機能の強化、バグ修正などが行われています。アップデートは通常のシステムアップデートに含まれて提供されます。
10.3. 代替ブートローダー
GRUB以外にも、Linuxで使用できるブートローダーは存在します。
- systemd-boot (旧 Gummiboot): UEFIシステム専用のシンプルなブートローダーです。GRUBほど多機能ではありませんが、設定が非常に簡単で高速な起動が特徴です。systemdを採用しているArch LinuxやFedoraなどで選択肢として使われることがあります。
- rEFInd: UEFIシステム向けのブートマネージャーです。インストールされているすべてのUEFI対応OSやブートローダー(Windows, macOS, Linuxカーネル自体, GRUBなど)を自動的に検出してメニューに表示します。設定ファイルはシンプルで、手動でのカスタマイズも容易です。マルチブート環境を頻繁に変更する場合などに便利です。
- Syslinux / ISOLINUX: 主にCD/DVDやUSBメモリからの起動に使われる軽量なブートローダーです。
これらのブートローダーは、GRUBとは異なる設計思想やターゲットを持っており、それぞれにメリット・デメリットがあります。しかし、多くのLinuxユーザーにとっては、GRUBが標準で提供する機能で十分に事足りることが多いでしょう。
11. まとめ:GRUBマスターへの道
この記事では、LinuxのブートローダーであるGRUBについて、その役割、機能、動作原理、設定方法、トラブルシューティング、そして高度な使い方まで、広範囲にわたって解説しました。
GRUBは、PCの電源を入れてからLinuxが使えるようになるまでの「魔法」のようなプロセスを理解する上で、非常に重要な要素です。単にOSを起動するだけでなく、マルチブート、起動パラメータの調整、システム復旧など、様々な場面でその真価を発揮します。
/etc/default/grub
を編集して update-grub
を実行するという基本的な流れをマスターすることから始め、必要に応じて /etc/grub.d/40_custom
を使ったカスタムエントリの追加や、GRUBメニューでの一時的な起動オプション変更などを試してみてください。
また、システムが起動しなくなるという最悪のシナリオに備えて、ライブメディアからのGRUB修復手順も頭に入れておくことは、Linuxユーザーにとって非常に心強いスキルとなるでしょう。
GRUBは奥が深く、ここに書ききれなかった機能や細かい設定オプションもたくさんあります。さらに詳しく知りたい場合は、以下のリソースを参照することをお勧めします。
- GRUB Manual: GRUBの公式ドキュメントは非常に詳細で網羅的です(ただし英語です)。
https://www.gnu.org/software/grub/manual/grub/ - man pages: ターミナルで
man grub.cfg
やman update-grub
(またはman grub-mkconfig
) などを実行すると、各コマンドやファイル形式の詳細な説明が表示されます。 - 各種Linuxディストリビューションのドキュメント: ディストリビューションによっては、GRUBに関する独自の解説や推奨設定が提供されています。
GRUBを使いこなすことは、Linuxシステムをより深く理解し、自在に操るための一歩です。この記事が、あなたのGRUBマスターへの道のりの助けとなれば幸いです。