| Linux 系統任何時候都運行在一個指定的運行級上,並且不同的運行級的程序和服務都不同,所要完成的工作和要達到的目的都不同,系統可以在這些運行級之間進行切換,以完成不同的工作。 Ubuntu 的系統運行級別: 0 系統停機狀態 1 單用戶或系統維護狀態 2~5 多用戶狀態 6 重新啟動 查看當前運行級別: runlevel runlevel 顯示上次的運行級別和當前的運行級別,"N"表示沒有上次的運行級別 切換運行級別: int [0123456Ss] 即在 init 命令后跟一個參數,此參數是要切換到的運行級的運行級代號,如:用 init 0 命令關機;用 init 6 命令重新啟動。 Linux 系統主要啟動步驟: 1. 讀取 MBR 的信息,啟動 Boot Manager Windows 使用 NTLDR 作為 Boot Manager,如果您的系統中安裝多個版本的 Windows,您就需要在 NTLDR 中選擇您要進入的系統。 Linux 通常使用功能強大,配置靈活的 GRUB 作為 Boot Manager。 2. 加載系統內核,啟動 init 進程 init 進程是 Linux 的根進程,所有的系統進程都是它的子進程。 3. init 進程讀取/etc/inittab文件中的信息,並進入預設的運行級別, 按順序運行該運行級別對應文件夾下的腳本。腳本通常以 start 參數啟動,並指向一個系統中的程序。 通常情況下, /etc/rcS.d/ 目錄下的啟動腳本首先被執行,然后是/etc/rcN.d/ 目錄。 例如您設定的運行級別為 3,那么它對應的啟動目錄為 /etc/rc3.d/ 4. 根據 /etc/rcS.d/ 文件夾中對應的腳本啟動 Xwindow 服務器 xorg Xwindow 為 Linux 下的圖形用戶界面系統。 5. 啟動登錄管理器,等待用戶登錄 Ubuntu 系統默認使用 gdm 作為登錄管理器,您在登錄管理器界面中 輸入用戶名和密碼后,便可以登錄系統。(您可以在 /etc/rc3.d/文件夾中找到一個名為 S13gdm 的鏈接)  安裝sysv-rc-conf sudo apt-get install sysv-rc-conf 使用sysv-rc-conf sudo sysv-rc-conf 操作界面十分簡潔,你可以用鼠標點擊,也可以用鍵盤方向鍵定位,用空格鍵選擇,"X"表示開啟該服務。 用Ctrl+N翻下一頁,用Ctrl+P翻上一頁,用Q退出。   如上圖所示,第2列打X的項與/etc/rc2.d目錄下的軟連接文件完全一致,S列下選中的項與/etc/rcS.d目錄下的軟連接文件也完全一致 /etc/rc0.d目錄下是系統關機時,執行的腳本(停止服務,卸載一些設備)  ======================= 參考: http://no001.blog.51cto.com/1142339/411951/ rc.d的內容如下: init.d/ :各種服務器和程序的二進制文件存放目錄。 rcx.d/: 各個啟動級別的執行程序連接目錄。里頭的東西都是指向init.d/的一些軟連接。具體的后邊敘述。 還有三個腳本:rc.sysinit, rc, rc.local
redhat的啟動方式和執行次序是: 加載內核 執行init程序 /etc/rc.d/rc.sysinit # 由init執行的第一個腳本 /etc/rc.d/rc $RUNLEVEL # $RUNLEVEL為缺省的運行模式 /etc/rc.d/rc.local /sbin/mingetty # 等待用戶登錄
在Redhat中,/etc/rc.d/rc.sysinit主要做在各個運行模式中相同的初始化工作,包括: 調入keymap以及系統字體 啟動swapping 設置主機名 設置NIS域名 檢查(fsck)並mount文件系統 打開quota 裝載聲卡模塊 設置系統時鍾 等等。
/etc/rc.d/rc則根據其參數指定的運行模式(運行級別,你在inittab文件中可以設置)來執行相應目錄下的腳本。 凡是以Kxx開頭的 ,都以stop為參數來調用;凡是以Sxx開頭的,都以start為參數來調用。調用的順序按xx 從小到大來執行。 例如,假設缺省的運行模式是3,/etc/rc.d/rc就會按上述方式調用 /etc/rc.d/rc3.d/下的腳本。 值得一提的是,Redhat中的運行模式2、3、5都把/etc/rc.d/rc.local做為初始化腳本中的最后一個, 所以用戶可以自己在這個文件中添加一些需要在其他初始化工作之后,登錄之前執行的命令。 init在等待/etc/rc.d/rc執行完畢之后(因為在/etc/inittab中/etc/rc.d/rc的 action是wait), 將在指定的各個虛擬終端上運行/sbin/mingetty,等待用戶的登錄。 至此,LINUX的啟動結束。 使用者自訂開機啟動程序 (/etc/rc.d/rc.local) 在完成 run level 3 的服務啟動后,如果我還有其他的動作想要完成時, 舉例來說,我還想要寄一封 mail 給某個系統管理帳號,通知他,系統剛剛重新開機完畢,那么,是否應該要制作一個 shell script 放置在 /etc/rc.d/init.d/ 里面,然后再以連結方式連結到 /etc/rc.d/rc3.d/ 里面呢? 呵呵!當然不需要!還記得上一小節提到的 /etc/rc.d/rc.local 吧? 這個檔案就可以執行您自己想要執行的系統指令了。像不像早期 DOS 年代的 autoexec.bat 與 config.sys 呢? ^_^ 也就是說,我有任何想要在開機時就進行的工作時,直接將他寫入 /etc/rc.d/rc.local ,那么該工作就會在開機的時候自動被載入喔!而不必等我們登入系統去啟動呢!是否很方便啊! 一般來說,鳥哥就很喜歡把自己制作的 shell script 完整檔名寫入 /etc/rc.d/rc.local ,如此一來,開機就會將我的 shell script 執行過,真是好棒那! |