核心的加載
由boot loader管理而開始讀取核心檔案後,linux将核心解壓到主存儲器中,并利用核心的功能,開始與驅動各個周邊裝置,包括儲存裝置、CPU、網絡卡、聲霸卡等。
虛拟檔案系統(Initial RAM Disk )一般使用檔名為/boot/initrd 它可以通過boot loader來加載到記憶體中,然後此檔案會被解壓縮并在記憶體中仿真成一個根目錄,且此仿真在記憶體中的檔案系統能提供一個可執行程式,通過此程式來加載開機過程中所最需要的核心子產品,通常為USB、RAID、LVE、SCSI等檔案系統與磁盤接口的驅動程式。載入完成後,重新呼叫/sbin/init來開始後續的正常開機流程。
根目錄在特殊的磁盤接口 (USB, SATA, SCSI) , 或者為 LVM, RAID 等等,會需要 initrd。
如為IDE接口,并使用預設的ext2/ext3檔案系統,不需要initrd也可以正常開機。
核心加載完成後,主機開始正确動作。
開始執行系統的第一支程式 /sbin/init
此程式主要功能是準備軟體執行的環境,包括系統的主機名,網絡設定,語系處理,檔案系統格式及其它服務的啟動等。
所有的動作都會透過init的配置檔案/etc/inittab來規劃,inittab裡設定有圍住的runlevel.
rnulevel 介紹
0-halt
1-single user mode 單人維護模式,用在系統故障時維護。
2-Multi-user,without NFS 類似runlevel3,但無NFS服務
3-Full molti-user mode 完整含有網絡功能的純文字模式
4-unused 系統保留功能
5-X11 與runlevel3類似,但加載X WINDOW
6-reboot 重新啟動
init 的處理流程
1.先取得runlevel
2.使用/etc/rc.d/rc.sysinit進行系統初始化
3.由于runlevel 是5,是以隻進行 l5:5:wait:/etc/rc.d/rc 5
4.設定好 ctrl + alt + del組合鍵功能
5.設定不斷電系統的pf.pr兩種機制
6.啟動mingetty的六個終端機 (tty1~tty6)
7.啟動圖形視窗
init 處理系統初始化流程 (/etc/rc.d/rc.sysinit)
在/etc/inittab中, si::sysinit:/etc/rc.d/rc.sysinit 表示開始加載各項系統服務前需先配置好整個系統環境。這裡就是自用/etc/rc.d/rc.sysinit 這個shell script來進行設定。
rc.sysinit中的很多預設配置檔案都在 /etc/sysconfig/ 中.
rc.sysinit主要工作:
1.取得網絡環境與主機類型
讀取網絡配置檔案/etc/sysconfig/network ,獲得主機名,網關等網絡設定
2.測試與挂載記憶體裝置/proc 及USB裝置/sys
3.決定是否啟動SELinux
4.啟動系統的随機數生成器(密碼加密演算)
5.設定console字形
6.設定顯示于開機過程中的歡迎畫畫 (test banner)
7.設定系統時間 與時區 /etc/sysconfig/clock
8.接口裝置的偵測與PNP參數測試
9.使用者自定義子產品的加載 /etc/sysconfig/modules/*.modules
10.加載核心的相關設定 /etc/sysctl.conf
11.設定主機名與初始化電源管理子產品ACPI
12.初始化軟體磁盤陣列 /etc/mdadm.conf
13.初始化LBM檔案系統功能
14.以fsck檢驗磁盤檔案系統, 進行filesystem check
15.進行磁盤配額quota的轉換
16.重新以可讀寫模式挂載系統磁盤
17.啟動quota功能,
18.啟動系統虛拟随機數生成器pseudo-random
19.清除開機過程中的臨時檔案
20.将開機相關資訊加載到/var/log/dmesg
使用者自定義開機啟動程式 /etc/rc.d/rc.local
是在其它的init scripts執行完後才執行,類似WINDOWS 的啟動
.本文轉自 還不算暈 51CTO部落格,原文連結:http://blog.51cto.com/haibusuanyun/751250