linux啓動過程淺析

BIOS:位於主板上只讀存儲器上的微型操作系統。

a.     POST系統自檢:對系統進行整體檢查, 確保各個核心組件存在並正常運行。

b.     設備初始化:初始化核心設備驅動程序, 分配系統資源。

c.     引導設備選擇:選擇引導設備。

d.     移交執行權:將引導設備第一個數據塊(通常是MBR512字節)裝入內存,並轉移執行權。任何引導磁盤的第一個數據塊都必須含有一個小的可執行文件(引導程序)。

Bootloader:(兩個階段)

第一階段: MBR中前446個字節中的小的可執行文(引導加載程序第一階段)負責訪/boot分區, 並載入引導加載程序第二階段。

    第二階段: 加載並執行存儲於磁盤中的Linux內核。

準備初始化內存磁盤(Initial RAM Disk, initrd)環境, initrd解壓到RAM

Kernel:(對內部結構和設備驅動程序進行初始化, 提供初始化文件系統, 啓動init)

    執行Linux kernel

    啓動並移交執行權給init

INIT:(/sbin/init)對機器進行初始化,  啓動、停止和監控其他進程。

    負責後續啓動工作, 並建立用戶登錄環境。

    1. 啓動init後會讀取etc/inittab文件設置運行級別, 確定初始化腳本。

        /etc/inittab

#   Default runlevel. The runlevels used are:

#   0 - halt (Do NOT set init default to this)

#   1 - Single user mode root as default user, no network and most demons.

#   2 - Multiuser, without NFS (The same as 3, if you do not have networking)

#   3 - Full multiuser mode used as network server.

#   4 - unused

#   5 - X11

#   6 - reboot (Do NOT set initdefault to this)

    2. /etc/rc.d/rc.sysinit: 初始化Linux系統環境。

        根據/etc/inittab中相關行

        si::sysinit:/etc/rc.d/rc.sysinit 啓動執行rc.sysinit腳本。

    rc.sysinit腳本。

a. 腳本開始查看/etc/sysconfig/network, 爲系統確定主機名, 接着在啓動進程初期proc文件系統被掛載在/proc掛在點上。

        b. 查看/etc/red-hat-release文件, 查看並顯示歡迎信息。

        c. BIOS調用硬件時間, 並用/sbin/hwclock命令初始化系統時間。

            注:雙系統用戶經常發現硬件時間和系統時間不對應, 可以用hwclock命令             進行同步。

        d. 系統初始化RAID磁盤。

        e. 若有LVM等存儲技術在此進行初始化。

        f. 將根分區掛載爲只讀, 可以用fsck命令進行操作、修復。

        g. 將根分區掛載爲讀寫模式, 仍爲單一掛載分區。

        h. 掛載剩餘文件系統。

        i. 清除守護進程留下來的各種PID文件, 並把各種應用程序留下來的文件和套

接字保留下來。

        j. 重新激活交換空間, 爲滿足系統使用含有根分區位置以外的交換文件。

        k. 將最新的引導記錄保存到/var/log/dmesg中。

    3. /etc/rc.d/rc*.d: 建立並初始化Runlevel環境。

        $ ls /etc/rc.d/

        init.d  rc0.d  rc2.d  rc4.d  rc6.d     rc.sysinit

        rc      rc1.d  rc3.d  rc5.d  rc.local

        根據/etc/inittab中設置確定用哪些腳本文件對系統進行初始化。

        響應目錄下均爲指向../init.d/目錄下腳本文件的軟鏈接。

    4. /etc/rc.d/rc.local: 定製初始化計劃。

              可以添加自己的腳本文件。

 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章