ubuntu upstart啟動流程分析

2021-09-06 15:35:43 字數 1106 閱讀 1195

ubuntu自從6.10版本之後就使用了較新的upstart機制來進行系統的初始化。

upstart是一種基於事件驅動的服務啟動機制,可以使多個系統任務在保持依賴關係的前提下併發啟動(據說這樣這樣啟動會比較快,理論上應當如此)。使用upstart機制時,我們通過/etc/init下的一系列 *.conf 配置檔案來指定各種系統服務的依賴關係(啟動時機)。系統啟動時,upstart主程序/sbin/init會解析這些配置檔案,按照指定的依賴關係併發啟動各種服務與應用。

主要程式

upstart有三個主要的程序:

init: upstart主程序,是linux系統中的「應用程式管理器」,是其他所有程序的源頭(pid為1),它會讀取配置檔案,處理各種服務和應用程式的依賴關係,根據事件(訊號)來啟動這些功能與服務,並動態地進行管理。

initctl:upstart事件管理器,可以被應用程式程序用來通知init哪些事件(訊號)發生。

telinit:管理執行級別(執行級別,為了相容其他舊的發行版而保留,在upstart裡面,執行級別的改變被當成某種事件來處理)。

啟動流程

對於ubuntu發行版,啟動/sbin/init之後upstart會經過以下啟動流程:

1. upstart內部初始化之後,啟動startup事件,ubuntu系統開始初始化;

2. 依賴於startup事件的任務啟動,其中最重要的是mountall,它進行了硬碟和檔案系統的掛載,並依次觸發了一系列事件,包括:local-filesystems, vitual-filesystems, all-swaps等;

3. vitual-filesystems事件觸發了udev相關的系列任務,用於裝置事件管理。其中。upstart-udev-bridge把裝置事件轉化為upstart事件,而udevtrigger對於已經掛載的裝置重新觸發裝置事件(因為udevd啟動的時候很多裝置事件已經錯過了)。

4. udevtrigger會觸發本地回環的網路介面啟動(net-device-up)事件,經過這一階段本地回環(127.0.0.1)可用;

5. 等到檔案系統掛載完成,本地回環的網路介面啟動,依賴於這兩個事件的的rc-sysinit在萬眾矚目中正式啟動,呼叫telinit設定了系統的執行級別,系統進入runlevel管理的新時代!!!

ubuntu upstart啟動流程分析

簡介 最近做linux課程設計 核心裁剪和檔案系統定製 選擇了ubuntu10.10作為實驗的平台。不同的linux發行版,使用者態的初始化機制有所差別,ubuntu自從6.10版本之後就使用了較新的upstart機制來進行系統的初始化。upstart是一種基於事件驅動的服務啟動機制,可以使多個系統...

ubuntu upstart 的基本概念

相信不少ubuntu的新手玩家都嘗試過設定runlever進入字元模式但沒有成功。當初年少無知,找不到解決問題的頭緒,也沒有解決問題的動力 今天重新審視這個問題,有了新知 首先,runlevel之類的東西是提供給init程序使用,包括init.d以及類似的有著一堆詭異名字的指令碼,用於linux載入...

冷啟動 熱啟動

冷啟動 1 接通電源啟動計算機的方式,稱為冷啟動。2 介紹 自檢 3 具體操作步驟如下 加電 自檢 引導作業系統。熱啟動 1 熱啟動是指在計算機已經開啟的狀態下,通過鍵盤重新引導作業系統。一般在宕機時才使用。2 方法 左手按住 ctrl 和 alt 不放開,右手按下 del 然後同時放開。3 熱啟動...