Debian / Ubuntuのランレベル「S」とは


8

ウィキペディアよれば、「S」は標準のランレベルである「シングルユーザーモード」であるとされています。しかし、私が間違っていなければ、Debianのシングルユーザーモードはランレベル1です。私が見つけた1つのDebian記事は、「S」は「システムが別のランレベルへの道で使用する」ランレベルであると主張しています。面白い...

実際、私はこれまでこのランレベルをほとんど無視してきましたが、今日、Firestarter(はい、実際にはエンドユーザーファイアウォール)をいじっていました。しかし、それが/etc/rcS.dにスタートアップフックを作成することに気づき、ファイアウォールスクリプトにもそれが必要なのかどうか疑問に思いました。

更新

Shorewallパッケージ(強力な「Debianized」パッケージ)もrcS.dに(のみ!)起動フックを作成するため、私はそれが実際にDebian / Ubuntu上にあるものを知ることにさらに興味があります。

回答:


3

私はこのようにランレベルを調べます:

 S - true single user mode usually drops you into a minimal root shell
 1 - Administrative mode, you get a standard login request before access
 2 - Multi-user without TCP/IP networking -- could use serial ports for other logins
 3 - Multi-user with TCP/IP networking and text 
 4 - To be determined by the system owner
 5 - Multi-User with TCP/IP networking and graphic console 
 6 - reboot
 0 - shutdown and power down

したがって、TCP / IPが稼働している場合、ファイアウォールは本当に必要であり、これは通常、Init State 3でのみ発生します。


1
このランレベルの概念全体は、過去の遺産です。現在、通常はシングルユーザーモード(メンテナンス用)で、他の通常モード(ディストリビューションによっては2または5など)が使用されています。他の用途については実際にはわかりません。
cstamas 2011

実際にはさらに悪いことに、最新のディストリビューションは実行レベルをすべて廃止し(現在はレガシー問題としてサポートされています)、依存関係のある名前付きの状態に移行しています(Fedora 15を参照)。
mdpc '14 / 07/14

3

上記のすべては、尋ねられた質問への直接の回答の周りにあるようです。

私が見つけることができるすべてから、rcS.dスクリプトは「単一」ではなく「スタートアップ」を意味するように実装されてSいます。

これらはすべてブート時に実行されます。その後、実行レベル1を使用する場合は、のスクリプトrc1.dが実行されます(ここで行ったすべての作業を考えると、これはかなり空の場合がありますrcS)。

さらに言えば、rcSスクリプトは途中で実行されます。つまりrc3、システムは事実上、システムをシングルユーザーモードにしてから、再考し、何をすべきかを判断します。非常にわかりにくく、ほとんど文書化されていません。

証拠として、を調べると/etc/inittab、次のことがわかります。

 # Boot-time system configuration/initialization script.<br>
 # This is run first except when booting in emergency (-b) mode.
si::sysinit:/etc/init.d/rcS

その後に似た多くの行が続きます:

l3:3:wait:/etc/init.d/rc 3

1

ランレベル1はランレベルsとも呼ばれます。

Debianベースのシステムでは、これはシングルユーザー / 最小モードですDebianランレベルを参照してください。

ランレベルは、0から6までの数字または文字Sです。ランレベル0、6、およびSは、それぞれシャットダウン、再起動、およびシングルユーザーモード用に予約されています。


0

Sはシングルユーザーモード用です。

http://wiki.debian.org/RunLevel


したがって、スクリプトがランレベルS(たとえば、Shorewall)にのみ起動フックを持ち、ランレベル「2」で起動する場合、起動シーケンスはスクリプトを開始しますか?
Chris Lercher、2011

Linuxでは、デフォルトの状態(/ etc / inittabで説明)がNの場合、UNIXとは異なり、/ etc / rc.d / rcN.d(この場所はLinuxディストリビューションによって異なる場合があります)の「S」項目のみが起動時に実行され、他のinitディレクトリは使用されません。
mdpc

通常、デフォルトのランレベルはinittabで設定します。数字が増加します。したがって、例として、initがSのみで構成されている場合、それはランレベル1と同じです。起動時に、システムはランレベル1から開始し、そのレベルのすべてのinitスクリプトの実行を増やし、ランレベルをインクリメントしてそれが繰り返されるまで繰り返します。 inittabで指定されたデフォルトのランレベルを取得します。ここでは2つです。したがって、1または2でオンになるように構成されたものはすべてオンになります。
dmourati

1
私の質問はDebian / Ubuntuに固有のものであることに注意してください!次のことを試しました。単純なスクリプトを/etc/rcS.dand に入れ/etc/rc2.d、それぞれが短いメッセージ(タイムスタンプ付き)をログファイルに書き込みました。結果:ブート後、rcSのログメッセージが表示され、5秒後にrc2のログメッセージが表示されます。
Chris Lercher、2011

システムが起動するデフォルトのランレベルを変更するには、ファイル/etc/init/rc-sysinit.confの変数DEFAULT_RUNLEVELを変更します。たとえば、システムをデフォルトでシングルユーザーモードで起動するには、次のように設定します
。env

0

mdpcによって提供される回答に加えて、実行レベル1では、デーモン(サービス)は開始されません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.