深圳市穩能科技有限公司
无限法则第三赛季皮肤烂大街 關于穩能 產品展示 新聞中心 資料下載 技術支持 人才招聘 在線留言 聯系我們
產品分類
 
新聞動態
您現在的位置: 網站首頁 >> 新聞動態

Linux 啟動的理解

發布時間:2011-3-10 點擊:10930 字體大?。?span onClick="javascript:fontSize('news_content','12px')">小 返回

无限法则第三赛季皮肤烂大街 www.nhzjp.icu 要移植Linux首先得明白Linux的工作流程。下面描述下我理解的啟動過程。

1:從Bios中讀取硬件信息,開始自檢,如果發現硬件錯誤,則報警。讀取硬件參數時,可以讀取到用戶設定啟動盤。

2:從啟動盤的主引導分區(就是這個啟動盤的第一個分區)讀取該Linux 內核的啟動引導程序(Boot Loader).執行引導程序。

3:引導程序從啟動盤中讀取內核,加載Linux 的內核(Kernel)到內存中, 并把控制權交給kernel.(通常是程序跳轉到Kernel 的main 函數處).

4:Kernel執行,它先檢測硬件并加載需要的驅動程序。

       Linux內核的驅動程序是動態加載的。這些驅動程序是放在 /lib/modules 目錄內。既然這些內核驅動程序都在根目錄下,為了能正確取得驅動,內核也必須掛載到根目錄下。現在假設內核是放在內核不認識的設備中,例如SATA硬盤,要驅動這個硬盤,需要加載它的驅動,但是驅動程序又在該硬盤的/lib/modules中,自然就無法得到,啟動失敗。

  為了解決問題,使用了一種虛擬文件系統,名字為 /boot/initrd, 它通過bootloader 加載在內存中。這個文件被解壓縮后,被仿真成個根目錄。

Initrd 是將/lib/modules/.. 的啟動過程中需要的驅動程序打包成一個文件,文件名就是initrd. 在內核中被解壓縮后,仿真成根目錄,內核就可以從中啟動需要的驅動程序了.

如果內核驅動程序是放在內核認識的設備上,例如ide硬盤,就不需要initrd. 因為內核可以直接從設備上讀取驅動程序.

5:硬件驅動正常后,kernel 調用/sbin/init 程序執行初始化啟動任務..

       初始化任務是根據配置文件執行的,/etc/inittab.

/etc/inittab 內容如下:

Id:5:initdefault:    //系統上電默認運行的級別 5 級

Si::sysinit:/etc/rc.d/rc.sysinit // 指定系統初始化要執行的腳本文件 /etc/rc.d/rc.sysinit

0::wait:/etc/rc.d/rc 0           //level 0 的腳本放的地方 /etc/rc.d/rc0.d

1

..

7::wait:/etc/rc.d/rc 7

Ca::ctrlaltdel:/sbin/shutdown –t3 now   //設定重啟按鍵

1:2345:respawn:/sbin/mingetty tty1     //啟動幾個終端

..

6       …..              tty6

X:5:respawn:/etc/X11/prefdm –nodaemon    //運行x window

Init 進程先取得默認運行級別,再執行 /etc/rc.d/rc.sysinit 腳本,初始化系統工作環境。

初始化包括取得網路環境,測試掛載內存/proc 和usb 設備/sys., 設定字體,顯示歡迎界面,

設定時鐘,加載用戶自定義的??榍?,等等…

初始化后,運行剛選的級別5 里面的服務程序。最后運行 x window ,等用戶輸入。

下一條: 熱點新聞
 藍牙技術的開發和應用
 Linux 啟動的理解
 无限法则第三赛季皮肤烂大街
Copyright ? 深圳市穩能科技有限公司 All rights reserved
電話:0755-33557789 傳真:0755-23002601 網址:无限法则第三赛季皮肤烂大街 www.nhzjp.icu E-mail:[email protected]
地址:深圳市光明新區公明街道紅花北路社保大樓417-418 穩能科技 - 藍牙技術應用解決方案的專業供應商