天天看點

加載核心并執行init程式

核心的加載

由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

繼續閱讀