LinuxC入門|Linux起動後の処理を担うsystemd

Linux を起動すると、私たちがログインする前から、実はたくさんの処理が裏側で進んでいます。
その中でも、Linux 起動後の処理をまとめて担当しているのが systemd です。

このページでは、Linux が電源を入れてからログインできる状態になるまでの流れを追いながら、「systemd がどんな役割を持っているのか」「なぜ重要なのか」を、順を追ってわかりやすく確認していきます。
初めて systemd を学ぶ方でも安心して読めるよう、できるだけ噛みくだいて説明していきますね。

まずは、Linux の起動全体の流れを見てみましょう。
Linux の起動処理は ブートプロセス と呼ばれ、いくつかの段階を経て進みます。

Linux 起動フローの全体像

順序処理段階どんなことをしているか
1電源投入コンピュータに電源が入る。
2ファームウェア(UEFI)ハードウェアを初期化し、起動先を決定
3ブートローダーLinux カーネルを読み込む。
4カーネルOS の中核機能を起動
5systemd各種サービスを起動・管理
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 の動きがグッと見えやすくなります。