このエントリーを含むはてなブックマークはてなブックマーク - Ubuntuの「ランレベル」は、ちょと違う・・・というか考え方が違う このエントリをつぶやくこのWebページのtweets Googleブックマークに追加 Bookmark this on Delicious

・・・というわけで、まずは、LPICレベル1の「101:システムアーキテクチャ」に関連した話題から。
第一回目は、「システムの起動とランレベル」についてです。

システムの電源を投入してからログイン画面/プロンプトが現れるまでには次のような「起動処理」が行われます。

  1. 「BIOS」が起動してハードウェアを初期化し、起動ディスクの「ブートセレクタ」を読み取る。
  2. 引き続き、「ブートローダー」が指定されたパーティションからカーネルを読み込む。
  3. 「カーネル」はメモリの初期化、システムクロックの設定、デバイスの割り込み(IRQ)の設定を行う。
  4. 「init」がシステムの初期化スクリプトを実行し、ランレベルに応じたデーモンを起動。

このランレベル、
Redhat系では「/etc/inittab」に記述されており、
Ubuntuでは、「/etc/event.d/rc-default」に記述/指定されています。(*バージョン9.04まで、9.10からは仕様が変更になっています。)

Unix系のOSでは、システムの動作状態を表すモードがあり、状態に応じてのレベルを数値で表します。これを「ランレベル」と呼び、Linuxでは一般に 0 から 6 までの7つのランレベルが用いられています。

一般のデスクトップ・パソコンでは、GUIが有効となるランレベルが必要となり、サーバとして稼働させる場合、余計な負荷がかかるGUIは起動させないよう、GUIが起動しないランレベルで運用されているわけです。

このランレベルの状態を調べるには、「runlevel」コマンドを用います。

この例では、「N 2」と表示されています。右側の「2」が今のrunlevel。「N」はひとつ前のrunlevel。

Nは”None”、すなわちナシ。起動後変更を行っていない場合に、このような表記になるわけですね。

さて、Ubuntuが属するDebian系と、Fedora、CentOSなどのRedHat系では、起動時のランレベルの割り振り方が下記の通り異なっています。比較してみましょう。

■RedHat系

init0 = 停止
init1 = シングルユーザーモード
init2 = NFSを使用しないテキストログインモード(マルチユーザーモード)
init3 = テキストログインモード(マルチユーザーモード)
init4 = 未使用
init5 = GUIログインモード(マルチユーザーモード)
init6 = 再起動

■Debian系

init0 = 停止
init1 = シングルユーザーモード
init2 = マルチユーザーモード
init3 = init2に同じ
init4 = init2に同じ
init5 = init2に同じ
init6 = 再起動

■ランレベルの変更: RedHat系の場合

Redhat系のCentOS上で、「rumlevel」コマンドで確認をしてみたら、ランレベルが「5」だとします。
これをテキストログインモードの3に変更したい場合には。以下のようにします。

○一時的に変更したい場合
端末から以下のようなコマンドを入力することで可能です。

# telinit 3

あくまでもこれは一時的なもので、システムを再起動してしまうと、また元のランレベル5で起動してしまいます。

○常にランレベル3で起動するようにしたい場合

「/etc/inittab」の編集を行います。

# vi /etc/inittab

「id:5:initdefault:」という記述を見つけます。これを、

「id:3:initdefault:」と変更し保存します。

これにより、「テキストログインモード(マルチユーザーモード)」で起動するようになります。

■ランレベルの変更: Ubuntu系の場合
Ubuntuでのランレベルの指定は、Redhat系とは異なり、「/etc/event.d/rc-default」に記述されています。

$ sudo gedit /etc/event.d/rc-default

・・・でランレベルを指定するファイルを管理者権限でエディタで開いて、「telinit 2」となっている数字の「2」を他の数字にに変更して保存することでランレベルを変更することができます。

例として、「3」と変更してみます。
しかし、このままではGUIが起動してしまいます。
・・・というのも、デフォルトでは「telinit 3」には、gdmとx-serverというGUI環境が起動する設定となっているからです。

このtelinitにおけるデーモン/サービスの起動設定は「sysv-rc-conf」というツールで変更できます。
以下のように、このツールを導入し、起動します。

$ sudo apt-get install sysv-rc-conf
$ sudo sysv-rc-conf


「→↓」キーを使って移動。画面上部の数字がランレベルを表し、「3」の列が「telinit 3」に相当します。
タテに並んで「x」と表示されている所が、各行のサービス/デーモンが起動する事を意味します。
スペースキーでON/OFFの切り替えができます。

この中の3の「gdm」と「xserver-x$」のチェックを外し、「q」で終了します。

以上でCUIで起動できるようになります。

Redhat系では、ランレベルが高い方ほど、高度でシステムに負荷がかかる作業を行う事になるわけです。
文字どおり”レベル”が上がるわけです。

一方、Ubuntuの場合には、2〜5の4つで、それぞれ設定を変えたセットを用意しておいて、用途、状況に応じて即座に切り替えができる・・・という点で、サーバ運用に便利だなぁ・・・と思う次第です。

■ランレベルを一時的に変えるコマンド

ランレベルの変更を継続したい場合、Redhat系の「/etc/inittab」、Ubuntuでは「/etc/event.d/rc-default」 に記述されている数値を変更〜保存することで反映されることは上述の通りです。

では、一時的にrunlevelを変更をしたい場合には、管理者権限で、「init」または「telinit」コマンドを用います。
コマンドはRedhat系もUbuntuでも共通です。

この場合、再起動すると、元のランレベルに戻ります。あくまでも一時的な変更です。

画像の例は、Ubuntuの場合です。

「sudo init 3」というのが本来のコマンドです。ここでは「sudo su」で管理者権限を取得して、

「init 3」でrunlevelを変更。

確認のために「runlevel」コマンドを。

「2 3」と表示 →前が2、今は3・・・ちゃんと変更されました。

Related posts:

  1. Oh My God! Oh My Goddess!・・・Episode IV
  2. イモキャンでHP 2133をゲット! 速攻でUbuntuインストール!!
  3. VirtualBoxが壊れちゃった・・・再セットアップするハメに。
  4. オイラのマシンは今どーなってんだっけ?