名 前
init, telinit − プ ロ セ ス 制 御 の 初 期 化
書 式
/sbin/init
[ -a ] [ -s ] [ -b ] [ -z xxx ]
[ 0123456Ss ]
/sbin/telinit [ −t sec ] [
0123456sSQqabcUu ]
説 明
init は 全 て の プ ロ セ ス の 親 で あ る 。 そ の 主 な 役 割 は 、 /etc/inittab (inittab(5) 参 照 ) フ ァ イ ル に 書 か れ た ス ク リ プ ト に 従 っ て プ ロ セ ス を 作 り 出 す こ と に あ る 。 通 常 こ の フ ァ イ ル に は 、 ユ ー ザ が ロ グ イ ン 可 能 な 各 接 続 ラ イ ン ご と に getty を 生 成 さ せ る た め の エ ン ト リ が 記 さ れ て い る 。 ま た 、 特 定 の シ ス テ ム が 必 要 と す る 、 自 律 的 な プ ロ セ ス の 制 御 も 行 う 。
ラ ン レ ベ ル
ラ ン レ ベ ル と は シ ス テ ム の ソ フ ト ウ ェ ア 的 な 設 定 で 、 指 定 し た プ ロ セ ス 群 の み を 存 在 さ せ る よ う に す る も の で あ る 。 そ れ ぞ れ の ラ ン レ ベ ル で init が 作 り 出 す プ ロ セ ス は /etc/inittab フ ァ イ ル で 定 め ら れ て い る 。 init は 0–6, S, s と い う 8 つ の ラ ン レ ベ ル の う ち の 一 つ を 取 る こ と が で き る 。 ラ ン レ ベ ル は 特 権 ユ ー ザ が telinit を 実 行 す る こ と に よ っ て 変 更 さ れ る 。 telinit は init に 適 切 な シ グ ナ ル を 送 り 、 ど の ラ ン レ ベ ル に 変 更 す べ き か を 指 示 す る 。 ラ ン レ ベ ル 0, 1, 6 は 予 約 さ れ て い る 。 ラ ン レ ベ ル 0 は シ ス テ ム を 停 止 す る た め に 、 ラ ン レ ベ ル 6 は シ ス テ ム を リ ブ ー ト す る た め に 、 ラ ン レ ベ ル 1 は シ ス テ ム を シ ン グ ル ユ ー ザ モ ー ド に す る た め に 用 い ら れ る 。 ラ ン レ ベ ル S は 直 接 用 い る た め の も の で は な く 、 ラ ン レ ベ ル 1 に な っ た 時 に 実 行 さ れ る ス ク リ プ ト の た め に 存 在 す る 。 こ の 詳 細 は shutdown(8) お よ び inittab(5) 各 man ペ ー ジ を 参 照 の こ と 。 文 書 に は 書 か れ て は い な い が 、 ラ ン レ ベ ル 7-9 も 使 用 で き る 。 文 書 に 書 か れ て い な い の は 、 「 伝 統 的 な 」 Unix の 派 生 種 は ラ ン レ ベ ル 7-9 を 使 用 し て い な い か ら で あ る 。 参 考 の た め に 言 っ て お く と 、 実 は ラ ン レ ベ ル S と s も 同 様 で あ る 。 内 部 的 に は 、 こ の 2 つ は 同 一 の ラ ン レ ベ ル の エ イ リ ア ス に な っ て い る 。
ブ ー ト
カ ー ネ ル ブ ー ト の 最 後 の ス テ ッ プ と し て init が 起 動 さ れ る と 、 init は /etc/inittab フ ァ イ ル を 検 索 し 、 initdefault と い う エ ン ト リ が 存 在 す る か 調 べ る (inittab(5) 参 照 )。 initdefault は シ ス テ ム が 最 初 に 取 る べ き ラ ン レ ベ ル を 定 義 す る 。 /etc/inittab フ ァ イ ル 中 に そ の よ う な エ ン ト リ が な い 場 合 、 あ る い は /etc/inittab フ ァ イ ル 自 体 が 存 在 し な い 場 合 は 、 シ ス テ ム コ ン ソ ー ル か ら ラ ン レ ベ ル を 入 力 し な け れ ば な ら な い 。 ラ ン レ ベ ル を S ま た は s に す る と 、 シ ス テ ム は シ ン グ ル ユ ー ザ モ ー ド に 入 る 。 こ の 場 合 は /etc/inittab フ ァ イ ル を 必 要 と し な い 。 シ ン グ ル ユ ー ザ モ ー ド で は 、 /dev/console で /sbin/sulogin が 起 動 さ れ る 。 シ ン グ ル ユ ー ザ モ ー ド に 入 る と き 、 init は /etc/ioctl.save か ら コ ン ソ ー ル の ioctl(2) の 状 態 を 読 み 込 む 。 こ の フ ァ イ ル が 存 在 し な い 場 合 は 、 init は コ ン ソ ー ル の 接 続 ラ イ ン を 9600 baud で CLOCAL と い う 設 定 (訳 注 : ロ ー カ ル に 直 接 接 続 さ れ て い る 状 態 ) に 初 期 化 す る 。 シ ン グ ル ユ ー ザ モ ー ド を 抜 け る 際 に は 、 次 回 の シ ン グ ル ユ ー ザ モ ー ド セ ッ シ ョ ン で も 同 じ 設 定 を 利 用 で き る よ う 、 コ ン ソ ー ル の ioctl の 状 態 を /etc/ioctl.save フ ァ イ ル に 保 存 す る 。 初 め て マ ル チ ユ ー ザ モ ー ド に 入 る と き 、 init は boot エ ン ト リ と bootwait エ ン ト リ を 実 行 し 、 ユ ー ザ が ロ グ イ ン 可 能 と な る 前 に フ ァ イ ル シ ス テ ム を マ ウ ン ト で き る よ う に す る 。 そ し て 、 ラ ン レ ベ ル に マ ッ チ す る 全 て の エ ン ト リ を 処 理 す る 。 新 た な プ ロ セ ス を 起 動 す る と き 、 init は ま ず /etc/initscript フ ァ イ ル が 存 在 す る か を 調 べ 、 存 在 す る 場 合 は そ の ス ク リ プ ト を 用 い て プ ロ セ ス を 起 動 す る 。 子 プ ロ セ ス が 終 了 す る ご と に 、 init は そ の 旨 と 終 了 し た 理 由 と を 、 /var/run/utmp と /var/log/wtmp と に 記 録 す る (た だ し こ れ ら の フ ァ イ ル が 存 在 す る 場 合 )。
ラ ン レ ベ ル の 変 更
指 示 さ れ た 全 て の プ ロ セ ス を 生 成 す る と 、 init は 子 孫 の プ ロ セ ス が 死 ぬ か 、 powerfail シ グ ナ ル が 発 せ ら れ る か 、 telinit か ら ラ ン レ ベ ル を 変 更 せ よ と の シ グ ナ ル が 送 ら れ る ま で 待 機 す る 。 こ の 3 つ の い ず れ か が 起 き た 場 合 は 、 init は /etc/inittab フ ァ イ ル を 再 度 調 べ る 。 こ の フ ァ イ ル に は 、 い つ で も 新 た な エ ン ト リ を 追 加 で き る 。 し か し 、 上 の 3 条 件 の ど れ か が 起 き る ま で は 、 init は 待 機 状 態 を 続 け る 。 新 た な エ ン ト リ を 即 座 に 反 映 さ せ る に は 、 telinit Q ま た は q コ マ ン ド を 用 い て init を 目 覚 め さ せ 、 /etc/inittab フ ァ イ ル を 再 度 調 べ さ せ れ ば よ い 。 シ ン グ ル ユ ー ザ モ ー ド に な い 時 に init が powerfail シ グ ナ ル (SIGPWR) を 受 け 取 る と 、 init は /etc/powerstatus フ ァ イ ル を 読 み 込 む 。 そ し て こ の フ ァ イ ル の 内 容 に 基 づ い て コ マ ン ド を 実 行 す る 。
F(AIL) 電 源 供 給 が 途 絶 え 、 |
UPS が 電 源 を 供 給 し て い る 。 powerwait エ ン ト リ |
と powerfail エ ン ト リ を 実 行 す る 。
O(K) 電 源 供 給 が 回 復 し て い る 。 |
powerokwait エ ン ト リ を 実 行 す る 。 | ||
L(OW) 電 源 供 給 が 途 絶 え 、 |
UPS の バ ッ テ リ ー 容 量 が 少 な く な っ て い る 。 powerfailnow エ ン ト リ を 実 行 す る 。
/etc/powerstatus が 存 在 し な い か 、 そ の 内 容 が F, O, L の い ず れ で も な い 場 合 、 init は F を 読 み 込 ん だ も の と し て 動 作 す る 。
SIGPWR と /etc/powerstatus の 利 用 は 推 奨 さ れ な い 。 init と 通 信 し た い 場 合 は 、 制 御 チ ャ ネ ル /dev/initctl を 使 う べ き で あ る 。 こ れ に 関 す る 詳 し い 記 述 は 、 sysvinit パ ッ ケ ー ジ の ソ ー ス コ ー ド を 参 照 す る こ と 。
init は 、 ラ ン レ ベ ル を 変 更 す る よ う 要 請 を 受 け る と 、 ま ず 新 た な ラ ン レ ベ ル で は 定 義 さ れ て い な い 全 て の プ ロ セ ス に 対 し て 警 告 シ グ ナ ル SIGTERM を 送 る 。 そ の 後 5 秒 間 待 機 し て か ら SIGKILL シ グ ナ ル を 送 り 、 そ れ ら の プ ロ セ ス を 強 制 的 に 終 了 さ せ る 。 init は 、 こ れ ら 全 て の プ ロ セ ス (お よ び そ れ ら の 子 孫 ) の 属 す る プ ロ セ ス グ ル ー プ が 、 も と も と init が 彼 ら の た め に 生 成 し た も の と 同 じ で あ る と 仮 定 し て い る 。 あ る プ ロ セ ス が 自 分 の プ ロ セ ス グ ル ー プ 属 性 を 変 え て し ま っ た 場 合 は 、 上 記 の シ グ ナ ル を 受 け 取 ら な い 。 し た が っ て 、 そ の よ う な プ ロ セ ス は 別 の 方 法 で 終 了 さ せ る 必 要 が あ る 。
telinit
/sbin/telinit
は /sbin/init に リ ン
ク さ れ て い る
。 /sbin/telinit は 一 文
字 の 引 数 を 受
け 取 り 、 init に
シ グ ナ ル を 送
っ て 適 切 な 動
作 を 行 な わ せ
る 。 telinit へ の 指
示 に は 、 以 下
に 示 す よ う な
引 数 が 利 用 で
き る 。
0,1,2,3,4,5,6
指 定 さ れ た ラ
ン レ ベ ル に 変
更 す る よ う init
に 伝 え る 。
a,b,c |
/etc/inittab 中 で 、 ラ ン レ ベ ル a, b, c の い ず れ か を 含 む エ ン ト リ だ け を 実 行 す る よ う init に 伝 え る 。 |
Q ま た は q
/etc/inittab フ ァ イ ル を 調 べ 直 す よ う init に 伝 え る 。
S ま た
は s シ ン グ ル
ユ ー ザ モ ー ド
に 切 り 替 え る
よ う init に 伝 え
る 。
U ま た は u
(状 態 は そ の ま ま で ) 自 分 自 身 を 再 実 行 す る よ う init に 伝 え る 。 /etc/inittab は 調 べ 直 さ な い 。 ラ ン レ ベ ル は Ss12345 の い ず れ か で な け れ ば な ら な い 。 そ れ 以 外 の 場 合 は 、 こ の 要 求 は 黙 っ て 無 視 さ れ る 。
init が プ ロ セ ス に TERM シ グ ナ ル を 送 っ て か ら KILL シ グ ナ ル を 送 る ま で の 時 間 を 、 telinit か ら 指 示 す る こ と も で き る 。 デ フ ォ ル ト で は 5 秒 に 設 定 さ れ て い る が 、 -t sec オ プ シ ョ ン で 変 更 で き る 。
telinit は 適 切 な 特 権 を 持 っ た ユ ー ザ の み が 実 行 で き る 。
init の バ イ ナ リ は 、 自 分 の プ ロ セ ス ID を 見 て 、 自 分 が init な の か telinit な の か を 判 断 す る 。 本 物 の init の プ ロ セ ス ID は 常 に 1 で あ る 。 よ っ て 、 telinit を 起 動 す る か わ り に init を 起 動 し て も 構 わ な い 。
環 境 変 数
init は 子 プ ロ セ ス に 以 下 の よ う な 環 境 変 数 を 設 定 す る :
PATH |
/usr/local/sbin:/sbin:/bin:/usr/sbin:/usr/bin |
INIT_VERSION 名
前 の 通 り 。 あ
る ス ク リ プ ト
が init に よ り 直
接 実 行 さ れ た
の か ど う か を
見 分 け る の に
便 利 。
RUNLEVEL シ ス テ ム の
現 在 の ラ ン レ
ベ ル 。
PREVLEVEL 直 前 の ラ ン
レ ベ ル (ラ ン レ
ベ ル を 変 更 し
た 場 合 に 便 利
)。
CONSOLE シ ス テ ム コ
ン ソ ー ル 。 こ
れ は 実 際 は カ
ー ネ ル か ら 継
承 し た も の で
あ る 。 し か し
こ れ が 設 定 さ
れ て い な か っ
た 場 合 は 、 init
は デ フ ォ ル ト
で /dev/console を 設 定
す る 。
ブ ー ト フ ラ グ
ブ ー ト モ ニ タ (例 え ば LILO) か ら init に 様 々 な フ ラ グ を 渡 す こ と が 可 能 で あ る 。 init は 以 下 の よ う な フ ラ グ を 受 け 付 け る :
-s, S, single シ ン グ ル ユ ー ザ モ ー ド で ブ ー ト す る 。 こ の モ ー ド で は /etc/inittab を 参 照 す る 。 ま た シ ン グ ル ユ ー ザ モ ー ド の シ ェ ル が 起 動 さ れ る 前 に ブ ー ト ア ッ プ rc ス ク リ プ ト が 実 行 さ れ る 。
1-5 ブ ー ト 時 に 入 る べ き ラ ン レ ベ ル 。 |
-b, emergency 他
の 起 動 用 ス ク
リ プ ト は 実 行
せ ず 、 直 接 シ
ン グ ル ユ ー ザ
シ ェ ル へ と ブ
ー ト す る 。
-a, auto
LILO ブ ー ト ロ ー ダ は 、 デ フ ォ ル ト の コ マ ン ド ラ イ ン で (ユ ー ザ の 介 入 な し に ) カ ー ネ ル を 起 動 す る と 、 コ マ ン ド ラ イ ン に 単 語 "auto" を 追 加 す る 。 init は こ の 単 語 を 見 つ け る と 、 "AUTOBOOT" 環 境 変 数 を "yes" に 設 定 す る 。 た だ し こ の 機 能 を セ キ ュ リ テ ィ の 判 断 に は 使 え な い 。 あ た り ま え だ が 、 ユ ー ザ ー は "auto" や −a を 手 動 で コ マ ン ド ラ イ ン に 追 加 す る こ と も で き る 。
-z xxx
-z の 引 数 は 無 視 さ れ る 。 こ れ を 使 う と コ マ ン ド ラ イ ン が 少 し 長 く な る の で 、 そ の た め に ス タ ッ ク を 若 干 余 分 に 使 用 す る よ う に な る 。 す る と init に コ マ ン ド ラ イ ン を 操 作 し 、 ps(1) に 現 在 の ラ ン レ ベ ル を 表 示 さ せ る よ う に で き る 。
イ ン タ ー フ ェ ー ス
init は メ ッ セ ー ジ の や り と り の た め に 、 /dev に あ る FIFO で あ る /dev/initctl を listen し て い る 。 telinit は こ れ を 用 い て init と 通 信 す る 。 こ の イ ン タ ー フ ェ ー ス は 十 分 に 文 書 化 さ れ て い な い 。 興 味 を 持 っ た 人 は 、 init の ソ ー ス tar ア ー カ イ ブ の src/ サ ブ デ ィ レ ク ト リ に あ る initreq.h を 調 べ て ほ し い 。
シ グ ナ ル
init は
い く つ か の シ
グ ナ ル に 反 応
す る 。
SIGHUP
init は /etc/initrunlvl と /var/log/initrunlvl を 探 す 。 も し こ れ ら の ど ち ら か の フ ァ イ ル が あ り 、 ラ ン レ ベ ル が ASCII コ ー ド で 書 か れ て い た ら 、 init は そ の ラ ン レ ベ ル に 切 り 替 わ る 。 こ れ は 過 去 と の 互 換 性 の た め だ け に 存 在 す る ! 通 常 の 場 合 (こ れ ら の フ ァ イ ル が な い 場 合 )、 init は telinit q が 実 行 さ れ た と き と 同 じ 動 作 を す る 。
SIGUSR1 こ
の シ グ ナ ル を
受 け 取 る と 、 init
は 制 御 用 FIFO で あ
る /dev/initctl を 一 旦
ク ロ ー ズ し て
再 オ ー プ ン す
る 。 ブ ー ト ス
ク リ プ ト が /dev を
再 マ ウ ン ト し
た 時 に 便 利 で
あ る 。
SIGINT 通 常 、 カ ー
ネ ル は CTRL-ALT-DEL が 押
さ れ る と こ の
シ グ ナ ル を init に
送 る 。 こ れ に
よ り ctrlaltdel ア ク
シ ョ ン が 実 行
さ れ る 。
SIGWINCH カ ー ネ ル は
KeyboardSignal キ ー が 押
さ れ る と こ の
シ グ ナ ル を 送
る 。 こ れ に よ
り kbrequest ア ク シ
ョ ン が 実 行 さ
れ る 。
準 拠
init は System V の init と 互 換 で あ る 。 init は /etc/init.d デ ィ レ ク ト リ や /etc/rc{runlevel}.d デ ィ レ ク ト リ の ス ク リ プ ト と 密 接 に 連 係 し な が ら 動 作 す る 。 あ な た の シ ス テ ム が こ の 規 則 に 従 っ て い る な ら 、 /etc/init.d デ ィ レ ク ト リ に README が あ り 、 ス ク リ プ ト が ど の よ う に 動 作 す る か が 説 明 さ れ て い る は ず で あ る 。
フ ァ イ ル
/etc/inittab
/etc/initscript
/dev/console
/etc/ioctl.save
/var/run/utmp
/var/log/wtmp
/dev/initctl
警 告
init は 、 生 成 し た プ ロ セ ス と そ の 子 孫 と が 、 そ れ ら の た め に 作 っ た プ ロ セ ス グ ル ー プ に 留 ま っ て い る と 仮 定 し て い る 。 プ ロ セ ス グ ル ー プ が 元 々 の も の と 変 わ っ て い る 場 合 は 、 init は そ の プ ロ セ ス を kill で き な い の で 、 異 な る 二 つ の プ ロ セ ス が 同 一 の 端 末 ラ イ ン か ら 入 力 を 読 み 込 む 、 と い っ た 現 象 が 起 き て し ま う 可 能 性 が あ る 。
返 り 値
init は 、 あ る エ ン ト リ が 2 分 間 に 10 回 以 上 繰 り 返 し て 再 生 成 さ れ る の を 発 見 す る と 、 コ マ ン ド 文 字 列 に 誤 り が あ る と み な し 、 シ ス テ ム コ ン ソ ー ル に エ ラ ー メ ッ セ ー ジ を 表 示 し 、 5 分 以 上 経 過 す る か シ グ ナ ル を 受 け 取 る ま で 、 そ れ 以 上 そ の エ ン ト リ の 再 生 成 を 拒 否 す る 。 こ う す る こ と に よ っ て 、 /etc/inittab 中 に 書 き 間 違 い が あ っ た り 、 そ の エ ン ト リ で 使 用 す る プ ロ グ ラ ム が 削 除 さ れ て い る 場 合 に 、 シ ス テ ム 資 源 を 使 い 尽 く し て し ま う こ と を 防 い で い る 。
著 者
Miquel van Smoorenburg (miquels [AT] cistron.nl)。 も と の man ペ ー ジ は Michael Haardt (u31b3hs [AT] pool.de) に よ る 。
関 連 項 目
getty(1), login(1), sh(1), runlevel(8), shutdown(8), kill(1), inittab(5), initscript(5), utmp(5)