第10回 Linux起動の仕組みを理解しよう[init/inittab編]

関野史朗
2002/4/27

ランレベルによる動作状態の変更

 Windowsには、「ランレベル」に相当する概念がないので、ちょっと分かりにくいかもしれません。これは、Linuxがどんな状態で動作するのかを指定します。一般的には、

 
ランレベル
意味
 
0
システム停止処理中
 
1
シングルユーザーモード
 
2
マルチユーザーモード
 
3
マルチユーザーモード
 
4
マルチユーザーモード
 
5
マルチユーザーモード
 
6
リブート中

になります。マルチユーザーモードが複数あるのは、例えばグラフィカルログインとテキストログインを使い分けるためです。Red Hat Linux 7.2だと、

 
ランレベル
意味
 
0
システム停止処理中
 
1
シングルユーザーモード
 
2
NFSを使わないマルチユーザーモード
 
3
フルマルチユーザーモード
 
4
未使用
 
5
グラフィカルログイン
 
6
リブート中

になっています。

 これを設定しているのは、/etc/inittabの、

id:3:initdefault:

という行です。この場合、ランレベル3、フルマルチユーザーモードで動作することになります。「3」を「5」に置き換えると、ログイン画面がX Window Systemを使った画面になります。

 なお、ランレベル0と6は自動的に設定されるので、inittabのid行で指定してはいけません。うっかり「6」を指定したりすると、延々とリブートするハメになったりします。こうした場合は、起動時にカーネルパラメータとして「single」を渡してやればOKです。指定されているランモードに関係なく、シングルユーザーモードの状態で起動します。このときはネットワークも動いておらず、コンソールに直接プロンプトが出ます。そこで、すかさず/etc/inittabを編集して再起動すればいいわけです。

 また、ファイルシステムをumountせずにいきなりリセットしたりすると、場合によってはfsckでも修復し切れないエラーが生じます。このようなときは、自動的にシングルユーザーモードで起動します。

シングルユーザーモード

 シングルユーザーモードは、Windowsのセーフモードに相当すると考えていいでしょう。マルチユーザーモードでshutdownコマンドを実行してもシングルユーザーモードになります。このときは、/etc/rc1.d内のスクリプトが実行されます。起動時にカーネルパラメータとしてsingleを指定したりfsckなどでエラーが起きた場合、/etc/rc1.d内のスクリプトは実行されません。

 このモードは文字通り、1人のユーザーだけが使う状態です。デーモンやプロセスも最小限のものしか動いていないので、メンテナンスがやりやすくなっています。

 例えばハードディスクのバックアップを取るとき、ほかのユーザーが使っていたり、さまざまなデーモンが動いていると、いつデータを書き換えられるか分かりません。まさにバックアップを取っている最中のファイルを書き換えられると、ちょっと厄介なことになります。

 その点、シングルユーザーモードでは/(ルート)に割り当てたパーティションをマウントするだけでよいので、/usrや/homeを別パーティションにしておくと確実にバックアップが取れます。もちろん、/パーティション自身をバックアップするときも、シングルユーザーモードならばファイルが勝手に書き換わることが少ないので安心です。

 シングルユーザーモードではネットワーク関係の機能も止まっていますから、コンソールからの作業が前提となります。シリアルポートを経由して別の端末で操作することもできますが、それなりの設定が必要になります。設定についてはhttp://www.linux.or.jp/JF/JFdocs/kernel-docs-2.4/serial-console.txt.htmlなどを参照してください。

 シングルユーザーモードからログアウトすると、マルチユーザーモードに移行します。

マルチユーザーモード

 マルチユーザーモードは、ごく一般的な動作モードです。Red Hat Linux 7.2ならば、ランレベル3か5のいずれかでしょう。3ならばテキストベース、5ならX Window Systemベースのグラフィカルなログイン画面になります。

 どちらもネットワークなどが使えるようになり、さまざまなデーモンが動いています。普段使うのは、このモードになります。前述したように、ランレベルに応じたrcスクリプト(ランレベル3なら/etc/rc3.d以下、ランレベル5なら/etc/rc5.d以下)を実行した後、ようやくログインプロンプトが出てきます。

次回予告
次回はいよいよ最終回です。今回紹介し切れなかったrcスクリプトの機能や書き方を取り上げます。

2/2

Index
Windowsユーザーに教えるLinuxの常識
  Linux起動の流れ
 デバイスなどの初期化
 initプログラムなどの起動
initは何をしているのか?
 initの動作を定義するinittab
 ブート時の処理
 起動後の仕事
  ランレベルによる動作状態の変更
 シングルユーザーモード
 マルチユーザーモード

連載 Windowsユーザーに教える Linuxの常識


 Linux Squareフォーラム Linux/システム学習関連記事
連載:Windowsユーザーに教えるLinuxの常識(全12回)
Windowsのセオリーが通用しないLinux。Linux初心者向けに、LinuxというOSの考え方/常識をゼロから伝授!
連載:LFSで作って学ぶLinuxの仕組み(全4回)
管理者(root)は、何をしなければならないのか? 管理に際して検討すべきことは? 管理のための技術とは? など、駆け出し管理者のための考え方や方法論を検討する
連載:Linux管理者への道(全8回)
「Linux From Scratch」というシンプルなLinuxをインストール&環境構築する作業を通して、LinuxがOSとして機能するための仕組みや設定を見直そう
Linux Squareフォーラム全記事インデックス

MONOist組み込み開発フォーラムの中から、Linux関連記事を紹介します

TechTargetジャパン

Linux Square フォーラム 新着記事

@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

RSSフィード

キャリアアップ



- PR -
@IT Sepcial

イベントカレンダー

PickUpイベント

- PR -
もっと見る
- PR -

お勧め求人情報

ホワイトペーパーTechTargetジャパン

@IT Sepcial
ソリューションFLASH