init（為的簡寫）是 Unix 和類 Unix 系統中用來產生其它所有程序的程式。它以守護程序的方式存在，其程序號為 1。Linux 系統在開機時載入 Linux 核心後，便由 Linux 核心載入 init 程式，由 init 程式完成餘下的開機過程，比如載入執行級別，載入服務，啟動 Shell 圖形化介面等等。 Unix 系列中（如 System III 和 System V）init 的作用，和研究中的 Unix 和 BSD 衍生版本相比，發生了一些變化。大多數 Linux 發行版是和 System V 相相容的，但是一些發行版如 Slackware 採用的是 BSD 風格，其它的如 Gentoo 是自己定製的。後來 Ubuntu 和其他一些發行版採用 Upstart 來代替傳統的 init 處理程序。至 2015 年，大部分 Linux 發行版都已採用新的 systemd 替代 System V 和 Upstart，但 systemd 向下相容 System V。 BSD 風格 BSD init 執行存放於 etcrc 的初始化 shell 指令碼，然後啟動基於文字模式的終端（getty）或者基於圖形介面的終端（視窗系統，如 X）。這裡沒有執行模式的問題，因為檔案 rc 決定了 init 如何執行。 值得注意的是，現代的 BSD 衍生系統一直支援使用 rclocal 檔案的方式，它將在正常啟動過程接近最後的時間以子指令碼的方式來執行。這樣做減少了整個系統無法啟動的風險。然後，第三方軟體包可以將它們獨立的 startstop 指令碼安裝到一個本地的 rcd 目錄中（通常這是由 ports collectionpkgsrc 完成的）。FreeBSD 和 NetBSD 現在預設使用 rcd，該目錄中所有的使用者啟動指令碼，都被分成更小的子指令碼，和 SysV 類似。rcorder 通常根據在 rcd 目錄中指令碼之間的依賴關係來決定指令碼的執行順序。 SysV 風格 System V init 檢查 etcinittab 檔案中是否含有 initdefault 項。這告訴 init 系統是否有一個預設執行模式。如果沒有預設的執行模式，那麼使用者將進入系統控制檯，手動決定進入何種執行模式。 執行模式 System V 中執行模式描述了系統各種可能的狀態。通常會有 8 種執行模式，即執行模式 0 到 6 和 S 或者 s。其中執行模式 3 為 保留的 執行模式： 0 關機 1 單使用者模式 6 重啟 除了模式 016 外，每種 Unix 和 Unixlike 系統對執行模式的定義不太一樣。通常在 etcinittab 檔案中定義了各種執行模式的工作範圍。 目前絕大多數 Linux 發行版已經基於新的 systemd，systemd 一般不再使用 etcinittab 檔案，也使用新的 target 取代 System V 的執行等級，但仍然相容 System V 的執行等級。若要設定系統預設的執行模式，需要使用 systemctl default targetnametarget 命令。 預設的執行模式 作業系統 預設的執行模式 AIX 2 Arch Linux 3 CentOS 3 Debian GNULinux 2 Gentoo Linux 3 Mandriva Linux 5 Mac OS X 3 Red Hat Linux Fedora 3 or 5 Slackware Linux 3 Solaris 3 SUSE Linux 5 Ubuntu 2 上面的表中有兩種 Linux 發行版預設的執行模式為 5，模式 5 是多使用者圖形環境（X Window System），通常還包括 X 顯示管理器。然而在 Solaris 作業系統中，模式 5 被保留用來執行關機和自動切斷電源。 大多數作業系統的使用者可以用下面的命令來判斷當前的執行模式是什麼： runlevel who r 在 root 許可權下，執行 telinit 或者 init 命令可以改變當前的執行模式。etcinittab 檔案中設定的預設的執行模式在initdefault 項中。 跳過 init Linux 系統中，現代的 bootloader（如 LILO 或者 GRUB），使用者可以在初始化過程中最後啟動的程序來取代預設的 sbininit。 通常是在 bootloader 環境中透過執行 initfoobar 命令。例如，如果執行 initbinbash，啟動單使用者 root 的 shell 環境，無需使用者密碼。 BSD 的變種，大多數平臺，bootstrap 程式是可以被打斷的，然後執行 boot s 命令進入單使用者模式。 單使用者模式並不沒有跳過 init，它仍然可以執行 sbininit，但是它將使 init 詢問 exec 將要執行的命令（預設為 binsh）的路徑，而不是採用正常的多使用者啟動順序。如果核心啟動時在 etcttys 檔案中被標註為 不安全（在某些系統中，當前的 安全模式 可能會有些變化），在允許這種情況（或者回退到單使用者模式，如果使用者執行 CTRLD），init 將首先詢問 root 使用者的密碼。 如果該程式退出，核心將在多使用者模式下重新執行 init。如果系統從多使用者模式切換到單使用者模式，還將碰到上述的情況。 如果核心載入後，init 不能被正常啟動，這將導致 panic 錯誤，此時系統將不可使用。想要透過 init 自身來改變 init 的路徑，不同的版本情況不太一樣（NetBSD 中可執行 boot a；FreeBSD 中利用 init_path 命令裝載變數）。 其他風格 很多人一直努力地從某些方面改進傳統的 init 守護程序，使它變得更完善。下面列出的是一些改進（排序不分先後）： SystemStarter：用來替代 launchdAppleMac OS X 開啟程序 Initng：完全代替 init，可以非同步開啟程序 Upstart：完全代替 init，可以非同步開啟程序，曾由 Ubuntu 等使用 Service Management Facility：完全代替 重新設計 Solaris 啟動 Solaris 10 runit：跨平臺的完全代替 init 可以並行啟動服務 BootScripts：GoboLinux Mudur：用 Python 寫成的 init 替代品，可以非同步開啟程序，PardusLinux 發行版 systemd：完全替代 init，可並行啟動服務，並能減少在 shell 上的系統開銷，相比傳統的 System V 是一大革新，已被大多數 Linux 發行版所使用 下面列出的專案還沒有大範圍的使用： eINIT，完全代替 init，可以非同步開啟程序，但是完成這個過程可以不使用 shell 指令碼 svscan 來自 daemontools 被用作 1 號程序 似乎將被 runit 替代 cinit twsinit，部分用 x86 彙編寫成，只是用來證明一種概念 minit OpenRC，由 Gentoo 客制 參考文獻 外部連結 Linux init man page FreeBSD init man page bootscripts runit minit rcd busybox smf and milestones in Solaris 10 cinit twsinit Mudur 參見 pidof 或者 killall5，從 System V 開始在很多發行版中使用的另一種程式 CategoryUnix 程序和任務管理相關軟體