Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

4.2.2. 新的 Init 系統

systemd 系統/服務管理程式置換了使用於先前 Red Hat Enterprise Linux 發行版中的 SysV init 系統。
systemd 乃開機時的第一項程序,以及關機時最後一項終止的程序。它會協調剩下的開機程序並為使用者配置系統。在 systemd 下,互相依存的程式可平行載入,大幅提升開機程序的速度。
以使用者經驗和編程 API 的角度來看,systemd 與 SysV 的相容度極高。然而有些例外狀況還是存在的。詳情請參閱〈節 4.2.2.1, “向後相容性”〉。
移至 systemd 也必須更改 Red Hat Enterprise Linux 的管理工具。詳情請參閱 systemctl man page 或是《Red Hat Enterprise Linux 7 系統管理員指南》。
欲取得更多有關於開機程序上的相關資訊,請參閱《Red Hat Enterprise Linux 7 安裝指南》。欲取得更多有關於 systemd 上的相關資訊,請參閱《Red Hat Enterprise Linux 7 系統管理員指南》。這兩本指南皆能由〈http://access.redhat.com/site/documentation/Red_Hat_Enterprise_Linux/〉存取。

4.2.2.1. 向後相容性

以使用者經驗和編程 API 的角度來看,systemd 設計上與 SysV 的相容度極高。然而有些例外的相容限制情況還是存在的。
  • 標準的 /etc/init.d/servicename 指令(start stopstatus)仍然能夠使用。然而,Red Hat 建議您使用 /usr/sbin/service servicename 指令,因為它們會直接轉送至 systemd,而非使用舊式的 init script。
  • Run level 支援受到限制。所有的 SysV run level 皆對映至 systemd 目標;然而,並非所有 systemd 目標皆對映至 SysV run level。部分目標會檢查目前的 run level,因此將會返回 N(不明的 run level)。Red Hat 建議避免進行 run level 檢查而移至更有幫助的 systemd 目標。
  • 舊式的 run levels 2、3 和 4 就預設值全都對映至 multi-user.target systemd 目標。使用者能藉由配置不同的 systemd 來修改此特性。
  • 服務會重新執行並且不繼承引動使用者的任何 context。依賴繼承 context 的 init script 將無法使用。
  • systemd 不支援在 init script 中使用 startstopstatus 以外的額外動詞,請將它們移至一個輔助的 script 中。
  • Linux Standard Base 表頭資訊現在已能在 run time 進行時,讓 systemd 完整詮釋並使用。
  • 所有 init script 作業現在在經過了 5 分鐘無反應的情況下將會逾時,以避免系統因為 init script 中止而停滯。
  • systemd 僅會停用執行中的服務;未啟用的服務在關機時也不會被停用。
  • chkconfig 工具僅會顯示 SysV 服務和 run level 資訊,並且可能會輸出造成誤導的資訊。Red Hat 建議使用 sysctl 指令來代替。
  • SysV 服務,就算是擁有 root 權限的使用者,現在也無法再取得即時的排程了。
  • 服務已不再能由 stdin 讀取了。若您希望互動式的 script,請考慮使用 systemd 所支援的最小型密碼查詢架構。欲取得更多有關於此功能的相關資訊,請參閱 man page:
    $ man systemd-ask-password
  • 先前版本的 Red Hat Enterprise Linux 包含了一個 System z 特屬的預安裝 script(linuxrc.s390),它會在開機時,啟用 System z 系統。新的 init 系統將忽略此預安裝 script,並且 System z 系統現在的開機方式與 AMD64, Intel® 64 和 Power 系統相同。