CentOS系統啟動流程和系統初始化

來源:互聯網
上載者:User

一 Linux系統啟動流程

1234 POST --> BIOS (Boot Sequence) --> MBR(bootloader) -> Kernel (CentOS5: initrd, CentOS6: initramfs) -> /sbin/init (CentOS5: /etc/inittab , CentOS6: /etc/inittab , /etc/init/ *.conf)


二 啟動詳解

(1)POST自檢


123456 POST自檢:第一步就是CPU加電然後定址,而CPU定址所需的代碼指令 來自於ROM->硬體廠商製作(記憶體分為ROM+RAM),關於CPU如何找到 指令代碼的?硬體的設計的思想就是:CPU懂的去特定的位置去尋找 代碼,而代碼得存貯者ROM就應該在特定的位置。與此同時POST自檢 還會檢測記憶體,主板,顯卡,音效卡,網卡等I /O 裝置,等一切沒有 問題POST自檢完成!將工作移交給BIOS去處理


(2)BIOS

123 BIOS:(Boot Sequence)載入可選擇的啟動裝置->韌體廠商製造 Bios中存放著各種I/O裝置的資訊參數、系統時間、啟動尋找順序 所以必須要檢測Bios是否正常。之後會去載入第一個硬碟裝置


(3)MBR

123 MBR:硬碟的主引導記錄,存在於 0 磁軌第 0 扇區,共 512 位元組。其中Bootloader佔據 446 位元組,分區表佔據 64 位元組,magic num佔據 2 位元組。MBR將載入Bootloader去開始 後邊的工作


(4)Bootloader


123456789 Bootloader(核心載入器)位於第0磁軌第0扇區的446位元組是最前邊 的446位元組哦!Bootloader的工作機制:bootloader可以訪問檔案系 統,而核心則作為檔案而存在。所以bootloader可以訪問核心檔案, 深入的說bootloader訪問核心檔案時,是將核心檔案Vmlinz所在的 整個分區當作根去訪問的,如訪問 /Vmlinz 而根 "/" 本身的存在位置 是由核心檔案自己決定。(因為每個檔案必須要有一個自己的起始路徑) 能理解這種邏輯嗎? 現代我們常用的核心載入器是grub(Grand Unified Bootloader) 以此grub來載入核心。載入核心之前grub所做的工作

第一步 1) grub將核心檔案Vmlinz 和 grub自己載入到了/boot上,

同時也在/boot上存放了所有模組的驅動程式xxx.img檔案

用ll /boot 查看

2) 接下來讓我們查看grub目錄中存放的是什麼

grub目錄中存放著grub.conf自身設定檔,device.map磁碟映射圖(映射分區/boot和/根分區)

你會看到有stage1 stage2 還有各種stage1.5

1234567 1st stage: 位於MBR中,為了引導2nd stage 1.5 stage: 位於boot基本磁碟分區中,為識別 核心檔案所在的檔案系統提供檔案系統識別擴充(因為我們上邊 提到過grub只能識別基本的檔案系統,而核心檔案不可能沒有高 級的檔案系統,所以需要賦予grub能識別核心進階檔案系統的擴 展功能) 2nd stage: 位於boot基本磁碟分區中,GRUB的引導程式


3)查看grub.conf檔案內容和 device.map檔案內容


第二步 1) 上邊我們已經提到grub目錄中存放著device.map磁碟映射分區,接下來我們去查看

映射的根分區/(核心真正掛載的分區)中的各種模組所在的路徑

2)接下來查看路徑下的各個模組.ko檔案

(5)Kernerl

123 Linux屬於單核系統:Kernel+各種外圍模組組成 通過grub載入核心後,核心開始自我解壓並工作 通過虛擬根檔案系統initrfs 調用init工作



(6)/sbin/init 以CentOS6為例


123 /sbin/init 程式被核心第一個所調用,所以init的PID號為1 init調用其設定檔 /etc/inittable 和啟動指令碼 /etc/init/rcS .conf 從而啟動各個子進程

/etc/inittable


/etc/rc.d 目錄中存放著123456運行層級的目錄

以rc3.d為例,目錄中存放著進程, 進程運行層級 ,進程狀態(K為開啟、S為關閉)——>

init就是控制進程是K還是S得總管 (當系統在1 2 3 4 5 6 之間切換時由父進程fork而來的

子進程就會在K與S之間切換狀態)

PS:以上為個人理解的Linix啟動和初始化流程,如果有問題請各位大神細心指點




繩命是如此的精彩~


聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.