Linuxのシステム管理を学ぶうえで、/etc/inittab は重要なファイルの一つです。特に、SysVinit を採用しているLinuxディストリビューションでは、システムのランレベルや起動プロセスを定義する役割を担っています。
しかし、近年のLinuxでは systemd への移行が進み、/etc/inittab は多くの環境で使われなくなりました。それでも、古いシステムの管理や、伝統的なLinuxの仕組みを理解するうえで、/etc/inittab の知識は今でも重要です。
本記事では、/etc/inittab の基本構造、役割、設定方法、そして現代のLinuxにおける代替手段まで詳しく解説 していきます。
/etc/inittabとは?
/etc/inittab は、LinuxのSysVinit (System V Init) における主要な設定ファイルで、システムの起動プロセスやランレベルの管理 を担っています。
主な役割
- システムの デフォルトのランレベル を決定する
- ランレベルごとに実行するスクリプトやプロセスを定義する
getty(仮想端末の制御) の設定を行う- シャットダウンや再起動の動作を管理する
使用されていたLinuxディストリビューション
/etc/inittab は、以下のような SysVinit ベースのLinuxディストリビューション で利用されていました:
- Red Hat Enterprise Linux 5 以前
- CentOS 5 以前
- Debian 6 以前
- Slackware (現在もSysVinitを使用)
- その他の古いUNIX系OS
しかし、現在は多くのディストリビューションが systemd に移行しており、/etc/inittab はほぼ廃止されています。
/etc/inittab の基本構造
/etc/inittab の構成は、各行ごとに 4つのフィールド で構成されています:
makefileコピーする編集するID:ランレベル:アクション:プロセス
| フィールド | 説明 |
|---|---|
| ID | 一意の識別子 |
| ランレベル | このエントリが適用されるランレベル |
| アクション | 実行のタイミング |
| プロセス | 実行するコマンド |
具体的な例
以下は、典型的な /etc/inittab の例です:
id:3:initdefault:
si::sysinit:/etc/init.d/rcS
l3:3:wait:/etc/init.d/rc 3
1:2345:respawn:/sbin/getty 38400 tty1
2:2345:respawn:/sbin/getty 38400 tty2
3:2345:respawn:/sbin/getty 38400 tty3
解説
id:3:initdefault:→ デフォルトのランレベルは3si::sysinit:/etc/init.d/rcS→ システム起動時に/etc/init.d/rcSを実行l3:3:wait:/etc/init.d/rc 3→ ランレベル3で/etc/init.d/rc 3を実行1:2345:respawn:/sbin/getty 38400 tty1→ ランレベル2,3,4,5でtty1を提供
/etc/inittab で使われる主要なアクション
/etc/inittab では、以下のような アクション (動作指定) を使って、システムの挙動を制御します。
| アクション | 説明 |
|---|---|
| initdefault | システムのデフォルトのランレベルを設定 |
| sysinit | システム初期化時に実行 |
| wait | ランレベル変更時に1回だけ実行 |
| respawn | 終了しても再起動するプロセス (getty など) |
| once | ランレベル変更時に1回だけ実行 |
| ctrlaltdel | Ctrl + Alt + Del の処理を定義 |
| powerfail | 停電など電源障害時に実行 |
runlevel コマンドで現在のランレベルを確認する
現在のランレベルを確認するには、以下のコマンドを実行します。
runlevel
出力例
N 3
この場合、現在のランレベルは 3 であることがわかります。
systemd への移行と /etc/inittab の代替方法
現在、多くのLinuxディストリビューションは SysVinit から systemd へ移行 しています。
そのため、新しい環境では /etc/inittab の代わりに systemd のターゲット(target) を使用します。
デフォルトのターゲット (ランレベル) を確認
systemctl get-default
デフォルトのターゲットを変更
例:マルチユーザーモード (旧ランレベル3) に変更
sudo systemctl set-default multi-user.target
ターゲットの一覧を確認
systemctl list-units --type=target
まとめ
/etc/inittab は、SysVinit ベースのLinuxシステムでシステムの起動プロセスを管理する設定ファイル でした。
現在は systemd へ移行 しているため、新しい環境では ターゲット(target) を使用して管理します。
しかし、古いシステムの管理やSysVinitの理解 は、Linuxを深く学ぶうえで重要な知識のひとつです。
特に、レガシーな環境や組み込みLinuxの開発現場では、今でも /etc/inittab が使われている場合があります。
本記事を通じて、/etc/inittab の基本的な仕組みと現代の代替手段について理解を深めていただけたら幸いです。
