【Linux】プロセス制御システム(SysVinit)/etc/inittabファイル
プロセス制御システム(SysVinit)は、以下の5部に分けて解説しています。
- プロセス制御システム(SysVinit)起動の概要
- プロセス制御システム(SysVinit)/etc/inittabファイル
- プロセス制御システム(SysVinit)ランレベル
- プロセス制御システム(SysVinit)/etc/rc.dの中身
- プロセス制御システム(SysVinit)サービスの起動と停止
【ステップ1】 /etc/inittabファイルを読み込む
initプロセスの最初のステップでは、/etc/inittabファイルを読み込みます。このファイルには、initプロセスの設定情報が含まれており、システムのランレベルや起動時に実行するスクリプトなどが決定されます。具体的には、Linuxの起動直後の動作モードを表すデフォルトのランレベルやシステムの動作などが記載されています。
/etc/inittabファイルの構成
/etc/inittabファイルの内容は以下のようになります。
フィールド | 説明 |
---|---|
id | エントリの識別子 |
runlevel | エントリを実行するランレベル |
action | initがエントリをどう扱うか |
process | 実行するコマンドまたはスクリプト |
cat /etc/inittabの出力例
以下は、典型的な/etc/inittabファイルの出力例です。
# cat /etc/inittab
# inittab is the configuration file for init.
# Default runlevel. The runlevels used by RHS are:
# 0 - halt (Do NOT set initdefault to this)
# 1 - Single user mode
# 2 - Multiuser, without NFS (The same as 3, if you do not have networking)
# 3 - Full multiuser mode
# 4 - unused
# 5 - X11
# 6 - reboot (Do NOT set initdefault to this)
#
id:3:initdefault:
si::sysinit:/etc/rc.d/rc.sysinit
l0:0:wait:/etc/rc.d/rc 0
l1:1:wait:/etc/rc.d/rc 1
l2:2:wait:/etc/rc.d/rc 2
l3:3:wait:/etc/rc.d/rc 3
l4:4:wait:/etc/rc.d/rc 4
l5:5:wait:/etc/rc.d/rc 5
l6:6:wait:/etc/rc.d/rc 6
ca::ctrlaltdel:/sbin/shutdown -t3 -r now
主なフィールドの説明
id:3:initdefault
: デフォルトのランレベルは3。si::sysinit:/etc/rc.d/rc.sysinit
: システム初期化スクリプトの実行。l0:0:wait:/etc/rc.d/rc 0
: ランレベル0のスクリプトを実行。ca::ctrlaltdel:/sbin/shutdown -t3 -r now
: Ctrl+Alt+Delを押したときにシステムを再起動。
systemdが採用されている場合
現在、多くのLinuxディストリビューションではsystemdが採用されているため、/etc/inittabファイルが存在しないか、存在しても何も記載されていません。具体例として:
CentOS 7:/etc/inittabファイルは存在しますが、内容は以下のように空です。
[user01@localhost ~]$ cat /etc/inittab
# inittab is no longer used when using systemd.
#
# ADDING CONFIGURATION HERE WILL HAVE NO EFFECT ON YOUR SYSTEM.
#
# Ctrl-Alt-Delete is handled by /usr/lib/systemd/system/ctrl-alt-del.target
#
# systemd uses 'targets' instead of runlevels. By default, there are two main targets:
#
# multi-user.target: analogous to runlevel 3
# graphical.target: analogous to runlevel 5
#
# To view current default target, run:
# systemctl get-default
#
# To set a default target, run:
# systemctl set-default TARGET.target
#
Ubuntu 22.04 LTS:/etc/inittabファイルは存在しません。
user01@ubuntu-vm:~$ cat /etc/inittab
cat: /etc/inittab: そのようなファイルやディレクトリはありません
まとめ
SysVinitのinitプロセスは最初に/etc/inittabファイルを読み込み、システムのランレベルや起動時に実行するスクリプトを決定します。しかし、現在多くのLinuxディストリビューションではsystemdが採用されているため、/etc/inittabファイルは使われなくなっています。そのため、/etc/inittabファイルが存在しないか、存在しても何も記載されていない場合が多いです。SysVinitを理解することで、古いシステムの管理やトラブルシューティングに役立ちます。