天天看點

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

在 linux 和其他類 uniux 系統中,init(初始化)程序是系統啟動時由核心執行的第一個程序,其程序 id(pid)為 1,并靜默運作在背景,直到系統關閉。

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

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

<a target="_blank"></a>

system v (sysv) 是一個在類 unix 系統中最為成熟而且大受歡迎的初始化方案,是 unix/linux 系統中所有程序的父程序。sysv 是第一個商業 unix 系統設計的初始化方案。

除了 gentoo 使用自主的初始化系統、slackware 使用 bsd 風格的初始化方案外,幾乎所有的 linux 發行版都率先使用 sysv 作為初始化方案。

随着時間的推移,由于一些設計上的缺陷,有幾個 sysv 初始化替換方案已經開發出來,用以為 linux 建立更加高效和完美的初始化系統。

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

systemd 是一個 linux 平台中相對較新的初始化方案。它由 fedora 15 引入,內建了各類工具以便更好的管理系統。主要目的是:系統初始化、管理和跟蹤引導程序中和系統運作時所有的系統程序。

systemd 全面有别于其他傳統的 unix 初始化系統,特别是在啟動系統和服務管理方面。它同樣相容 sysv 和 lbs 初始化腳本。

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

純粹、簡單、高效的設計

啟動時的并發和并行處理

更好的 api

開啟可選程序的移除功能

使用 journald 來支援事件日志

使用 systemd calender timers 來支援任務計劃

以二進制檔案存儲日志

儲存 systemd 的狀态以待今後檢視

與 gnome 更好整合實作等

upstart 是一個基于事件的初始化系統,由 ubuntu 的制作團隊開發的,用以替代 sysv。它可以啟動不同的系統任務和程序、在系統運作時校驗程序并在系統關閉時結束程序。

它是一個使用 sysv 和 systemd 啟動腳本的混合初始化系統,upstart 中值得一提的特性如下:

ubuntu 的原生初始化系統,但可以運作在其他所有的發行版中

基于事件啟動/結束的任務和服務

啟動/結束任務和服務時生成事件

可以由其他系統程序發送事件

使用 d-bus 和 init 程序通信

使用者可以啟動/結束其各自的程序

可以再現崩潰的程序等

openrc 是一個基于依賴關系的類 unix 系統初始化方案,相容 sysv。基本可以說是 sysv 的更新版,但必須要清楚記住的是:openrc 并非隻是完全替代 /sbin/init 檔案。

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

可運作在包括 gentoo 和 bsd 在内的多數 linux 系統之中

支援硬體觸發的初始化腳本(lctt 譯注:如硬體熱插拔所觸發的)

支援單個配置檔案

不支援單個服務配置檔案

以守護程序的方式運作

并行服務啟動等

runit 同樣是一個跨平台初始化系統,可以運作在 gnu/linux、solaris、bsd 和 mac os x 中,用替代 sysv,同時提供服務監控。

相比于 sysv 和其他 linux 初始化系統,它提供了一些好用和卓越的元件,如下:

服務監控:每個服務都關聯一個服務目錄

清理程序狀态,以保證每個程序處于幹淨狀态

可靠的日志機制

快速的系統啟動和關閉

可移植

打包友善

代碼體積小等

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

原文釋出時間為:2016-10-18

本文來自雲栖社群合作夥伴“linux中國”

繼續閱讀