linux的啟動過程,是一個Linuxer必須要熟練掌握的。通過系統的啟動過程,可以更深入的理解Linux,假如linux系統出問題的話,可以通過啟動過程來分析原因,解決問題。而且,在掌握了linux的啟動流程後,還可以藉助宿主機來打造自己的Linux。
下面是我畫的一張簡單的Linux啟動流程圖
在瞭解啟動流程之前,我們應該Crowdsourced Security Testing道系統的幾個重要指令碼和設定檔,他們對應的路徑為:
1. /sbin/init
2. /etc/inittab
3. /etc/rc.d/rc.sysinit
4. /etc/rc.d/rcN.d //這是幾個檔案夾N代表數字1,2,3,4..
5. /etc/fstab
1.關於/sbin/init與/etc/inittab
關於/sbin/init ,它是一個二進位可執行檔,為系統的初始化程式,而/etc/inittab是它的設定檔,我們可以通過/etc/inittab來一睹 它的功能, 裡面的內容是一種固定的文字格式設定,id:runlevels:action:process
我們來通過它的內容來學習它之前,先瞭解寫運行層級的分類(0-6):
0: 關機 half
1: 單一使用者模式 singel user
2: 多使用者模式 multi user , 不提供nfs服務 without nfs
3: 完全多使用者字元模式 full multiuser text mod
4: 系統預留 officially undefined
5: 圖形登入介面 graphical login
6: 重啟 reboot
id:3:initdefault: //這裡定義linux的啟動時的運行層級,可以看到我的主機的啟動層級是3# System initialization.si::sysinit:/etc/rc.d/rc.sysinit //緊接著,運行系統第一個指令碼/etc/rc.d/rc/sysinit //它的action:sysyinit指的是定義系統初始化過程l0:0:wait:/etc/rc.d/rc 0 l1:1:wait:/etc/rc.d/rc 1 l2:2:wait:/etc/rc.d/rc 2 //然後就是載入服務了,他們被定義在/etc/rc.d/rcN.dl3:3:wait:/etc/rc.d/rc 3 //action:waite 這個進程在在對應層級啟動一次,知道它結束為止,我的系統啟動層級為3,所有執行rc 3對應的服務l4:4:wait:/etc/rc.d/rc 4l5:5:wait:/etc/rc.d/rc 5l6:6:wait:/etc/rc.d/rc 6 ca::ctrlaltdel:/sbin/shutdown -t3 -r now //這裡定義了一個組合快速鍵,熟悉吧,沒錯就是重啟,你可以把它注釋掉不用 pf::powerfail:/sbin/shutdown -f -h +2 "Power Failure; System Shutting Down" //這裡定義了ups電源,powerfail 指的是如果突然斷電,它對應的process命令是,提 示使用者系統電源失效,將要關機,提醒使用者把資料都儲存好pr:12345:powerokwait:/sbin/shutdown -c "Power Restored; Shutdown Cancelled" //這裡的action,powerokwaite,指的是系統復原供電,關機取消...1:2345:respawn:/sbin/mingetty tty1 //開啟終端,在系統準備工作做好後,就會啟動出6個終端,tty1~6 mingetyy就是終端的執行命令
2:2345:respawn:/sbin/mingetty tty2 //可以看到他們對應的層級是2345,你也可以注釋掉幾個,這樣啟動後,就會開啟你指定個數的終端... 3:2345:respawn:/sbin/mingetty tty3 //這裡的動作respawn意思是如果使用者關閉,那麼這個進程會立刻再次執行
4:2345:respawn:/sbin/mingetty tty4
5:2345:respawn:/sbin/mingetty tty5
6:2345:respawn:/sbin/mingetty tty6
x:5:respawn:/etc/X11/prefdm -nodaemon //當一切準備完畢,就會運行守護進程,它是不分運行層級的,同樣也是respawn