
LinuxC入門|Linux起動後の処理を担うsystemd
Linux を起動すると、私たちがログインする前から、実はたくさんの処理が裏側で進んでいます。
その中でも、Linux 起動後の処理をまとめて担当しているのが systemd です。
このページでは、Linux が電源を入れてからログインできる状態になるまでの流れを追いながら、「systemd がどんな役割を持っているのか」「なぜ重要なのか」を、順を追ってわかりやすく確認していきます。
初めて systemd を学ぶ方でも安心して読めるよう、できるだけ噛みくだいて説明していきますね。
まずは、Linux の起動全体の流れを見てみましょう。
Linux の起動処理は ブートプロセス と呼ばれ、いくつかの段階を経て進みます。

Linux 起動フローの全体像
| 順序 | 処理段階 | どんなことをしているか |
|---|---|---|
| 1 | 電源投入 | コンピュータに電源が入る。 |
| 2 | ファームウェア(UEFI) | ハードウェアを初期化し、起動先を決定 |
| 3 | ブートローダー | Linux カーネルを読み込む。 |
| 4 | カーネル | OS の中核機能を起動 |
| 5 | systemd | 各種サービスを起動・管理 |
| 6 | 起動完了 | ログイン画面が表示される。 |
この中で systemd は、カーネルの次に動き出す存在 です。
つまり、systemd がうまく動かないと、ログイン画面までたどり着けません。
それだけ systemd は、Linux にとってとても大切な役割を担っているんですね。
電源を入れると、まず最初に動き出すのが ファームウェア です。
最近の PC では、従来の BIOS に代わって UEFI が使われることがほとんどです。
UEFI には、次のような特徴があります。
| 項目 | 内容 |
|---|---|
| GUI 操作 | マウスや画面操作が可能 |
| GPT 対応 | 2TiB を超える大容量ディスクに対応 |
| 高速起動 | 初期化処理が効率化されている。 |
UEFI 自体が Linux を起動するわけではありません。
「次に何を起動するか」を判断して、ブートローダーへ処理を引き渡す役割を持っています。
UEFI が次に起動するのが ブートローダー です。
Linux 環境では GRUB が広く使われています。
ブートローダーは、Linux を起動するための準備係のような存在です。
| 主な役割 | 説明 |
|---|---|
| カーネルの読み込み | Linux カーネルをメモリへ配置 |
| 初期 RAM ディスクの読み込み | 起動初期に必要な環境を準備 |
| 起動オプション指定 | カーネルへ情報を渡す |
LinuC レベル1では、GRUB の細かい設定よりも、「Linux 起動の流れの中で、どんな役割を持っているか」を理解しておくことがポイントです。
ブートローダーによって読み込まれた Linux カーネル は、OS の心臓部として動き始めます。
カーネルが行う主な処理は次のとおりです。
| 処理内容 | 説明 |
|---|---|
| メモリ初期化 | RAM の管理を開始 |
| ハードウェア認識 | CPU、ディスク、NIC などを検出 |
| ドライバ制御 | 各デバイスを操作できるようにする |
これらの準備が整ったあと、カーネルは「最初のユーザー空間プロセス」を起動します。
それが systemd(PID 1) です。
systemd は、Linux 起動後の処理をまとめて管理する 司令塔 のような存在です。
systemd の主な特徴を整理してみましょう。
| 項目 | 内容 |
|---|---|
| サービス管理 | Web サーバや SSH などを起動 |
| 依存関係管理 | 必要な順番を自動で判断 |
| 並列起動 | 起動時間を短縮 |
| 状態管理 | サービスの状態を一元管理 |
昔使われていた init では、サービスは基本的に一つずつ順番に起動していました。
systemd では、依存関係を考慮しながら 同時に起動できるものは並列で起動 するため、全体の起動がとても速くなっています。
ここでは systemctl の代わりに、systemd-analyze を使って起動の様子を確認してみます。
systemd-analyze とは
systemd-analyze は、Linux の起動にどれくらい時間がかかっているかを確認するためのコマンドです。
コマンド書式
systemd-analyze [サブコマンド]主なサブコマンド
| サブコマンド | できること |
|---|---|
| time | 起動全体の所要時間を表示 |
| blame | 各サービスの起動時間を表示 |
| critical-chain | 依存関係の流れを表示 |
使用例(一般ユーザー)
[suzuki@AlmaLinux ~]$ systemd-analyze time
Startup finished in 1.107s (kernel) + 3.039s (initrd) + 46.460s (userspace) = 50.607s
graphical.target reached after 10.176s in userspace.カーネル、initramfs、systemd によるユーザー空間処理の時間が表示され、起動の流れをイメージしやすくなります。
systemd は unit と呼ばれる単位で、さまざまな設定を管理しています。
| 種類 | 説明 |
|---|---|
| service | サービスやデーモン |
| target | 起動グループ |
| mount | マウント設定 |
| timer | 定期実行処理 |
これらを組み合わせることで、Linux は安定して、かつ柔軟に起動できる仕組みになっています。
systemd は、Linux を「起動させるだけ」の存在ではありません。
サービス管理やシステム全体の動作を支える、とても重要な土台です。
この仕組みを理解しておくと、Linux の動きがグッと見えやすくなります。
