Init

initは、UNIXおよびUnix系システムのプログラムのひとつであり、他の全てのプロセスを起動する役目を持つ。デーモンとして動作し、一般にPID 1 を付与される。ブートローダがカーネルを起動し、カーネルがinitを起動する。代替手段を用意せずにinitを削除すると、次回のリブート時にシステムはカーネルパニックに陥る可能性がある。
init の機能はBSD系とSystem V系では大きく異なるため、ユーザーは自分のシステムがどちらのバージョンを使っているかをマニュアルで調べる必要がある。多くのLinuxディストリビューションで使われていたinitはSystem Vと互換性がある。SlackwareのようなLinuxディストリビューションではBSD系のinitを使っていた。Gentoo Linuxなどでは独自のinitを使用していた。ISO/IEC 23360-1:2006の国際規格になったLinux Standard Baseではinitを定義している。
他にもいくつかinitの設計上の限界に対処した代替として、systemdやUpstartがあり、Ubuntuや他のLinuxディストリビューションで採用している。
System V系のinit.
System Vのinitは、codice_1ファイル内のcodice_2エントリを調べて既定のランレベルがあるかチェックする。既定のランレベルがない場合、コンソール端末に何らかの表示がなされるので、ユーザは手でランレベルを入力しなければならない。
ランレベル.
System Vのランレベル (runlevel) は、マシンの状態を実行するプロセス群によって分類したものである。一般に 0 - 6とSまたはsという8段階のランレベルがある。Sとsは同じランレベルの別名である。この8段階のうち、以下の3つは予約されたランレベルである。
これら以外のランレベルは、各システムによってそれぞれ意味が異なる。一般に、codice_1ファイルで、各ランレベルで何をするかを定義している。
デフォルトのランレベル.
上記表でデフォルトのランレベルを5としているLinuxディストリビューションでは、5というランレベルはマルチユーザーのグラフィカル環境（X Window Systemと、その上でディスプレイマネージャが起動される）である。しかし、Solarisでは、ランレベル5はシャットダウンと電源オフの自動化のために予約されている。
現在のランレベルは以下のようなコマンドを使って調べることができる。
通常、ランレベルはrootがcodice_6コマンドまたはcodice_7コマンドを実行することで変更することができる。デフォルトのランレベルはcodice_1ファイルのcodice_2エントリにある。
BSD系のinit.
Berkeley Software Distribution (BSD) のinitは、codice_10にある初期化用シェルスクリプトを実行し、codice_11の制御下にあるテキストベース端末用のgettyを起動したり、グラフィックス端末用にXなどを起動したりする。ランレベルという概念は無く、codice_10ファイルでinit の動作を決定している。
BSDの子孫では、伝統的にcodice_13ファイルをブート処理の最後近くに実行することでブート不可となる危険性を和らげていた。
NetBSD 1.5では完全にモジュール化したシステムを導入し、それがFreeBSD 5.0およびそれ以降にも移植されている。このシステムは、codice_14 ディレクトリ配下にあるスクリプト群を実行するものである。System Vでのスクリプト実行順は各スクリプトのファイル名の順番だが、BSD系では各スクリプトファイルに明示的な依存関係を示すタグを置いている。スクリプトの実行順序は、それらタグに基づいて"rcorder"スクリプトが決定する。
initをスキップする.
initはマシンを立ち上げる唯一の方法ではない。最近のブートローダ（たとえばLILOやGRUB）では、カーネルが初期化の最後に何を起動するかを指定することができる（既定値はもちろんcodice_15である）。これは、ブートローダのプロンプトにcodice_16などと打ち込むことで実現される。これは直接シェル（Bashやzsh）を使いたい場合に便利な機能である。たとえば、codice_17を使えば、シェルが使える状態で立ち上がり、パスワードを入力する必要もない。システム管理者がこれを安全でないと判断する場合は、ブートローダのパスワードを設定すればよい。
BSD系では、ブート処理は途中で割り込むことができ、codice_18コマンドでシングルユーザーモードで立ち上げることができる。シングルユーザーモードは技術的にはinitをスキップするわけではない。codice_15はやはり実行されるが、この場合codice_20に指定するプログラムのパスを聞いてくる（デフォルトではcodice_21）。ブートが行われている端末がcodice_11ファイルで "insecure" とされている場合（システムによっては現在の "securelevel" も関係する）、initは最初にrootのパスワードを聞いてくる（あるいは、ユーザーがcodice_23を押下すると通常のマルチユーザー立ち上げに戻る）。このプログラムが終了させられた場合、カーネルはマルチユーザーモードでの再立ち上げを行う。通常動作中にマルチユーザーモードからシングルユーザーモードへ移行させようとしたときも同様のことが起きる。カーネルのブート処理後、initを起動できない場合はパニックが発生して、システムは利用できなくなる。initのパス指定方法はオペレーティングシステム (OS) によって異なる（NetBSDではcodice_24、FreeBSDではcodice_25というローダー変数である）。
initの代替.
initに比較して何らかの長所を持つ代替がいくつも開発されてきた。