Linuxシステムを扱う上で「ブートローダー」の知識は欠かせません。
特にGRUBはLinuxの標準的なブートローダーとして広く使われており、その仕組みを理解することはシステム管理の基礎となります。
本記事では、Linuxにおけるブートローダーの仕組み・GRUBとLILOの違いを、GNU GRUB・システム起動・マルチブート・設定ファイルなどの観点から詳しく解説していきます。
Linux初心者から中級者まで、システム起動の仕組みを理解したい方にぜひ参考にしていただける内容です。
LinuxにおけるブートローダーはGRUBが主流:基本的な仕組みと役割
それではまず、LinuxにおけるブートローダーとGRUBの基本的な仕組みについて解説していきます。
Linuxシステムの起動プロセスでは、BIOS/UEFIの初期化後にブートローダーが実行され、Linuxカーネルをメモリに展開してシステムを起動させます。
現在のLinuxで最も広く使われるブートローダーがGRUB(GNU GRand Unified Bootloader)です。
GRUBはGNUプロジェクトによって開発されたオープンソースのブートローダーであり、現在はGRUB2が主流となっています。
| 起動ステップ | 担当 | 処理内容 |
|---|---|---|
| 電源ON | ハードウェア | POST(自己診断) |
| ファームウェア | BIOS/UEFI | ハードウェア初期化・起動デバイス選択 |
| 第1段階ブートローダー | GRUB Stage1 | MBR/EFIパーティションから読み込み |
| 第2段階ブートローダー | GRUB Stage2 | 設定ファイル読み込み・メニュー表示 |
| カーネル起動 | Linuxカーネル | initramfs展開・システム初期化 |
GRUBは2段階構造になっており、MBR(マスターブートレコード)またはEFIパーティションに格納された第1段階が/boot/grub/に格納された第2段階を読み込む仕組みです。
GRUBの最大の特徴は、複数のOSを選択して起動できる「マルチブート」機能です。
LinuxとWindowsを共存させたデュアルブート環境でも、GRUBのメニューから起動するOSを選択できます。
GRUBの設定ファイルと基本的なカスタマイズ方法
続いては、GRUBの設定ファイルと基本的なカスタマイズ方法について確認していきます。
GRUBの動作はテキストベースの設定ファイルで制御されます。
主要な設定ファイルの場所と役割は以下の通りです。
【GRUB2の主要設定ファイル】
/etc/default/grub:GRUBの基本設定(タイムアウト・デフォルトOS・カーネルパラメータなど)
/etc/grub.d/:GRUBメニューエントリを生成するスクリプト群
/boot/grub/grub.cfg:実際に使用されるGRUBの設定ファイル(自動生成)
※grub.cfgは直接編集せず、update-grubコマンドで再生成するのが正しい方法
【/etc/default/grubの主要設定項目例】
GRUB_DEFAULT=0 # デフォルトで起動するエントリ番号
GRUB_TIMEOUT=5 # メニュー表示時間(秒)
GRUB_CMDLINE_LINUX=”” # カーネルに渡すパラメータ
設定変更後は必ず:sudo update-grub を実行して反映させる
設定を変更したあとに「sudo update-grub」コマンドを実行しないと変更が反映されない点は重要なポイントです。
grub.cfgは自動生成されるファイルであり、直接編集してもupdate-grub実行時に上書きされてしまいます。
GRUBのカスタマイズでは、起動メニューのテーマ変更・タイムアウト時間の調整・デフォルト起動OSの変更なども/etc/default/grubの編集と再生成で行えます。
GRUBとLILOの違い:歴史と機能を比較
続いては、GRUBとLILOの違いについて確認していきます。
LILO(Linux Loader)は、GRUBが普及する以前にLinuxで広く使われていたブートローダーです。
| 比較項目 | GRUB2 | LILO |
|---|---|---|
| 現在の使用状況 | 現在の主流 | ほぼ使われなくなった |
| ファイルシステム対応 | 多くのファイルシステムを直接読める | ファイルシステムを解釈できない |
| 設定変更の反映 | 設定ファイル変更後にupdate-grubを実行 | 設定変更後に必ずインストールし直しが必要 |
| マルチブート | 強力なマルチブートサポート | 基本的なマルチブートは可能 |
| コマンドライン | 起動時にコマンドラインから操作可能 | インタラクティブな操作が限定的 |
| UEFI対応 | 対応 | 対応なし |
LILOの最大の制限は、設定を変更するたびにブートセクターへの書き込み(再インストール)が必要だった点です。
これに対しGRUBは設定ファイルを変更してupdate-grubを実行するだけで済み、柔軟性が大きく向上しました。
現代のLinuxディストリビューションでLILOが採用されることはほぼなく、GRUB2が事実上の標準となっています。
マルチブート環境でのGRUBの設定と注意点
続いては、マルチブート環境でのGRUBの設定と注意点について確認していきます。
LinuxとWindowsを同じPCに共存させるデュアルブート(マルチブート)環境では、GRUBが起動OSの選択を担います。
デュアルブート環境を構築する際の重要な注意点として、WindowsをLinuxより先にインストールすることが推奨されます。
Windowsを後からインストールすると、GRUBのブートエントリが上書きされてLinuxが起動できなくなる場合があるためです。
その場合はLiveUSBからGRUBを再インストールすることで対処できます。
GRUBはos-proberというツールを使って他のOSを自動検出し、メニューエントリを生成します。
「sudo update-grub」実行時にWindowsが自動検出され、GRUBメニューに追加されるのが一般的な動作です。
UEFIシステムのデュアルブートでは、EFIシステムパーティション(ESP)の管理も重要で、efibootmgrコマンドで起動順序を確認・変更できます。
マルチブート環境では定期的にGRUBの設定を更新し、各OSのエントリが正しく反映されているかを確認することが安定運用のポイントです。
まとめ
LinuxのブートローダーはGRUB2が現在の主流であり、2段階構造でLinuxカーネルをメモリに展開してシステムを起動させます。
設定は/etc/default/grubで行い、変更後にupdate-grubを実行することでgrub.cfgが自動生成されます。
かつて使われていたLILOと比較すると、GRUBはファイルシステムの直接読み取り・インタラクティブ操作・UEFI対応など多くの点で優れています。
マルチブート環境ではGRUBが複数のOSの起動を管理し、os-proberによる自動検出で利便性が高まります。
Linuxシステム管理においてGRUBの仕組みを理解することは、トラブル対応・カスタマイズ双方の基盤となるでしょう。