LinuCレベル2 201試験の出題範囲「2.01.1 ブートプロセスとGRUB」の技術的内容の解説をまとめました。
重要度 4 概要 ブートプロセス中およびリカバリモードのLinuxシステムを適切に操作する。関連するブートローダはGRUB バージョン2 である。BIOS と UEFI のシステム両方をカバーする。 詳細 BIOS と UEFI
・Master Boot Record (MBR)
・EFI System Partition (ESP), efibootmgr, UEFI shell
ブートローダの標準的なオプションの変更とブートローダのシェル(コマンドライン)の使用。
ブートローダの開始とカーネルへの引継ぎ。
GRUB の起動メニューを生成する。
・grub-mkconfig, grub2-mkconfig
カーネルローダブルモジュールのロード。
・initrd, initramfs
ハードウェアの初期化と設定。
・デバイス、モジュール
ファイルシステムのチェックとマウント。
デーモン / サービスの初期化と設定。
・systemctl, systemd.unit
ハードディスクまたはリムーバルデバイスにおけるブートローダのインストール場所を知っている。
grub-install, grub2-install
・/boot/, /boot/grub/,/boot/grub2/ および /boot/efi/ の内容

BIOS と UEFI
LinuCレベル1 101試験でもBIOSとUEFIの概要について解説しています。
BIOSは、コンピュータの起動時にコンピュータに接続されている各種デバイスの初期化を行います。この過程を POST(Power On Self Test)といい、各種デバイスの初期化が終了すると、BIOSは次の段階に入り、起動するためのドライブを探します。ブートドライブが決定すると、BIOSはそのブートドライブの先頭セクタのロードを行います。このときにBIOSがストレージ(HDDやSSD)から読み込む先頭のセクタを MBR(Master Boot Record)といいます。BIOSはこのMBRをメモリ上にロードし、MBR領域にあるプログラムに制御を移します。
参考:https://lpi.or.jp/lpic_all/linux/intro/intro05.shtml
UEFIはBIOSより新しいプログラムになります。GUIで操作が可能などの特徴があります。
UEFIは、従来のPC-BIOSに代わって、PCで幅広く利用されるようになっています。たとえば、UEFIは64ビットシステムを適切にサポートし、最も重要な機能の1つである安全なブート(「セキュアブート」、ファームウェアバージョン2.3.1c以降が必要)を提供します。最後に、UEFIを使用すると、すべてのx86プラットフォームで標準のファームウェアが利用可能になります。
参考:https://documentation.suse.com/ja-jp/sles/15-SP5/html/SLES-all/cha-uefi.html
BIOSの特徴は以下です:
- MBRを読み込む
- 起動ディスクのサイズの上限は2TB
UEFIの特徴は以下です:
- GUIによる操作が可能なため、マウスでも操作できる
- OS上から起動エントリを表示、設定することができる
- Linuxを起動するためのファイルは、通常「/boot/efi」にマウントされるESPに保存されている
MBR(マスターブートレコード)の概要
準備中。
EFI System Partition (ESP), efibootmgr, UEFI shellの概要
LinuCレベル2 201試験の出題範囲として記載されている「EFI System Partition (ESP), efibootmgr, UEFI shellの概要」の概要を解説します。
EFI System Partition (ESP)の概要
ESPはUEFIシステムにおいて、物理的なマシンを起動し、ファームウエアが読み込まれた後、その後の起動シーケンスで最初にアクセスされる領域になります。ESPは「/boot/efi」にマウントされます。
efibootmgrの概要
efibootmgrはUEFIブートマネージャーの起動エントリをOS上から操作するコマンドです。
UEFI shellの概要
UEFIには、UEFI Shellと呼ばれるシェル環境があり、OSを起動せずにハードウエア関係の設定を行うことができます。
GRUB(ブートローダ)の概要
以下はRed Hat Enterprise Linux 9.6の起動画面です。この画面でcキーを押下します。

cキーを押下すると以下の画面に遷移します。

cキーを押す前の画面でeキーを押下すると以下の画面に遷移します。

この画面がGRUBに関する画面です。
cキーを押したときの以下の画像は、「ブートローダGRUB2の起動プロンプト(GRUBシェル)の画面」です。

ブートローダ
GRUBはLinuxのブートローダです。ブートローダは記憶装置内のカーネルをロードし、制御を移す役割を果たします。
カーネルの起動
カーネルが起動されると、ハードウェアを認識・制御し、ルートパーティションのマウントなど様々な初期化処理が行われます。カーネルの初期化処理が終わると、init という最初のプロセスを起動します。
initプロセスの概要
initは、最初に起動されるプロセスで、PID(プロセス ID)は必ず 1 になります。
initはinitの設定ファイル /etc/inittab の記述に基づいて、自動起動するよう設定されているプロセスを立ちあげるなど、アプリケーションレベルの初期化を行います。
OS起動後、init プロセスは全てのプロセスの直接・間接的な呼び出し元として動作し続けます。
なお、最近のシステムではinitプログラムとして、初期化処理を高速化したUpstartやsystemdを採用している場合があり、その場合は「/etc/inittab」ファイルは使用されません。
BIOS/UEFIからOSが起動するまでの流れ
OSの起動処理は以下の順番で行われます。
BIOS → ブートローダ → カーネル → init
UEFI → ブートローダ → カーネル → init
BIOSとUEFIは役割としては同じものになりますが機能や仕様が異なります。前述の通り、UEFIのほうがBIOSより新しい技術で、BIOSはCUI、UEFIはGUIで操作するなどの特徴があります。

UEFI(Unified Extensible Firmware Interface)
BIOS(Basic Input Output System)
UEFI/BIOSの役割
Ø ハードウェア初期化
Ø ⾃⼰診断処理
Ø メモリチェック
Ø ハードウェア設定読込
Ø 起動デバイスのチェック
Ø 起動デバイスにあるブートローダ(GRUB/GRUB2)を探し起動
UEFI/BIOSの違い
Ø BIOSはMBR(Master Boot Record)、UEFIはGPT(GUID Partition Table)でパーティションを管理
Ø BIOSは2.2TB以上のディスクが⾮サポート、UEFIはそれ以上をサポート
Ø UEFIは、GUIなどでの操作可能
https://linuc.org/docs/seminar/20201004_linuc2.pdf
grub.cfgファイル(GRUBの設定ファイル)の概要
GRUB2の設定ファイルは、標準では「/boot/grub/grub.cfg」(システム(ディストリビューション)によっては「/boot/grub2/grub.cfg」)です。
ブートローダGRUB2の起動プロンプト(GRUBシェル)
前述した、GRUBシェルの実行画面でのコマンド操作について解説します。

GRUBシェルは以下のような記載内容で使用することができます。
grub> linux /boot/vmlinuz-x.yy.y-zzzz.aa0.x86_64 systemd.unit=rescue.target
上記の例では、「systemd.unit」に「rescue.target(レスキューモード)」を指定することでOS故障時のメンテナンスを行うことができます。
参考資料
本記事の作成に使用した参考資料を掲載します。


