本稿は、最近出版された書籍『A Practical Guide to Ubuntu Linux』の抜粋である。
SysVinitに代わるものはほかにもいくつかある。特に有名なものとして挙げられるのがinitngであり、DebianやUbuntuで動作する。また、SolarisではSMF(Service Management Facility)、Mac OSではlaunchdが使われている。そのうちにUbuntuでは、これら各システムの機能がUpstartに取り込まれることになるだろう。
実行レベル(runlevel、ランレベル)ベースのSysVinitデーモン(sysvinitパッケージ)では、各実行レベル(シングルユーザモード、マルチユーザモードなど)と、/etc/rc?.dディレクトリから/etc/init.d内のinitスクリプトへのリンクを利用して、システムサービスの起動および停止を行っている。一方、イベントベースinitデーモンであるUpstart(upstartパッケージ)はイベントを利用して、システムサービスの起動と停止を行う。UbuntuではFeistyリリースでinitデーモンがUpstartに切り替えられ、SystemVの設定からUpstartの設定への移行が開始された。本稿では、Upstartに加えてSysVinitの残存部分(/etc/rc?.dおよび/etc/init.dの各ディレクトリと実行レベルの概念)についても解説する。
Upstartのinitデーモンはイベントベースであり、システム上のなんらかの変化を捉えて指定されたプログラムを実行する。サービスの起動と停止を行うこれらのプログラムのほとんどは、スクリプトである。こうした設定は、システムが実行レベルに入る際にリンクを用いてinitスクリプトを呼び出すというSysVinitの考え方によく似ている。ただし、Upstartのほうが柔軟性に優れている。実行レベルの変化時に限ってサービスを起動/停止するわけではなく、システムの変化を表す情報を受け取った時点でサービスを起動/停止できる。そのような変化をイベントと呼んでいる。たとえば、Upstartは実行中のシステムに対してファイルシステム、プリンタといったデバイスの追加または削除が行われたという通知をudevから受け取ったときにアクションを起こすことができる。また、システムの起動、シャットダウン、ジョブの状態変化によってもサービスの起動/停止が可能だ。
| 今後のUpstart |
|---|
|
SysVinitからUpstartへの移行には、Linuxシステムの多くの部分が関係する。切り換えを円滑なものにすると共にエラーの発生を極力抑えるために、Upstartチームは何回かのリリースに分けて移行を行うことを選んだ。 UbuntuにおけるUpstartデーモンの利用はFeisty(6.10)から始まっている。FeistyからGutsy(7.10)+2リリースの間に、UbuntuはSysVinitの環境から離れ、より簡潔で柔軟なUpstartの環境に移行する。Upstartの管理下に置かれるシステムサービスが増えるにつれ、/etc/init.dおよび/etc/rc?.dディレクトリの中身は/etc/event.dディレクトリのエントリで置き換えられていくことになる。実行レベルはもはやUbuntuの正式な機能ではなくなるが、サードパーティ製ソフトウェアとの互換性のために残される。最終的にはcrondも置き換えられるだろう。 |
Upstartシステムは5つのパッケージで構成され、すべてがデフォルトでインストールされている。
-
upstart ― Upstartのinitデーモンおよびinitctlユーティリティ
-
upstart-logd ― logdデーモン、およびlogdサービス用のジョブ定義ファイル
-
upstart-compat-sysv ― SysVinitとの互換性を維持するためのreboot、runlevel、shutdown、telinitの各ユーティリティおよびrcタスク用のジョブ定義ファイル
-
startup-tasks ― システム起動タスク用のジョブ定義ファイル
-
system-services ― ttyサービス用のジョブ定義ファイル
