inittab

. . . inittab の設定 . . .



Pandora のFedora Core1 が想像以上に快適に動作している。
P6F209 というマザーボードは、VGA オンボードでメインメモリから
VRAM 相当の領域を拝借することで表示を実現している。
サーバ利用を考えると、デフォルトのログイン画面(ログインマネジャ)
なんか要らないし、可能な限り表示用のメモリ割り当てを減らしたい。
そこで、システム起動時のrunlevel を変更して
マルチユーザ・テキストログイン画面に設定を変更することにした。
つまり、こうである(無駄に力強く、きっぱりと主張)

id:3:initdefault:

init/inittab を纏めようとすると、それはソレなりに
...... 相当、厄介だったりするのである.....
ので、トッカカリだけを書くことに... します。 (^^;



init プロセス

init というプロセスを理解しないといけません。
ps -aef とかコマンドを実行すると、(桁ズレは無視してください (^^; )

UID        PID  PPID  C STIME TTY          TIME  CMD
root         1       0    0 Apr24     ?        00:00:04  init [3]
root         2       1    0 Apr24     ?        00:00:00  [keventd]
root         3       1    0 Apr24     ?        00:00:00  [kapmd]
root         4       1    0 Apr24     ?        00:00:00  [ksoftirqd/0]
root         6       1    0 Apr24     ?        00:00:00  [bdflush]
root         5       1    0 Apr24     ?        00:00:00  [kswapd]
root         7       1    0 Apr24     ?        00:00:00  [kupdated]
root         8       1    0 Apr24     ?        00:00:00  [mdrecoveryd]
root        12      1    0 Apr24     ?        00:00:00  [kjournald]
root        69      1    0 Apr24     ?        00:00:00  [khubd]
root      1148     1    0 Apr24     ?        00:00:00  [kjournald]
root      1170     1    0 Apr24     ?        00:00:00  [kjournald]
root      1746     1    0 Apr24     ?        00:00:00  [knodemgrd_0]
root      2080     1    0 Apr24     ?        00:00:00  syslogd -m 0
root      2084     1    0 Apr24     ?        00:00:00  klogd -x
.
.
以下省略

などと、プロセスの情報が表示されます。
この最初の行の、
root         1       0    0 Apr24     ?        00:00:04  init [3]
これこそが、システム起動後にログインプロンプト(画面)が
表示されるまでのデーモン起動やらをするプロセスの主なのです。
(実際には、パーティションのマウント後から、が正しいのかも知れない)
カーネルそのものといってもいいでしょう。
上記のプロセスリストで、PID が2以降のものはシステム起動時に
init がランレベルに従って実行しているものです。

ユーザが意図的にPPID (親プロセス)を"1" init に付け替える場合も
あるわけですが、それはここでは触れません。

init を理解する事は易しい事ではありません、多分。
が、まず以下の点を把握すれば少し見えてくるのではないでしょうか。

  • ランレベル
  • /etc/inittab ファイル

ランレベル
ランレベルは動作状態を制御するために用いられます。
例えば、RHL/Fedora では以下のようにレベル分けされています。

  • 0 : システム停止処理
  • 1 : シングルユーザモード
  • 2 : NFS を使わないマルチユーザモード
  • 3 : グラフィカル無しのマルチユーザモード(text login)
  • 4 : 未使用
  • 5 : グラフィカルログインのマルチユーザモード
  • 6 : システムのリブート
0/6 はシステムデフォルトであり、このモードを動作のデフォルトに
指定することは絶対にありません。
通常、システムのデフォルトは3/5 のどちらかになります。
仮に、動作モードのデフォルトを0/6 に指定すると、システム起動完了後に
0 : シャットダウン、6 : リブート となり、何もすることができません。
ランレベル 1 は、システムメンテナンスやトラブルシュート時に
lilo/GRUB のパラメタに引き渡す事があります。
操作している人以外には操作させたくない場合などが想定できます。

ランレベルと/etc/rc.d/rc*.d
/etc/inittab に設定されたランレベルに応じて、/etc/rc.d 配下の
rc*.d ディレクトリ下のスクリプトファイルが実行されます。
通常は、/etc/rc.d/rc3.d または /etc/rc.d/rc5.d 配下の
各スクリプトが実行される事になります。
これらのスクリプトは、各環境毎に有効(実行する)か無効(実行しない)か
指定することが出来ます。
(vsftpd の設定にて、chkconfig --level 35 vsftpd on )
自分の環境で実行されるスクリプト群を確認してみるといいでしょう。


/etc/inittab

inittab はシステム起動時から終了までの振る舞いを決定する
極めて重要なファイルです。
このファイルを誤って消したり、ヘンテコな内容に書き換えると
とっても不幸せな結果を招きます。

inittab の記述は、

id:runlevel:action:process
  • id : エントリの識別子、1〜4文字のユニークなもの
  • runlevel : 1〜6までのランレベル、複数指定可能。省略するとデフォルトになる
  • action : プロセスの起動と終了の動作
  • process : 起動するプログラム

これが基本書式です。
action で示されるエントリは、
  • respawn : process で指定したプロセスを起動して、終了したら再起動
  • wait : process で指定したプロセスを起動して、そのプロセスの終了を待つ
  • once : 指定したランレベルで1度だけ実行
  • initdefarult : デフォル・トランレベルの指定
  • sysinit : ブート時に実行するプロセス
  • powerfail : UPS が電源断を検出した場合に実行するプロセス
  • powerokwait : UPS が電源 ON を検出した場合に実行するプロセス
  • ctlaltdel : Ctl + Alt + Del キー押下を検出した場合
実際のファイルを見てみると、

#
# inittab       This file describes how the INIT process should set up
#               the system in a certain run-level.
#
# Author:       Miquel van Smoorenburg, <miquels@drinkel.nl.mugnet.org>
#               Modified for RHS Linux by Marc Ewing and Donnie Barnes
#

# 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:

# System initialization.
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

# Trap CTRL-ALT-DELETE
ca::ctrlaltdel:/sbin/shutdown -t3 -r now

# When our UPS tells us power has failed, assume we have a few minutes
# of power left.  Schedule a shutdown for 2 minutes from now.
# This does, of course, assume you have powerd installed and your
# UPS connected and working correctly.  
pf::powerfail:/sbin/shutdown -f -h +2 "Power Failure; System Shutting Down"

# If power was restored before the shutdown kicked in, cancel it.
pr:12345:powerokwait:/sbin/shutdown -c "Power Restored; Shutdown Cancelled"


# Run gettys in standard runlevels
1:2345:respawn:/sbin/mingetty tty1
2:2345:respawn:/sbin/mingetty tty2
3:2345:respawn:/sbin/mingetty tty3
4:2345:respawn:/sbin/mingetty tty4
5:2345:respawn:/sbin/mingetty tty5
6:2345:respawn:/sbin/mingetty tty6

# Run xdm in runlevel 5
x:5:respawn:/etc/X11/prefdm -nodaemon

上記の場合、ランレベルは3 で指定されている事を示します。
それ以外は、デフォルトの設定を変更していません。

なんとなく、少しわかった気がしませんか?
と、自分にも言い聞かせるワケですが。

<< Back