図1 SysVinitとUpstartの違い
図1 SysVinitとUpstartの違い
[画像のクリックで拡大表示]

 Upstartは,Linuxのシステム初期化に使う「init」プログラムの1つです。LinuxなどのUNIX系OSでは,ブート・プロセスにおける初期設定やシステム・サービスの起動に「init」というプログラムを使います。多くのLinuxディストリビューションでは,これまで「SysVinit」というinitプログラムを使ってきました。Upstartは,その代替として使える次世代のinitプログラムとして開発されたものです。Ubuntuの開発元である英Canonical社のScott James Remnant氏を中心に開発が続けられています。

 Upstartの最大の特徴は,「イベント駆動型である」という点にあります(図1)。例えばFedoraの場合,Fedora 8まではSysVinitを採用していました。SysVinitは,/etc/inittabファイルの設定内容に従って,ラン・レベルの設定やコンソールの起動,起動用スクリプトの実行,システム停止などの処理を行います。

 一方,Fedora 9や最新のFedora 10ではUpstartを採用しています。Upstartは,/etc/event.dディレクトリに格納されているファイル群で定義された「イベント・ジョブ」を実行する仕組みになっています。/etc/event.dディレクトリ内の各ファイルには「start on イベント名」という設定行があり,ここで指定されたイベントが発生すると,「exec コマンド名」という設定行で指定したコマンドが実行されます。

 Upstartのようなイベント駆動型initプログラムを使うことのメリットは,より柔軟なシステム管理を実現できることです。最近では,USB機器など自由に抜き挿しできるデバイスを使う機会が増えています。こうしたデバイスによってシステム構成が動的に変化する場合,OS起動時に必要な設定や起動すべきサービスなどもそれに合わせて変えるべきでしょう。

 しかし,SysVinitのようにラン・レベルに基づいた静的な起動手順を踏む古いinitプログラムは,そうした柔軟な処理に向いていません。イベント駆動型のUpstartなら,例えばOS起動時に接続されている機器をチェックし,機器が見つかった場合には,そのイベント情報に基づいて必要な設定だけを読み込んだりサービスを起動するといった芸当が可能になるわけです。