linux
系統主要通過以下步驟啟動:(參考版本:11.10)
1、讀取mbr的資訊,啟動boot manager
2、載入系統核心,啟動/sbin/init程序
init程序是
linux
的根程序,所有的系統程序都是它的子程序。
3、init程序讀取「/etc/inittab」(注:新版本找不到此檔案)檔案中的資訊,並進入預設的執行級別,按順序執行該執行級別對應資料夾下的指令碼:
/etc/init.d中儲存著可執行指令碼檔案。/etc/rcs.d和/etc/rcn(0-9)中儲存有指令碼的鏈結檔案。
通常情況下,「/etc/rcs.d/」目錄下的鏈結檔案首先被執行,然後根據執行級別選擇n,執行「/etc/rcn.d/」目錄下的鏈結檔案。例如您設定的執行級別為3,那麼它對應的啟動目錄為「/etc/rc3.d/」。
鏈結檔案以k/s+兩位數字+指令碼名字方式命名,s/k代表指令碼執行的引數為start/stop,兩位數字代表鏈結檔案執行的優先順序。
注:此時執行的指令碼處於root使用者許可權下。
注:如需增加自定義開機啟動指令碼,需要建立指令碼,拷貝到/etc/init.d目錄下,增加可執行屬性,並在對應的執行級別/etc/rcn.d目錄下按sxxscript的方式建立指令碼的鏈結檔案。系統還提供了對應的指令碼工具update-rc.d幫助快速的建立和刪除鏈結檔案。(見附錄)
4、根據「/etc/rcs.d/」資料夾中對應的指令碼啟動xwindow伺服器「xorg」,xwindow為linux下的圖形使用者介面系統。
5、啟動登入管理器,等待使用者登入
ubuntu系統預設使用gdm作為登入管理器,您在登入管理器介面中輸入使用者名稱和密碼後,便可以登入系統。(您可以在「/etc/rc3.d/」資料夾中找到乙個名為「s13gdm」的鏈結)
此時將進入使用者許可權。
附錄:update-rc.d用法
1) 將你的啟動指令碼複製到/etc/init.d目錄下
以下假設你的指令碼檔名為test。
2) 設定指令碼檔案的許可權
$ sudo chmod 755 /etc/init.d/test
3) 執行如下命令將指令碼放到啟動指令碼中去:
$ cd /etc/init.d
$ sudo update-rc.d test defaults 95
注:其中數字95是指令碼啟動的順序號,按照自己的需要相應修改即可。在你有多個啟動指令碼,而它們之間又有先後啟動的依賴關係時你就知道這個數字的具體作用了。該命令的輸出資訊參考如下:
update-rc.d: warning: /etc/init.d/test missing lsb informationupdate-rc.d: see
解除安裝啟動指令碼的方法:
$ cd /etc/init.d
$ sudo update-rc.d -f test remove
命令輸出的資訊參考如下:
removing any system startup links for /etc/init.d/test … /etc/rc0.d/k95test /etc/rc1.d/k95test /etc/rc2.d/s95test /etc/rc3.d/s95test /etc/rc4.d/s95test /etc/rc5.d/s95test /etc/rc6.d/k95test
Ubuntu啟動流程詳解
現行的linux distributions中主流的有兩種init方式 一種是廣為流傳的system v initialization,它 於unix並且至今仍被各種linux distributions所採用 另一種是近幾年提出的upstart方式,基於事件機制,系統的所有服務,任務都是由事件驅動...
ubuntu10 04啟動流程
關於linux的啟動流程已近有很多人討論過,但是很多時候都不是適合自己 這就是linux版本差異造成的,比如目前我看的10.04版本,就和很多網上的帖子論述的不一樣 所以需要自己邊看邊實驗 大致的順序就是 etc init.d rc sysinit.sh etc init.d rcs etc ini...
ubuntu11 04的啟動流程
現行的linux 系統的啟動方式主要有兩種i 一種是廣為流傳的system v initialization,另一種是近幾年提出的upstart方式,基於事件機制,系統的所有服務,任務都是由事件驅動的。採用後一種方式的目前 主要ubuntu 6.10 and later fedora 9.10 an...