ブートとは、プラットフォームのリセット状態を稼働中のユーザー空間環境へ変える、信頼と制御の引き継ぎの連鎖です。一般的な PC では、ファームウェア、ブートマネージャーまたはブートローダー、必要に応じて初期ユーザー空間を伴うカーネル、そして PID 1 の init システムという順に進みます。アーキテクチャ、仮想マシン、組み込みシステム、コンテナでは異なる経路を使う場合があります。
システムの起動 · レッスン 1
ブートプロセスの概要
プラットフォームファームウェアからカーネルを経て、最初のユーザー空間プロセスに至るまでの主要な引き継ぎを学びます。
ファームウェアの初期化
プラットフォームファームウェアは、ブート対象を選択できるところまで CPU、メモリ、デバイスの状態を初期化します。従来の PC は BIOS の規約を使い、現在の PC は一般に UEFI を使います。ファームウェア設定、ブート順序、プラットフォーム検証、Secure Boot ポリシーによって、次の段階のどの実行ファイルを起動できるかが決まることがあります。
ファームウェアが、インストール済み Linux のルートファイルシステムを必ず理解できるとは限りません。BIOS なら選択したディスク上のブートコード、UEFI なら EFI System Partition 上の EFI 実行ファイルを指すブートエントリというように、それぞれのインターフェースに従ってブート経路を見つけます。
一般的な PC で、リセット後にプラットフォームの初期化を始めるコンポーネントはどれですか?
ブートローダーまたはブートマネージャー
GRUB などのローダーは、起動エントリを表示し、選択された Linux カーネルと初期 RAM ファイルシステムをメモリへ読み込み、カーネルのコマンドラインを組み立てて制御を渡します。UEFI は EFI 実行ファイルとして構築されたカーネルを直接読み込むこともできるため、独立した多段ローダーは一般的ではあっても必須ではありません。
選択する成果物の間には整合性が必要です。カーネルのバージョン、initramfs の内容、ルートの識別子、セキュリティ署名、コマンドラインオプションのすべてが、次の引き継ぎの成否に影響します。
Linux のブートローダーが一般に担う役割はどれですか?
カーネルと初期ユーザー空間
カーネルは必要に応じて自身を展開または再配置し、中核サブシステムを初期化し、コマンドラインを解析して、利用可能なハードウェアを検出します。initramfs は、ストレージ検出、RAID、暗号化、LVM、ネットワークなど、実際のルートファイルシステムを組み立てるために必要なモジュールや初期ツールを提供できます。
目的のルートが利用可能になると、初期ユーザー空間はそこへ切り替わり、カーネルが設定された最初のユーザー空間プログラムを実行します。ファイルシステム検査や読み書き可能な再マウントを誰が行うかといった詳細は、普遍的な一つの手順ではなく、ディストリビューションのブート設計によって決まります。
システムが initramfs を使うのはなぜですか?
PID 1 とシステムの準備完了
最初のユーザー空間プロセスには PID 1 が割り当てられます。多くのディストリビューションでは systemd ですが、sysvinit、OpenRC、runit、BusyBox init、専用プログラムを使うシステムもあります。PID 1 はユーザー空間のサービス環境を確立し、孤児となった子プロセスを回収し、シャットダウン処理を担います。
PID 1 に到達しても、システム全体の準備が完了したとは限りません。サービスの起動、ストレージのマウント、ネットワーク設定がまだ進行中かもしれず、グラフィカルログインやコンソールログインも、到達し得る状態の一つにすぎません。
主要なユーザー空間初期化の段階は、何によって始まりますか?
GRUB2 ブートメニューのカスタマイズラボでは、ローダー設定方法の一例を確認できます。変更は、必ず復旧手段のあるラボ環境で行ってください。
レッスン完了
ブートプロセスの概要 を完了しました
これで、実装の違いを一つの普遍的な手順と思い込まずに、Linux ブートの主要な引き継ぎを追跡できます。
ファームウェアの初期化とブート対象の選択から追跡する。
ローダーによるカーネル、initramfs、コマンドラインの選択を関連付ける。
複雑なルートの構築を初期ユーザー空間の役割として理解する。
PID 1 をサービス初期化の開始と捉え、準備完了の証拠とはみなさない。