2.3. SysVinitとランレベル

2.3.1. SysVinitによる起動

SysVinitはかつて使用されていたLinuxの起動の仕組み。 現在はsystemdのほうが主流となっている。

SysVinitによる起動順序は以下の通り。

  1. initが/etc/inittabファイルを読み込む
  2. initが/etc/rc.sysinitnスクリプトを読み込む
  3. initが/etc/rcスクリプトを実行する
  4. /etc/rcスクリプトが /etc/rc<ランレベル>.dディレクトリ以下のスクリプトを実行する

SysVinitはサービスを順次起動に時間がかかる、依存関係を適切に処理できない問題があった。これらの問題を解決した起動の仕組みにはupstartsystemdがある。

Upstart

UpstartはSysVinitを改善した新しいinitの仕組みで以下の特徴がある。

  • 依存関係を適切に処理
  • 並列起動
  • イベント駆動

2.3.2. ランレベル

ランレベルはLinuxシステムの動作モードのこと。 システムのデフォルトのランレベルは/etc/inittabに記載されている。 またこのファイルで起動する際のランレベルも設定できる。

ランレベルRedHat系Debian系
0停止停止
1シングルユーザモードシングルユーザモード
2マルチユーザモード(テキストログイン、NFSサーバは停止)マルチユーザモード
3マルチユーザモード(テキストログイン)マルチユーザモード
4未使用マルチユーザモード
5マルチユーザーモード(グラフィカルログイン)マルチユーザモード
6再起動再起動
S or sシングルユーザーモードシングルユーザモード

runlevelコマンド

現在のランレベルの確認を行うコマンド。

runlevel

表示は<以前のランレベル> <現在のランレベル>で表示される。

init/telinitコマンド

ランレベルの変更を行うコマンドで実行にはroot権限が必要。

init 1
telinit 1

wallコマンド

wallコマンドはログインしているユーザー全員の端末画面に一斉にメッセージを送信するコマンド。再起動や停止を行う際にシステム利用者に通知するために使用する。

wall [ -a ] [ -g Group ] <メッセージ>

2.3.3. 起動スクリプトのサービス管理

ランレベルごとに起動するサービスは異なり、確認は/etc/rcN,d(Nは数字)で確認できる。

例えば/etc/rc3.dではランレベル3の時に起動するスクリプトを確認できる。