🔥

システムアーキテクチャ_システムの起動

2023/10/09に公開

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

  • ブートローダなどの他、起動に必要なドライバやプログラムも置かれる。
  • UEFIシステムではブートローダは必ずしも必要ではなく、UEFIブートマネージャから直接カーネルを起動することも可能
  • 最初にアクセスされる領域であるESPは「/boot/efi」にマウントされる

起動の順序

BIOS

  • MBRを読み込み、得られたブートローダに制御を移す
  • 記憶装置(HDD)等に関して最低限の認識を行う
  • 起動デバイスの順序を設定できる

ブートローダ

  • 記憶装置(HDD)内のカーネルをロードし、制御を移す
  • 初期RAMディスク(initramfs)の内容をメモリ上に展開
  • 初期RAMディスク(initramfs)
    • ファイルシステムへアクセスするのに必要なドライバやスクリプトが含まれている
    • カーネルイメージと同様に「/boot」ディレクトリに格納される
    • カーネルのバージョンごとに内容が異なる

カーネル

  • 高度にハードウェアを認識・制御し、ルートファイルシステムのマウントなど様々な初期化処理を行う

SysVinit

systemd

  • systemdはSysVinitを置き換える新しいinitの仕組み

  • systemdで扱う処理はUnitという単位で管理

    • Unitは設定ファイルであり、Unitの設定に従ってsystemd自体が処理を実行
  • 各サービスを並列起動

    • 高速なシステム起動や停止
  • systemdではcgroupsというLinuxカーネルの機能によってプロセスのリソースを管理

  • Unitの単位

    拡張子 機能
    device 各種デバイスを管理
    mount ファイルシステムのマウント
    service サービス制御
    swap スワップ領域を管理
    target 複数のサービスを1つのGpにする

Upstart

  • SysVinit --> Upstart --> systemd
  • ジョブ単位で起動処理の管理
  • 各ジョブの実行に必要な前提条件を「イベント」で管理
  • サービスの並列起動処理が可能

その他

  • ブートローダからカーネルに渡すパラメータ
    /proc/cmdline
  • systemdが利用できるユニット一覧
    systemctl list-unit-files

Discussion