Upstart

Upstartは、いくつかのUnix系コンピュータオペレーティングシステムで起動時にタスクを実行する手法として古くから備わるinitデーモンの代わりとなるもので、イベント駆動型である点に特徴がある。Upstartは、当時カノニカルの従業員であったが開発した。

原理の説明
元々古くから備わるinitプロセスは、電源オンの後にコンピュータを通常の起動状態にすることや、シャットダウン前にきちんとサービスを終了することにしか責任を持たなかった。このため、前記の設計により現在のタスクが完了するまで将来のタスクは厳格に同期化され、さらにブロックされてしまう。さらに準備やクリーンアップ機能による制限を受けるため、これらのタスクはあらかじめ定義されねばならない。これでは現代のデスクトップコンピュータにおけるスタートアップ以外の、以下に挙げるような様々なタスクを簡潔に処理できなくなる:

 マシン起動中におけるUSBフラッシュドライブなどのポータブルストレージやネットワークデバイスの脱着。
 システムロックなしの、特にディスクがスキャンされるまで電源すらオンになっていない場合における新規ストレージデバイスの発見とスキャン。
 デバイス用ファームウェアのロード。ロードはデバイスが発見された後かつデバイスが使えない前に行わなければならないはずである。

Upstartのイベント駆動型モデルにより、イベント生成とは非同期にイベント応答ができる。

設計
Upstartはブート時のタスクとサービスの起動とシャットダウン時のタスクとサービスの停止を非同期に行い、システム動作中にはタスクとサービスの管理も行う。

System V initとの完全な後方互換性を保ち、容易に移行可能であることが設計目標であった。そのため、既存のSystem V init用スクリプトを無修正で実行可能である。いつも正常起動への完全な移行を仮定し要求するが、スタートアップの古くから備わる手法と新しい手法とが混在した環境をサポートしない大半の他のinit代替手法とは（systemdやOpenRCと比べて）そういった点で異なる。

Upstartは多くのイベントやより複雑なイベントをまとめるために、入力カスタム、シングルイベント、またはイベントブリッジ用のinitctlを使うことでイベントモデルを拡張できる.。Upstartにはデフォルトでsocket、dbus、udev、fileおよびdconfイベントへのブリッジが含まれる。必要に応じてより多くのブリッジが利用できる。

採用
Upstartをデフォルトのinitシステムとして使用する、LinuxカーネルをベースとしたLinuxディストリビューションやそれ以外のオペレーティングシステム:

 UpstartはSystem V initの代替として2006年後半、Ubuntu 6.10 (Edgy Eft) リリースで最初に導入された。Ubuntu 9.10 (Karmic Koala) はAlpha 6のネイティブUpstartブートアップを導入した。続いてDebianプロジェクトが2014年、将来のリリースにsystemdの採用を決めた後、Mark Shuttleworthは上流との調和を維持するためにsystemd自体へと移行する計画をUbuntuは開始したとアナウンスした。
 UpstartはChromeOSやChromium OSで使われている。

Upstartをある程度サポートするかしていたが、デフォルトinitシステムとしての使用をやめたか既に使用していないLinuxディストリビューション:

 Debianはjessieリリース立ち上げ時にデフォルトinitシステムをUpstartへ切り替えることを検討したが、systemdへ切り替えることになった。Upstartは結局2015年12月にDebianアーカイブから削除された。
 UbuntuはUbuntu Touchを除くバージョン15.04 (Vivid Vervet) において、デフォルトinitシステムのsystemdへの置き換えを完了した。
Fedora 9でSystem V initはUpstartに置き換えられたが、Fedora 15ではUpstartはsystemdに置き換えられた。
 レッドハットはRed Hat Enterprise Linux (RHEL) 6でUpstartを導入した。そのため、CentOS、Scientific LinuxおよびOracle LinuxといったRHEL 6派生でもUpstartが使われている。RHEL 7ではUpstartの代わりにsystemdが使われている
 openSUSEはバージョン11.3 Milestone 4でUpstartを導入したが、デフォルトではなかった。openSUSE 12.1のデフォルトinitシステムとして、Upstartの代わりにsystemdが使われた。
 UpstartはHP TouchPadタブレット用や、Palm Pre、Palm Pixi（共にパームがHPに買収される以前より）、HP VeerおよびHP Pre 3スマートフォン用のHP webOSで使われている。
 ノキアのインターネットタブレット用のMaemo 5ではsysvinitをUpstartに置き換えた。

関連項目

 Initng — initの非同期型代替実装の1つ
 Launchd — Mac OS X v10.4でinitなどのシステム起動スクリプトおよびcronの代替として導入された。
 OpenRC
 オペレーティングシステムサービス管理
 
 systemd

脚注

外部リンク
 
 
 Upstart Cookbook
 Upstart Cookbook
 Initシステム比較: その1およびその2 (LWN.net)
 Initシステム比較表

Ubuntu
UNIXのソフトウェア