生活随笔
收集整理的這篇文章主要介紹了
CentOS系统启动流程和系统初始化
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
CentOS系統啟動流程和系統初始化
時間:2014-03-04 00:49來源:51cto.com?作者:“西風瘦豬” 博客?舉報?點擊:1955次
id="iframeu2000246_0" src="http://pos.baidu.com/acom?sz=695x250&rdid=2000246&dc=2&di=u2000246&dri=0&dis=0&dai=2&ps=503x336&coa=at%3D3%26rsi0%3D695%26rsi1%3D250%26pat%3D6%26tn%3DbaiduCustNativeAD%26rss1%3D%2523FFFFFF%26conBW%3D1%26adp%3D1%26ptt%3D0%26titFF%3D%2525E5%2525BE%2525AE%2525E8%2525BD%2525AF%2525E9%25259B%252585%2525E9%2525BB%252591%26titFS%3D14%26rss2%3D%2523000000%26titSU%3D0%26ptbg%3D90%26piw%3D0%26pih%3D0%26ptp%3D0&dcb=BAIDU_EXP_UNION_define&dtm=BAIDU_DUP_SETJSONADSLOT&dvi=0.0&dci=-1&dpt=none&tsr=82&tpr=1452071590253&ti=CentOS%E7%B3%BB%E7%BB%9F%E5%90%AF%E5%8A%A8%E6%B5%81%E7%A8%8B%E5%92%8C%E7%B3%BB%E7%BB%9F%E5%88%9D%E5%A7%8B%E5%8C%96&ari=1&dbv=2&drs=1&pcs=1600x1031&pss=1600x523&cfv=18&cpl=42&chi=1&cce=true&cec=GBK&tlm=1451496313<u=http%3A%2F%2Fwww.centoscn.com%2FCentOS%2FIntermediate%2F2014%2F0304%2F2492.html<r=https%3A%2F%2Fwww.baidu.com%2Flink%3Furl%3Dhw4HqeuWKJ3_v_SRG-uKbaSx5imPCdi_aKt33V-r9RdGVa6uK9GuAKAWC4gmcTt-EnN12YdXvG4u6TMQL_uaebNmokgrqXoBYTLPHipgMsS%26wd%3D%26eqid%3Df4d3f7cb0000930200000003568cdaa4&ecd=1&psr=1600x1200&par=1600x1160&pis=-1x-1&ccd=24&cja=true&cmi=106&col=zh-CN&cdo=-1&tcn=1452071590&sz=695x250&exps=110211&qn=980cf3074766ab9d&tt=1452071590221.87.175.177&feid=110211" width="695" height="250" align="center,center" vspace="0" hspace="0" marginwidth="0" marginheight="0" scrolling="no" frameborder="0" allowtransparency="true" style="padding: 0px; margin: 0px; border-width: 0px; vertical-align: bottom;">
一 Linux系統啟動流程
| 1 2 3 4 | POST --> BIOS (Boot Sequence) --> MBR(bootloader) -> Kernel (CentOS5: initrd, CentOS6: initramfs) ->?/sbin/init(CentOS5:/etc/inittab, CentOS6: /etc/inittab,?/etc/init/*.conf) |
二 啟動詳解
? (1)POST自檢
| 1 2 3 4 5 6 | POST自檢:第一步就是CPU加電然后尋址,而CPU尋址所需的代碼指令 來自于ROM->硬件廠商制作(內存分為ROM+RAM),關于CPU如何找到 指令代碼的?硬件的設計的思想就是:CPU懂的去特定的位置去尋找 代碼,而代碼得存貯者ROM就應該在特定的位置。與此同時POST自檢 還會檢測內存,主板,顯卡,聲卡,網卡等I/O設備,等一切沒有 問題POST自檢完成!將工作移交給BIOS去處理 |
? (2)BIOS
| 1 2 3 | BIOS:(Boot Sequence)加載可選擇的啟動設備->固件廠商制造 Bios中存放著各種I/O設備的信息參數、系統時間、啟動尋找順序 所以必須要檢測Bios是否正常。之后會去加載第一個硬盤設備 |
(3)MBR
| 1 2 3 | MBR:硬盤的主引導記錄,存在于0磁道第0扇區,共512字節。其中Bootloader占據 446字節,分區表占據64字節,magic num占據2字節。MBR將加載Bootloader去開始 后邊的工作 |
?(4)Bootloader
| 1 2 3 4 5 6 7 8 9 | 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
| 1 2 3 4 5 6 7 | 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
| 1 2 3 | Linux屬于單核系統:Kernel+各種外圍模塊組成 通過grub加載內核后,內核開始自我解壓并工作 通過虛擬根文件系統initrfs 調用init工作 |
? ?(6)/sbin/init ?以CentOS6為例
| 1 2 3 | /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啟動和初始化流程,如果有問題請各位大神細心指點 ? ?
總結
以上是生活随笔為你收集整理的CentOS系统启动流程和系统初始化的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。