6.55. Sysvinit-2.86

Sysvinit パッケージは、システムの起動、実行、シャットダウンを制御するプログラムを提供します。

概算ビルド時間: 0.1 SBU 以下
必要ディスク容量: 1 MB

6.55.1. Sysvinit のインストール

ランレベルが変更される時 (例えばシステムが停止する時) init コマンドは各種のプロセスに対して停止シグナル (termination signals) を送信します。 ただしその対象は init プログラム自身が起動したプロセスであり、新たなランレベルでは起動しないプロセスです。 一方で init コマンドが出力するメッセージは 「Sending processes the TERM signal」 (プロセスに対して TERM シグナルを送信します) というものです。 このメッセージは、その時点にて稼動中の全プロセスに対してシグナルを送信しているかのように誤解してしまいます。 これを正すためにソースを修正して 「Sending processes configured via /etc/inittab the TERM signal」 (/etc/inittab で設定されているプロセスに対して TERM シグナルを送信します) というメッセージに置き換えます。

sed -i 's@Sending processes@& configured via /etc/inittab@g' \
    src/init.c

wall コマンドは Util-linux-ng パッケージにおいてメンテナンスされており、既にインストールが出来ています。 そこで Sysvinit が提供する wall コマンドはインストールせず、その man ページもインストールしないようにします。

sed -i -e 's/utmpdump wall/utmpdump/' \
       -e 's/mountpoint.1 wall.1/mountpoint.1/' src/Makefile

パッケージをコンパイルします。

make -C src

本パッケージにテストスイートはありません。

パッケージをインストールします。

make -C src install

6.55.2. Sysvinit の設定

以下のコマンドを実行して新しい /etc/inittab ファイルを生成します。

cat > /etc/inittab << "EOF"
# Begin /etc/inittab

id:3:initdefault:

si::sysinit:/etc/rc.d/init.d/rc sysinit

l0:0:wait:/etc/rc.d/init.d/rc 0
l1:S1:wait:/etc/rc.d/init.d/rc 1
l2:2:wait:/etc/rc.d/init.d/rc 2
l3:3:wait:/etc/rc.d/init.d/rc 3
l4:4:wait:/etc/rc.d/init.d/rc 4
l5:5:wait:/etc/rc.d/init.d/rc 5
l6:6:wait:/etc/rc.d/init.d/rc 6

ca:12345:ctrlaltdel:/sbin/shutdown -t1 -a -r now

su:S016:once:/sbin/sulogin

1:2345:respawn:/sbin/agetty tty1 9600
2:2345:respawn:/sbin/agetty tty2 9600
3:2345:respawn:/sbin/agetty tty3 9600
4:2345:respawn:/sbin/agetty tty4 9600
5:2345:respawn:/sbin/agetty tty5 9600
6:2345:respawn:/sbin/agetty tty6 9600

# End /etc/inittab
EOF

6.55.3. Sysvinit の構成

インストールプログラム: bootlogd, halt, init, killall5, last, lastb (last へのリンク), mesg, mountpoint, pidof (killall5 へのリンク), poweroff (halt へのリンク), reboot (halt へのリンク), runlevel, shutdown, sulogin, telinit (init へのリンク), utmpdump

概略説明

bootlogd

ブート時のメッセージをログファイルに出力します。

halt

ランレベルが既に 0 ではない通常の起動状態の場合に shutdown をオプション -h をつけて実行します。 そしてカーネルに対してシステム停止を指示します。 システムが停止される状況は /var/log/wtmp ファイルに記録されます。

init

カーネルがハードウェアを初期化した後に、最初に起動するプロセスです。 ブート処理がこのプロセスに引き継がれ、指示されたプロセスをすべて起動していきます。

killall5

プロセスすべてに対してシグナルを送信します。 ただし自分のセッション内の起動プロセスは除きます。 つまり本コマンドを実行したスクリプトは停止されません。

last

ユーザーの最新のログイン (ログアウト) の情報を表示します。 これは /var/log/wtmp ファイルの終わりから調べているものです。 またシステムブート、シャットダウン、ランレベルの変更時の情報も示します。

lastb

ログインに失敗した情報を表示します。 これは /var/log/btmp に記録されています。

mesg

現在のユーザーの端末に対して、他のユーザーがメッセージ送信できるかどうかを制御します。

mountpoint

指定されたディレクトリがマウントポイントであるかどうかをチェックします。

pidof

指定されたプログラムの PID を表示します。

poweroff

カーネルに対してシステムの停止を指示し、コンピュータの電源を切ります。 (halt を参照してください。)

reboot

カーネルに対してシステムの再起動を指示します。 (halt を参照してください。)

runlevel

現在のランレベルと直前のランレベルを表示します。 最新のランレベルは /var/run/utmp ファイルに記録されています。

shutdown

システムの終了を安全に行います。 その際にはプロセスすべてへのシグナル送信を行い、ログインユーザーへの通知も行います。

sulogin

root ユーザーでのログインを行います。 通常は init が起動するもので、システムがシングルユーザーモードで起動する際に利用されます。

telinit

init に対してランレベルの変更を指示します。

utmpdump

指定されたログファイル内の情報を分かりやすく表示します。