閱讀387 返回首頁    go 阿裏雲 go 技術社區[雲棲]


現代 Linux 的五大初始化係統(1992-2015)

在 Linux 和其他類 Uniux 係統中,init(初始化)進程是係統啟動時由內核執行的第一個進程,其進程 ID(PID)為 1,並靜默運行在後台,直到係統關閉。

init 進程負責啟動其他所有的進程,比如守護進程、服務和其他後台進程,因此,它是係統中其它所有進程之母(偏偏叫做“父進程”)。某個進程可以啟動許多個子進程,但在這個過程中,某個子進程的父進程結束之後,該子進程的父進程會變成 init 進程。

這麼多年過去了,許多的初始化係統在主流 Linux 脫穎而出,和本文中,我將你來看看在 Linux 操作係統最好的初始化係統。

1. System V Init

System V (SysV) 是一個在類 Unix 係統中最為成熟而且大受歡迎的初始化方案,是 Unix/Linux 係統中所有進程的父進程。SysV 是第一個商業 Unix 係統設計的初始化方案。

除了 Gentoo 使用自主的初始化係統、Slackware 使用 BSD 風格的初始化方案外,幾乎所有的 Linux 發行版都率先使用 SysV 作為初始化方案。

隨著時間的推移,由於一些設計上的缺陷,有幾個 SysV 初始化替換方案已經開發出來,用以為 Linux 創建更加高效和完美的初始化係統。

盡管這些替代方案都超越了 SysV 並提供了更多新特性,但它們仍然和原始 SysV 初始化腳本保持兼容。

2. SystemD

SystemD 是一個 Linux 平台中相對較新的初始化方案。它由 Fedora 15 引入,集成了各類工具以便更好的管理係統。主要目的是:係統初始化、管理和跟蹤引導進程中和係統運行時所有的係統進程。

Systemd 全麵有別於其他傳統的 Unix 初始化係統,特別是在啟動係統和服務管理方麵。它同樣兼容 SysV 和 LBS 初始化腳本。

其中較為突出的特性如下:

  • 純粹、簡單、高效的設計
  • 啟動時的並發和並行處理
  • 更好的 API
  • 開啟可選進程的移除功能
  • 使用 journald 來支持事件日誌
  • 使用 systemd calender timers 來支持任務計劃
  • 以二進製文件存儲日誌
  • 保存 systemd 的狀態以待今後查看
  • 與 GNOME 更好整合實現等

查看 Systemd 初始化係統簡介:https://fedoraproject.org/wiki/Systemd

3. Upstart

Upstart 是一個基於事件的初始化係統,由 Ubuntu 的製作團隊開發的,用以替代 SysV。它可以啟動不同的係統任務和進程、在係統運行時校驗進程並在係統關閉時結束進程。

它是一個使用 SysV 和 Systemd 啟動腳本的混合初始化係統,Upstart 中值得一提的特性如下:

  • Ubuntu 的原生初始化係統,但可以運行在其他所有的發行版中
  • 基於事件啟動/結束的任務和服務
  • 啟動/結束任務和服務時生成事件
  • 可以由其他係統進程發送事件
  • 使用 D-Bus 和 init 進程通信
  • 用戶可以啟動/結束其各自的進程
  • 可以再現崩潰的進程等

訪問 Upstart 主頁:https://upstart.ubuntu.com/index.html

4. OpenRC

OpenRC 是一個基於依賴關係的類 Unix 係統初始化方案,兼容 SysV。基本可以說是 SysV 的升級版,但必須要清楚記住的是:OpenRC 並非隻是完全替代 /sbin/init 文件。

它所提供的出色特性如下:

  • 可運行在包括 Gentoo 和 BSD 在內的多數 Linux 係統之中
  • 支持硬件觸發的初始化腳本(LCTT 譯注:如硬件熱插拔所觸發的)
  • 支持單個配置文件
  • 不支持單個服務配置文件
  • 以守護進程的方式運行
  • 並行服務啟動等

訪問 OpenRC 主頁:https://wiki.gentoo.org/wiki/OpenRC

5. runit

runit 同樣是一個跨平台初始化係統,可以運行在 GNU/Linux、Solaris、BSD 和 Mac OS X 中,用替代 SysV,同時提供服務監控。

相比於 SysV 和其他 Linux 初始化係統,它提供了一些好用和卓越的組件,如下:

  • 服務監控:每個服務都關聯一個服務目錄
  • 清理進程狀態,以保證每個進程處於幹淨狀態
  • 可靠的日誌機製
  • 快速的係統啟動和關閉
  • 可移植
  • 打包方便
  • 代碼體積小等

訪問 runit 主頁:https://smarden.org/runit/

正如我之前所說的,Linux 中的初始化係統負責啟動和管理所有的進程。此外,SysV 是 Linux 係統中主要的初始化係統,但由於一些性能缺陷,係統開發者已經開發出幾個替代品。

原文發布時間為:2016-10-18

本文來自雲棲社區合作夥伴“Linux中國”

最後更新:2017-06-05 15:32:03

  上一篇:go  這些廢棄的 HTML 標簽不要用
  下一篇:go  概覽最有前景的下一代嵌入式 Linux 軟件更新機製