今回は、サーバが起動する際のフローについてです。
本記事は以下の本を参考にしております。
■サーバ起動の流れ
細かいところは省略していますが、以下の流れでサーバが起動します。
1.BIOS/UEFI
2.ブートローダー
3.カーネル
4.systemd
■1.BIOS/UEFI
ハードウェア制御プログラムであり、
・メモリ状態のチェック
・HW構成のロード(読み込み)
・起動デバイス情報のチェック
・ブートローダーを実行
という役割があります。
起動中のサーバがBIOS/UEFIのどちらを利用しているかは、以下コマンドで確認できます。
[ -d /sys/firmware/efi ] && echo UEFI || echo BIOS
実行結果は以下の通りです。
BIOSで起動していることがわかります。
■2.ブートローダー
起動するOSを選ぶための機能のことです。
(=RHELだけの話をすると、ロードするカーネルバージョンを選択します。)
下図の場合、カーネルのマイナーバージョンが異なる2つの項目があることがわかります。(=下図の一番上と二番目の項目のことです。)
RHELのブートローダーには、GRUB2(GRand Unified Bootloader version 2)が採用されています。
ブートローダーにより、Linuxカーネルと初期RAMディスクがメモリ上に読み込まれます。
■3.カーネル
カーネルにより、メモリにロードされている初期RAMディスクのマウントを行います。
初期RAMディスクをマウントすることにより、ディスク上のルートファイルシステムをマウントします。
■3.5 初期RAMディスク
initramfsと書かれていることもあります。
仮のルートファイルシステムのことです。(いわゆる仮rootパーティションです。)
rootパーティションにアクセスするためのデバイスドライバ等が含まれています。
以下は初期RAMディスクの例です。
■4.systemd
ルートファイルシステムがマウントされたことによりsystemdプロセスが起動します。
systemdが起動することにより、指定したターゲット(graphical.targetやmulti-user.target等)が起動します。
OSの起動ターゲット(=起動モード)の確認方法は以下の通りです。
systemdにより他のプロセスが順次起動していきます。
以上です。
本記事は以下の本を参考にしております。