プロセス制御システム(SysVinit)/etc/inittabファイル

プロセス制御システム(SysVinit)は、以下の5部に分けて解説しています。

【ステップ1】 /etc/inittabファイルを読み込む

 initプロセスの最初のステップでは、/etc/inittabファイルを読み込みます。このファイルには、initプロセスの設定情報が含まれており、システムのランレベルや起動時に実行するスクリプトなどが決定されます。具体的には、Linuxの起動直後の動作モードを表すデフォルトのランレベルやシステムの動作などが記載されています。

/etc/inittabファイルの構成

/etc/inittabファイルの内容は以下のようになります。

フィールド説明
idエントリの識別子
runlevelエントリを実行するランレベル
actioninitがエントリをどう扱うか
process実行するコマンドまたはスクリプト
/etc/inittabファイルの内容

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を理解することで、古いシステムの管理やトラブルシューティングに役立ちます。