V系BSD系Linux系Android概要initは、全てのプロセスの親となる。initはデーモンプロセスとして起動され、プロセスIDは通常、1が付与される。initの主要な機能は、その設定ファイルに従い、必要なプロセスを作成することである。V系の二大潮流があり、両者は大きく仕様が異なっている。Linuxの場合は、どちらかに互換のあるものが使われているが、ディストリビューションによっては独自のものが使われている。特徴initは起動時に読み込まれる必要があるため、起動時にマウントされるドライブに存在する必要がある。通常は、最初にマウントされるrootfsに置かれる。ルートディレクトリか、そのサブディレクトリに置かれる。/initAndroidにも/sbinはあり、これは他と同様にrootfsにあるサブディレクトリだが、initはルートディレクトリに置かれている。V系のinitは、/etc/inittabを読み、動作する。これはinit専用の設定ファイルであり、拡張性は高いが、複雑で、手書きにはあまり向いていない。このinitは「ランレベル」と呼ばれる8段階のプロセスの分類群がある。/etc/inittabに標準のランレベルを定義するエントリが書かれるが、もしない場合は、ユーザーが起動時に手入力せねばならない。is:2:initdefault:なお、ランレベルの定義は、システムごとに異なっている。それぞれのランレベルで何を行なうかも、/etc/inittabにて定義されるのが一般的である。BSD系BSDのinitは、/etc/rcを起動する。これはシェルスクリプトであり、必要な動作はここに記述される。手で簡単に書き換えられるという利点があるが、設定を誤ると簡単に起動不可能な状態に出来るという難点もある。古いBSDでは、サービスの設定は/etc/rc.localで行ない、これが/etc/rcから呼び出される、という形式を取っていた。起動不可能な状態に陥ることを、多少でも避ける目的があった。現在のBSDでは、/etc/rc.dディレクトリ下に、サービスごとに細かく分けられたシェルスクリプトが置かれ、これが/etc/rcから順次実行するようになっている。このスクリプトは、サービスの有効化/無効化でそれぞれ呼び出され、適切な処理を行なうように書かれている。Linux系Linuxの場合、init実行まで、通常は次のような手順を踏む。/dev/sda(MBR)からブートストラップを読み込む/dev/sda1からブートローダーを読み込む/dev/sda1からkernelとinitramfsを読み込むkernelのブートコードを実行するinitramfsのスクリプトを実行するRAID1ボリュームを認識するLVMボリュームを認識するルートファイルシステムをマウントするカーネルスレッドkernel_initを実行する/sbin/init、/etc/init、/bin/init、/bin/shの順で、最初に実行可能なものを実行する一般的な環境では、/etc/initや/bin/initは存在せず、/bin/shはbashなどへのシンボリックリンクとなっており、実際に起動するのは/sbin/initである。AndroidAndroidは、カーネルはLinuxだが、それ以外の殆どはオリジナルであり、initもオリジナルが使われている。Androidでは、/initが実行ファイルであり、/init.rcを読み、動作する。Languageと呼ばれ、Androidのinit専用の初期化スクリプトである。専用だけあり、Androidの初期化に必要なことはほぼ可能なように作られている。参加の案内ダウンロード↑本の。