LPIC入門講座~ランレベル~

今回もシステムアーキテクチャの章の続きを書いていこうと思います。

今回はランレベルについてのお話をしていきます。

ランレベルとは

SysVinitやUpstartで起動するLinuxではランレベルと呼ばれるいくつかの動作モードがあります。
ランレベルとは、どのようにLinuxを起動するか決定する起動方法のことです。
起動時のランレベルによって、どのようにLinuxを起動させるのかを決定します。

設定されているランレベルは以下の通りです。

ランレベルRedHat系Debian系
0停止停止
1シングルユーザモードシングルユーザモード
2マルチユーザモード(CUI)マルチユーザモード
3マルチユーザモード(CUI)マルチユーザモード
4未使用マルチユーザモード
5マルチユーザーモード(GUI)マルチユーザモード
6再起動再起動
S or sシングルユーザーモードシングルユーザモード

それぞれの動作を見ていきましょう。

ランレベル1:シングルユーザモード

シングルユーザモードは、メンテナンス専用のモードです。
メンテナンスを行うときや、システム起動時に異常が発生した場合にシングルユーザモードとしてLinuxが起動します。

シングルユーザモードでは、rootユーザのみ操作が可能であり、ネットワークへの接続なども一切行いません。
ちなみに、Systemd以降のシステムではエマージェンシーモードと呼ばれています。

ランレベル2,3,4:マルチユーザモード(CUI)

ランレベル2,3,4はマルチユーザモード(CUI)となっています。
マルチユーザモードとは、通常の起動状態のことでネットワークへの接続も行います。

CUIでの起動を行うため、文字のみでの操作が可能です。

多少の動作の違いから、ランレベルが分かれていますが、ほとんどの場合ランレベル3がCUIという認識です。

ランレベル5:マルチユーザモード(GUI)

ランレベル5は、マルチユーザモード(GUI)となっています。

GUIでの起動を行います。
要するにいつものモードですね。

ランレベル0,6:シャットダウン、再起動

ここからは少し特殊なモードです。

ランレベル0は、システムのシャットダウンとなっています。
ランレベル0として、起動するとシステムはシャットダウンします。

ランレベル6は、システムの再起動となっています。
ランレベル6として、起動するとシステムは再起動します。

ランレベルは、Redhat系とDebian系とで多少動作が異なりますが、ほとんどないも同然なので、あまり気にしなくても問題はありません。

ランレベルの確認

ランレベルは、「runlevel」コマンドで確認することができます。

特にオプションはありません。

表示形式としては、「ひとつ前のランレベル 現在のランレベル」となっています。
そのため、この場合一つ前はランレベル1で、現在はランレベル3であることがわかります。

ランレベルの変更

ランレベルの変更は「init」コマンド、または「telinit」コマンドで変更します。
この二つに特に機能に違いはありません。

構文:init <ランレベル>

上記のコマンドを入力すると、ランレベル5に移行します。
※rootユーザでのみ実行可能です。

他のランレベルへの変更も行ってみましょう。(特に0と6)

デフォルトのランレベルの変更

※この手順はSysVinitとUpstartが搭載されているシステムでのみ実行可能です。

デフォルトのランレベルを変更することが可能です。
そのためには、「/etc/inittab」ファイルを編集します。

中の記述を探すと、「id:ランレベル:initdefault」という行が見つかるはずです。
このランレベルの部分を自分がデフォルトで起動したいランレベルへ変更しましょう。

※この時ランレベルを0か6に指定しないようにしましょう。
システムが起動できなくなり、復旧作業が必要となります。

Systemdの場合

Systemdでデフォルトの起動モードを変更する場合は、少し手順が必要です。

まず、Systemdでは、起動モードをランレベルではなくtargetという単位で管理をしています。
そして、デフォルトで起動するターゲットを変更することで、起動モードを変更することができます。

まずは、ランレベルとターゲットとの対応表を見ていきましょう。

ランレベルターゲット起動モード
0poweroff.target停止
1rescue.targetシングルユーザモード
2multi-user.targetマルチユーザモード
3multi-user.targetマルチユーザモード
4multi-user.targetマルチユーザモード
5graphical.targetマルチユーザモード
6reboot.target再起動
S or srescue.targetシングルユーザモード

例えば、CUIで起動を行いたい場合は、「multi-user.target」を起動するようにすればいいわけですね。

それでは、実際の手順を見ていきましょう。

まず、デフォルトのランレベルは「/etc/systemd/system/defaults.target」として格納されています。

lsコマンドで確認してみると、/etc/systemd/system/default.target – > /lib/systemd/system/graphical.targetとなっていることがわかります。

これは、default.targetがgraphical.targetにリンクしているという意味で、後程説明するシンボリックリンクというものが関係してきます。

ここでは、単純につながっていると思ってください。

それでは、このdefault.targetのリンクをgraphicalからmulti-userへ切り替えてみましょう。
以下のコマンドを入力します。

このコマンドを入力すると、default.targetをmulti-user.targetと紐づけることができます。

以下のコマンドを入力して、現在のデフォルトの起動モードを確認してみましょう。

multi-user.targetに変わっていますね。

しかしこの作業、面倒ですよね。
実は、「systemctl set-default」コマンドを使うことで、お手軽に起動モードを変更することができます。

systemctlコマンドは後程解説しますが、Systemdにおいて便利な機能が詰まっているので、積極的に活用していきましょう。

ひとまず、ランレベルの説明は以上です。

※試験対策ポイント!
ランレベルの対応表は必ず覚えよう!
デフォルトのランレベルを0か6に変更してはいけない理由を理解しよう!
Systemdでの起動モード管理について理解しよう!

システムのシャットダウン

次は、システムのシャットダウン用コマンドの説明をしていきます。

先ほどのinitコマンドでもランレベル0を指定すればシャットダウンをすることができますが、Linuxはサーバとして利用することが多いOSであり、サーバとして利用している際に周知もせずにシャットダウンを行ってもいいのでしょうか?

よくないですよね。
そのため、Linuxでは時刻設定をして、ログイン中のユーザにメッセージを発信することで、シャットダウンの予告をすることができるコマンドがあります。

shutdown」コマンドを使えば、可能です。

構文:shutdown [オプション] [時刻] [メッセージ]

shutdownコマンドでは、複数のオプションがあり、オプションによって動作が異なります。

オプション動作
-h(=halt) シャットダウンを行います。
-r(=reboot)再起動を行います。
-k(=known) シャットダウンを行わず、メッセージの通知のみを行います。

オプションを指定したら、処理を行う時刻を設定します。
時刻のフォーマットは次の通りです。

「mm:hh」 もしくは 「+mm」。
また、今すぐ処理を行いたい場合は、「now」と指定します。

そして、メッセージを伝えたい場合は、最後にメッセージを記述します。

ただシャットダウンや再起動がしたいだけなら・・・

上記のコマンドを使えば、全体へ通知を行い安全にシャットダウンを行うことができますが、個人で利用する場合は、こんな作業必要ないですよね。

その場合にもコマンドが用意されています。

シャットダウン:「poweroff」コマンド

再起動:「reboot」コマンド

せっかくなので、一緒に覚えてしまいましょう。

※試験対策ポイント!
shutdownコマンドを使えば、ログイン中のユーザに通知を行うことができる。
wallコマンドでも、メッセージの通知を行うことができる。
poweroffコマンドとrebootコマンドの用途を覚えよう。

以上で、ランレベルについての解説を終わります。

この記事の著者

, 」カテゴリの記事