linux開機順序(詳解)

linux的啓動過程詳解
一 啓動概要
1BIOS自檢
2 讀取MBR的信息(MBR可以是lilo,grub,spfdisk等)
3 加載內核
4 內核執行init程序,並取得run-level信息
5 init執行/etc/rc.d/rc.sysinit
6 執行/etc/rc.d/rc.X.d/[KS]
7 init執行相應的run-level的腳本
8 init執行/etc/rc.d/rc.local腳本
9 執行/bin/login程序,並等待使用者登陸
10 登陸之後開始以shell掌控主機
 
二 啓動詳解
1 BIOS自檢
    計算機在接通電源之後首先進行BIOS自檢,即我們通常所說的POST(Power On Self Test)。自檢完成後,然後根據BIOS中設置的引導順序從硬盤、軟盤、光盤引導,通常我們使用硬盤來引導系統。在硬盤的第一個扇區(0磁道0柱面1扇區)有一段代碼叫做MBR(即主引導記錄),當MBR被加載到內存中後,BIOS將控制權交給MBR。
2 讀取MBR的信息(MBR可能是lilo、grub、spfdisk等)
    MBR是一段可執行代碼,大小爲512個字節,該代碼的作用是告訴我們的系統如何引導linux,例如“kernel /boot/vmlinuz-2.6.9.-5.EL ro root=LABEL=/”,這是一段grub,vmliunz的是可引導的壓縮內核,grub將告訴系統如何加載vmliunz。通常RedHat使用grub來作爲MBR。這是因爲grub具有命令交互界面,並能過支持網絡引導。(注意,最好爲你的機器設置BIOS密碼和grub密碼,這樣會提高系統的安全性)
3 加載內核
    當內核映像被加載到內存之後,內核階段就開始了,內核映像並不是一個可執行的內核,而是一個經過壓縮的內核映像。通常它是一個zImage(較小的內核,小於512K)或bzImage(較大的內核,大於512K)。之後要對內核進行解壓,並放入到高端內存當中。
4 執行init進程,並取得run-level信息
    當內核完成引導之後,接下來加載init進程。init進程是系統所有進程的起點,它的進程號爲1,init進程是所有進程的發起者和控制者。如果init進程出現了問題,那麼系統將不可用。init的進程的作用有兩個,一是扮演進程之父,系統中任何進程都作爲它的子進程並以它作爲參照;二是通過inittab文件管理run-level運行級別。
5 執行/etc/rc.d/rc.sysinit
    /etc/rc.d/rc.sysinit是init執行的第一個腳本,它的作用是初始化linux系統,包括初始化變量、配置網絡、檢查並修復文件系統等操作。爲什麼第一個執行的是這個腳本呢?因爲在/etc/inittab文件中定義了。
6 執行/etc/rc.d/rcX.d/[KS]
    init進程根據inittab文件確定了系統的啓動級別,事實上,每個級別都有每個級別命令腳本,這些腳本保存在/etc/rc.d這個目錄下,在這個目錄下,你會發現有諸如rc3.d、rc5.d等這些文件夾,這些文件夾存放着該級別所需要運行的命令腳本。
7 init執行相應的run-level的腳本
    rcx.d中的腳本有的是以S開頭,有的是以K開頭,腳本執行的順序是從小到大首先終止以K開頭的服務,然後啓動以S開頭的服務。
8 執行rc.lcoal腳本,一般情況下,/etc/rc.d/rc.local是作爲初始化腳本的最後一個文件,我們可以在這個文件中添加一些執行的腳本命令,比如說crond服務、httpd服務隨機器啓動時而啓動等。
9 執行/bin/login程序
    login程序會提示用戶輸入用戶名和密碼,並會檢查輸入的正確與否,正確將爲使用者初始化環境,並將控制權交給shell。
 
 
   
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章