轉載位址:http://guoting.blog.51cto.com/8886857/1530109
啟動 init 程序
init 程序是系統啟動的第一個程序。其他程序都是有此程序控制fork出來的,也就是說,init是其他程序的“祖先”,PID=1。當然,PID=0程序我們稱為空閑程序是屬于核心的。
init啟動後所做的事情:
1、讀取/etc/inittab來讀取預設級别 假設:讀取到的預設級别是 3
/etc/init/*.conf
- # 啟動級别:(runlevel)
- # 0:關機
- # 1:單使用者模式
- # 2:多使用者模式,不支援 NFS 功能
- # 3:完全多使用者模式,支援文本接口
- # 4:預留模式
- # 5:完全多使用者模式,支援圖形模式
- # 6:關機
- # /etc/inittab檔案格式如下,這是遵循了CentOS5的風格。
- id:3:initdefault:
2、執行初始化系統腳本 /etc/rc.d/rc.sysinit 來初始化腳本
這個大家有機會可以讀讀,腳本主要的作用如下:
- # 擷取網絡環境與主機類型。首先會讀取網絡環境設定檔案"/etc/sysconfig/network",擷取主機名稱與預設網關等網絡環境。
- # 答應文本歡迎資訊。
- # 挂載/etc/fstab檔案中定義的其它檔案系統。
- # 激活swap
- # 檢測根檔案系統,并以讀寫方式重新挂載
- # 決定是否啟動SELinux和udev。
- # 接口裝置的檢測與即插即用(pnp)參數的測試。
- # 使用者自定義子產品的加載。使用者可以再"/etc/sysconfig/modules/*.modules"加入自定義的子產品,此時會加載到系統中。
- # 加載核心的相關設定。按"/etc/sysctl.conf"這個檔案的設定值配置功能。
- # 設定系統時間(clock)。
- # 設定終端的控制台的字形。
- # 設定raid及LVM等硬碟功能。
- # 以方式檢視檢驗磁盤檔案系統。
- # 進行磁盤配額quota的轉換。
- # 重新以讀取模式載入系統磁盤。
- # 啟動quota功能。
- # 啟動系統随機數裝置(産生随機數功能)。
- # 清楚啟動過程中的臨時檔案。
- # 将啟動資訊加載到"/var/log/dmesg"檔案中。
3、然後執行 /etc/rc.d/rc 腳本
此腳本運作的時候此腳本的時候,會讀取/etc/rc.d/rc3.d/下的所有腳本,來控制系統啟動的時候啟動或者關閉那些服務
- # 這裡面的腳本大緻分為 2 類,以 S 開頭的和以 K 開頭的腳本。
- # S 代表開機時啟動的,K 表示開機時不啟動。
- # 每個檔案的命名格式,例如:S01sysstat S 開機啟動 01 啟動次序 sysstat 啟動腳本名
- # 啟動的定義是在每個腳本中定義的:例如
- # # chkconfig: - 85 15
- # 預設級别 啟動次序 不啟動次序
這些腳本是否開機自啟動,可由 chkconfig 指令來管理。
- # 常用選項:
- # chkconfig --add SRV_SCRIPT 可以将自己寫的一些腳本,讓此指令統一管理。例如:chkconfig --add httpd
- # chkconfig --del SRV_SCRIPT 将服務删除,意思就是服務不由chkconfig這種機制來管理
- # chkconfig SRV_SCRIPT {on|off} 設定服務開機是否自啟動,預設管理的級别是2345.
- # --level 2345 等,指定預設級别,可以與其他選項一起使用
4、執行/etc/rc.d/rc.local腳本,此腳本是啟動過程中最後啟動的一個腳本。
最後會執行 /bin/login 登入使用者。至此系統啟動過程完成。