コンテンツにスキップ

FreeBSD/モダンブートプロセス

出典: フリー教科書『ウィキブックス(Wikibooks)』

現代のPCシステムでは、従来のBIOSに代わってUEFI(Unified Extensible Firmware Interface)が標準的なブートシステムとして採用されています。本記事では、FreeBSDにおけるUEFIブートプロセスについて詳しく解説します。

UEFIとは

[編集]

UEFIは、オペレーティングシステムに対してブート時およびランタイムサービスを提供する現代的なファームウェアインターフェースです。EFI(Extensible Firmware Interface)の後継仕様であり、以下のアーキテクチャでサポートされています:

  • amd64
  • arm
  • arm64
  • riscv

※注意:32ビットのi386アーキテクチャではUEFIブートはサポートされていません。

EFIシステムパーティション(ESP)

[編集]

UEFIブートプロセスでは、特別な「EFIシステムパーティション(ESP)」が必要です。ESPは以下の特徴を持ちます:

  • パーティション形式:GPTまたはMBR
  • ファイルシステム:FAT(msdosfs)
  • 識別子:
    • GPT: C12A7328-F81F-11D2-BA4B-00A0C93EC93B
    • MBR: 0xEF

ブートプロセスの詳細

[編集]

FreeBSDのUEFIブートプロセスは、以下の3つの主要なステップで構成されています:

  1. UEFIファームウェアの起動
    • 電源投入時にUEFIファームウェアが起動
    • ESPからOSローダーを検索
    • ローダーパスはefibootmgrで設定可能
    • デフォルトパスは各アーキテクチャで異なる:
      • amd64: /EFI/BOOT/BOOTX64.EFI
      • arm: /EFI/BOOT/BOOTARM.EFI
      • arm64: /EFI/BOOT/BOOTAA64.EFI
      • riscv: /EFI/BOOT/BOOTRISCV64.EFI
  2. ブートローダーの実行
    • loader.efiが起動
    • /boot.configまたは/boot/configから設定を読み込み
  3. カーネルのロードと起動
    • loader.efiがカーネルをロード
    • システムコンソールとしてvt(4)が自動選択

重要なシステムファイル

[編集]

FreeBSDのUEFIブートに関連する主要なファイル:

  • /boot/loader.efi: 最終段階のブートストラップローダー
  • /boot/kernel/kernel: デフォルトカーネル
  • /boot/kernel.old/kernel: バックアップカーネル(オプション)

FreeBSDにおけるUEFIサポートの歴史

[編集]

UEFIサポートは、FreeBSDの各バージョンで順次追加されてきました:

  • FreeBSD 5.0: ia64アーキテクチャでのEFIブートサポート
  • FreeBSD 10.1: amd64でのUEFIブートサポート
  • FreeBSD 11.0: arm64のサポート追加
  • FreeBSD 12.0: armv6とarmv7のサポート追加
  • FreeBSD 13.0: riscvのサポート追加

まとめ

[編集]

UEFIブートは、FreeBSDのモダンなブートプロセスの中核を担っています。適切に設定されたESPとブートローダーにより、安全で柔軟なシステム起動が可能になっています。システム管理者は、efibootmgrなどのツールを使用してブート設定をカスタマイズすることができ、より細かなシステム制御が可能です。