【大阪 / 横浜 / 徳島】インフラ / サーバーサイドエンジニア募集中!

【大阪 / 横浜 / 徳島】インフラ / サーバーサイドエンジニア募集中!

【導入実績 500社以上】AWS 構築・運用保守・監視サービス

【導入実績 500社以上】AWS 構築・運用保守・監視サービス

【CentOS 後継】AlmaLinux OS サーバー構築・移行サービス

【CentOS 後継】AlmaLinux OS サーバー構築・移行サービス

【WordPress 専用】クラウドサーバー『ウェブスピード』

【WordPress 専用】クラウドサーバー『ウェブスピード』

【格安】Webサイト セキュリティ自動診断「クイックスキャナー」

【格安】Webサイト セキュリティ自動診断「クイックスキャナー」

【予約システム開発】EDISONE カスタマイズ開発サービス

【予約システム開発】EDISONE カスタマイズ開発サービス

【100URLの登録が0円】Webサイト監視サービス『Appmill』

【100URLの登録が0円】Webサイト監視サービス『Appmill』

【200ヶ国以上に対応】グローバル eSIM「ビヨンドSIM」

【200ヶ国以上に対応】グローバル eSIM「ビヨンドSIM」

【中国への旅行・出張・駐在なら】中国SIMサービス「チョコSIM」

【中国への旅行・出張・駐在なら】中国SIMサービス「チョコSIM」

【グローバル専用サービス】北米・中国でも、ビヨンドのMSP

【グローバル専用サービス】北米・中国でも、ビヨンドのMSP

【YouTube】ビヨンド公式チャンネル「びよまるチャンネル」

【YouTube】ビヨンド公式チャンネル「びよまるチャンネル」

【初心者向け】サーバーの電源ONから起動完了するまでの仕組みを図解説明

こんにちは。
にゃんこ大戦争で超激レアのキャラを手に入れて無双している ビヨンドの キタ です。

前回は、ハードウェアの記事をブログにしました。
今回はサーバーが電源ONをしてから起動完了になるまでの仕組みを、分かりやすく解説していこうと思います。

普段何気なくクラウドでサーバーの起動停止などをしていますが、そこに至るまでのプロセスを理解している方は思ったよりも少ないのではないでしょうか。
(自分もその一人でした)

今回は起動する順番を図解を含めて初心者でもわかるように解説していきますので、ぜひ最後までご覧ください。

Linuxサーバー起動時の全体図

まず、結論としてLinuxのシステムは以下の流れで起動をしています。

ファームウェア(BIOS/UEFI) → ブートローダー → カーネル → init処理

とはいえ、これだけの情報では分かりにくいため、図を用いて更に詳しく説明していきます。

電源ONから起動完了まで計8つの工程があります。
ざっくりと説明すると、以下の流れで起動完了となります。

  1. BIOS/UEFI起動する
  2. ハードウェア検知が走る
  3. ブートデバイスの選択処理が走る
  4. GRUBが起動
  5. カーネルが起動
  6. initramfsが起動
  7. systemdが起動
  8. 起動完了

全体図を用いると上のような流れになり、このシステム立ち上げの処理全体をブート(boot)と言い、
BIOS/UEFIの起動から、上記の一連の手順までを「ブートシーケンス」または「ブートアッププロセス」と呼びます。
続いて各項目の詳細について説明をしていきます。

各項目の説明

①BIOS/UEFI起動

まず、コンピューターの電源ボタンを押して起動する際に最初に動くのがBIOS/UEFIというものになります。
BIOS/UEFI はマザーボードのROMに搭載されており、役割としてはOSを起動する前にコンピュータに搭載されている各種機器を初期化し、OSを適切に起動することです。

BIOSとUEFIの違いですが、図に書いてある通りUEFIはBIOSを改良したプログラムです。
ただし、UEFIのみがあればいいのかというと、そういうわけではなく現状は両方が共存しています。

機能面は両方同じようなものなのですが、UEFIは従来から使用されてきたBIOSの操作性が複雑な点などの改良してくれています。

②ハードウェア検知

続いて、ハードウェア検知について説明をしていきます。

BIOSの処理の一つとしてPOST(Power-On Self-Test)と呼ばれる
接続されているハードウェアの認識・チェック・利用できるように初期化する処理が走ります。

③ブートデバイス選択

続いてブートデバイスの選択処理が走ります。
こちらもBIOSの処理のひとつなのですが、POST(ハードウェアの認識)を行った後にブートデバイス(OSが入っているストレージ)を選択していきます。

ブートデバイスとは、サーバーを起動した際に最初に動かしたいプログラムが入っているストレージ(HDD/SSD)のことです。
ブートデバイス = 起動したいOSが入っているストレージ と覚えておくと分かりやすいです。

④ブートローダー起動

次は、BIOSはブートデバイスに格納されているブートローダーの起動をしていきます。
ブートローダーはOS(カーネル)の認識と起動をするためのプログラムのことになります。

多くのLinuxではブートローダーとしてGRUBというものを採用しており
GRUBには古くから使われている「GRUB Legacy」というものと「GRUB 2」の二種類が存在しています。
※GRUB Legacyはすでにサポートが打ち切られています。

昨今のOSでは基本的には新しいバージョンのGRUB 2が採用されています。

⑤カーネル起動

いよいよカーネルの起動に走ります。

カーネルとは、Linuxの中核となるプログラムとなっており、狭義のLinuxとも呼ばれます。
主にサーバーに接続されたハードウェアを制御する役割を担っています。

まとめると、BIOS/UEFIはブートデバイスに入っているブートローダー(GRUB)を起動し、ブートローダーがカーネルを立ち上げるという流れになります。

⑥initramfs起動

続いてカーネルがシステムの起動のために必要なデータにアクセスするためにinitramfsを起動します。

initramfsはブートローダーによってメモリ上に配置された後にカーネルによって展開されて一時的に利用され、ファイルシステムをマウントするという処理をカーネルが担います。

ブートローダーがカーネルとRAMファイルシステム(initramfs)をメモリ上にロードするところからスタートしカーネルがinitramfsを展開して一時的なrootfsとして登録 → 初期化 → マウントを行います。

そうすると、必要なカーネルモジュールの読み込みやデバイスの初期化処理を行えるようになるため

その処理が完了した後に、HDDやSSDの中に含まれる本来のファイルシステムをrootfsとしてリマウントするという流れになります。

複雑な話になってしまうため、ざっくりとまとめるとシステムの起動に必要なデータにカーネルがアクセスできるようにする仕組みという風に覚えていただくと良いかと思います。

⑦systemd起動

initramfsがルートファイルシステムをマウントした後にカーネルは「systemd」を読みだして起動します。

systemdとは、システム起動時に最初に生成されるプロセス(PID=1)です。
「system daemon」の略となっており、デーモンというのはメモリに常駐してシステム全体を統括する役割を持っています。

また、デーモンはシステム起動時に開始されてからシステムの稼働中もバックグラウンドで継続動作するプログラムです。

⑧起動完了

最後に起動完了となります。
systemdがカーネルから呼び出されたのちにシステム稼働に必要な「子プロセス」といものを順次生成して行き、ログイン画面が表示されることとなります。

まとめ

最後に改めて起動までの流れを整理しておさらいします。

  1. まず最初に電源ボタンを押すとBIOS/UEFI(ファームウェア)が起動
  2. BIOSはPOSTによってハードウェアを初期化
  3. BIOSは認識したハードウェア内からブートデバイスを選択
  4. BIOSはブートデバイスに格納されているブートローダーを起動する
  5. ブートローダーは選択されたブートデバイスからカーネルを読み出して起動
  6. カーネルがinitramfsを起動
  7. initramfsがカーネルがシステム起動に必要なデータを扱えるようにする
  8. systemdが処理を引き継いでシステム稼働に必要な子プロセスを生成してシステムを初期化してログイン画面表示

というような流れでした。

最後に

ここまで、電源ONから起動完了するまでという点から、BIOS/UEFIや、ブートデバイス、ブートローダー、initramfsやsystemdなどについて詳しく解説をしていきました。

立ち上がるのが当たり前となっているので、普段起動の流れを理解する機会というのはなかなか無いのかもしれないのですが、うまく起動しなかった場合のトラブルシューティンの際に役に立つ知識となりますので、本記事を通して少しでもサーバーの起動の流れというものを理解していただければ幸いです。

また、本記事は弊社で運営を行っているチャンネルの ねずみさん家のインフラエンジニア道場 の動画を参考に作成をしています。
インフラに関する知識をゼロから学べる素晴らしいチャンネルとなっておりますので、気になる方は是非チャンネル登録と高評価をお願いいたします!

この記事がお役に立てば【 いいね 】のご協力をお願いいたします!
1
読み込み中...
1 票, 平均: 1.00 / 11
11
X facebook はてなブックマーク pocket
【2025.6.30 Amazon Linux 2 サポート終了】Amazon Linux サーバー移行ソリューション

【2025.6.30 Amazon Linux 2 サポート終了】Amazon Linux サーバー移行ソリューション

【大阪 / 横浜】インフラエンジニア・サーバーサイドエンジニア 積極採用中!

【大阪 / 横浜】インフラエンジニア・サーバーサイドエンジニア 積極採用中!

この記事をかいた人

About the author

キタ

アルバイトからビヨンドに拾っていただきました。
人事部 教育課 インフラエンジニア
飛ぶタイプの虫が嫌いです。