initとsystemdについて
こんにちは。今日は先日解説した起動の続きです。
initとsystemdについて学んでいきましょう。
はじめに
まずは今日解説をするinit/systemdが起動の流れの中でどの部分にあたるかを確認しましょう。
init/systemdとは
「init」と「systemd」はどちらもプロセスの名前です。
どちらも一番初めに起動して、その他のプロセスを起動するという動きをします。
プロセスとは
プロセスというのはコンピュータがプログラムを動かす上で割り振っている仕事だと思っていただければと思います。
一般的な会社での仕事のやり方を想像してみてください。例えば社長が行いたい事業が関連する業務ごとに分別されて各部署に割り振られます。その割り振られた仕事がさらに細分化されて部署内で部員に割り振られることになります。こうして末端の仕事が行われると上位の業務が回り、結果として事業が成立します。
コンピュータのプロセスも同じように、その過程でプロセスが増えていきます。この場合の元となるプロセスを「親プロセス」、派生したプロセスを「子プロセス」「孫プロセス」などと呼んでいます。
起動の仕組み
initはsysVinitという起動の仕組みの中で、systemdはsystemdという起動の仕組みの中でプロセスとしての役割を果たします。
sysVinitはこれまで長い間、Unix系OSで広く使われてきました。時代の流れの中で昨日の仕組みが改良され、最近ではsystemdという起動の仕組みが主流になってきます。
SysVinit
SysVinitでは、はじめにinitプロセスを起動します
initプロセスは/etc/inittab
ファイルの設定に従って必要なプロセスを順に起動します
起動の流れ
①initが
/etc/inittab
ファイルを読み込む②initが
/etc/rc.sysinit
スクリプトを読み込む③initが
/etc/rc
スクリプトを実行する
SysVinitでは、決められて順番でプロセスが起動することから、あるプロセスの起動に手間取ってしまうと、後続のプロセスが全て遅れることになってしまい、最終的な起動完了までに時間がかかっていました。
そのため現在ではこの問題を改善したsystemdが採用されることが多くなっています。
ランレベル
ランレベルは、動作モードをレベルで表したものです。
それぞれのレベルで起動されるプログラムが異なります。
ランレベル | 説明 |
---|---|
0 | 停止 |
1 | シングルユーザモード |
2 | マルチユーザモード(ネット接続なし) |
3 | マルチユーザモード(ネット接続あり) |
4 | 未使用 |
5 | マルチユーザモード(グラフィカルログイン) |
6 | 再起動 |
S or s | シングルユーザモード |
シングルユーザモードは、管理者のみ使用出来るモードです。主にメンテナンスなどの際に使用されます。
systemd
systemdでは、initプロセスの代わりにsystemdプロセスが起動して、各種プロセスを管理します。systemdでは、システムの起動処理はUnitとよばれる単位に分かれています。まずは主なユニットを確認しましょう。
ユニット名 | 説明 |
---|---|
service | 各種プロセスを起動を管理 |
device | systemdで管理するデバイスの定義を実施 |
mount | ファイルシステムのマウント実施 |
swap | スワップ領域を有効化 |
target | 複数のユニットをグループ化実施 |
timer | 対応するserviceユニットの実行を管理 |
主な動作
systemdプロセスが起動すると、はじめにdefault.targetというUnitが起動されます。このファイルは/etc/systemd/system以下にあります。ここに置かれたファイルはgraphical.targetのシンボリックリンクとなっています。
このgraphical.targetは従来のランレベル5であるグラフィカルログインで起動するサービスをまとめたUnitです。つまり、このようなtargetが従来のランレベルに相当しています。ランレベルとtargetの対応は以下のようになっています。
ランレベル | ターゲット |
---|---|
0 | poweroff.target |
1 | rescue.target |
2,3,4 | multi-user.target |
5 | graphical.target |
6 | reboot.target |
systemdでは、systemctlコマンドを使ってサービスを管理します。詳しくは後日解説します。
それでは今日はこの辺で。