生活随笔
收集整理的這篇文章主要介紹了
CentOS系统启动流程和系统初始化
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
CentOS系統(tǒng)啟動(dòng)流程和系統(tǒng)初始化
時(shí)間:2014-03-04 00:49來(lái)源:51cto.com?作者:“西風(fēng)瘦豬” 博客?舉報(bào)?點(diǎn)擊: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系統(tǒng)啟動(dòng)流程
| 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) |
二 啟動(dòng)詳解
? (1)POST自檢
| 1 2 3 4 5 6 | POST自檢:第一步就是CPU加電然后尋址,而CPU尋址所需的代碼指令 來(lái)自于ROM->硬件廠商制作(內(nèi)存分為ROM+RAM),關(guān)于CPU如何找到 指令代碼的?硬件的設(shè)計(jì)的思想就是:CPU懂的去特定的位置去尋找 代碼,而代碼得存貯者ROM就應(yīng)該在特定的位置。與此同時(shí)POST自檢 還會(huì)檢測(cè)內(nèi)存,主板,顯卡,聲卡,網(wǎng)卡等I/O設(shè)備,等一切沒(méi)有 問(wèn)題POST自檢完成!將工作移交給BIOS去處理 |
? (2)BIOS
| 1 2 3 | BIOS:(Boot Sequence)加載可選擇的啟動(dòng)設(shè)備->固件廠商制造 Bios中存放著各種I/O設(shè)備的信息參數(shù)、系統(tǒng)時(shí)間、啟動(dòng)尋找順序 所以必須要檢測(cè)Bios是否正常。之后會(huì)去加載第一個(gè)硬盤(pán)設(shè)備 |
(3)MBR
| 1 2 3 | MBR:硬盤(pán)的主引導(dǎo)記錄,存在于0磁道第0扇區(qū),共512字節(jié)。其中Bootloader占據(jù) 446字節(jié),分區(qū)表占據(jù)64字節(jié),magic num占據(jù)2字節(jié)。MBR將加載Bootloader去開(kāi)始 后邊的工作 |
?(4)Bootloader
| 1 2 3 4 5 6 7 8 9 | Bootloader(內(nèi)核加載器)位于第0磁道第0扇區(qū)的446字節(jié)是最前邊 的446字節(jié)哦!Bootloader的工作機(jī)制:bootloader可以訪問(wèn)文件系 統(tǒng),而內(nèi)核則作為文件而存在。所以bootloader可以訪問(wèn)內(nèi)核文件, 深入的說(shuō)bootloader訪問(wèn)內(nèi)核文件時(shí),是將內(nèi)核文件Vmlinz所在的 整個(gè)分區(qū)當(dāng)作根去訪問(wèn)的,如訪問(wèn)/Vmlinz而根"/"本身的存在位置 是由內(nèi)核文件自己決定。(因?yàn)槊總€(gè)文件必須要有一個(gè)自己的起始路徑) 能理解這種邏輯嗎? 現(xiàn)代我們常用的內(nèi)核加載器是grub(Grand Unified Bootloader) 以此grub來(lái)加載內(nèi)核。加載內(nèi)核之前grub所做的工作 |
? ? 第一步 ?1) grub將內(nèi)核文件Vmlinz 和 grub自己加載到了/boot上,
? ? ?同時(shí)也在/boot上存放了所有模塊的驅(qū)動(dòng)程序xxx.img文件
? ? ?用ll /boot 查看
?? ? ? ? 2) 接下來(lái)讓我們查看grub目錄中存放的是什么
? ? ? grub目錄中存放著grub.conf自身配置文件,device.map磁盤(pán)映射圖(映射分區(qū)/boot和/根分區(qū))
? ? ? 你會(huì)看到有stage1 stage2 ?還有各種stage1.5
| 1 2 3 4 5 6 7 | 1st stage: 位于MBR中,為了引導(dǎo)2nd stage 1.5 stage: 位于boot基本磁盤(pán)分區(qū)中,為識(shí)別 內(nèi)核文件所在的文件系統(tǒng)提供文件系統(tǒng)識(shí)別擴(kuò)展(因?yàn)槲覀兩线?提到過(guò)grub只能識(shí)別基本的文件系統(tǒng),而內(nèi)核文件不可能沒(méi)有高 級(jí)的文件系統(tǒng),所以需要賦予grub能識(shí)別內(nèi)核高級(jí)文件系統(tǒng)的擴(kuò) 展功能) 2nd stage: 位于boot基本磁盤(pán)分區(qū)中,GRUB的引導(dǎo)程序 |
? ? ? ? ? 3)查看grub.conf文件內(nèi)容和 device.map文件內(nèi)容
第二步 1) 上邊我們已經(jīng)提到grub目錄中存放著device.map磁盤(pán)映射分區(qū),接下來(lái)我們?nèi)ゲ榭?/span>
? ? ? ? ? ? ? ? ? ?映射的根分區(qū)/(內(nèi)核真正掛載的分區(qū))中的各種模塊所在的路徑
? ? ? ? ? ?2)接下來(lái)查看路徑下的各個(gè)模塊.ko文件
? (5)Kernerl
| 1 2 3 | Linux屬于單核系統(tǒng):Kernel+各種外圍模塊組成 通過(guò)grub加載內(nèi)核后,內(nèi)核開(kāi)始自我解壓并工作 通過(guò)虛擬根文件系統(tǒng)initrfs 調(diào)用init工作 |
? ?(6)/sbin/init ?以CentOS6為例
| 1 2 3 | /sbin/init程序被內(nèi)核第一個(gè)所調(diào)用,所以init的PID號(hào)為1 init調(diào)用其配置文件/etc/inittable和啟動(dòng)腳本/etc/init/rcS.conf 從而啟動(dòng)各個(gè)子進(jìn)程 |
? ?/etc/inittable
?/etc/rc.d 目錄中存放著123456運(yùn)行級(jí)別的目錄
?以rc3.d為例,目錄中存放著進(jìn)程, 進(jìn)程運(yùn)行級(jí)別 ,進(jìn)程狀態(tài)(K為開(kāi)啟、S為關(guān)閉)——>
init就是控制進(jìn)程是K還是S得總管 (當(dāng)系統(tǒng)在1 2 3 4 5 6 之間切換時(shí)由父進(jìn)程fork而來(lái)的
子進(jìn)程就會(huì)在K與S之間切換狀態(tài))
PS:以上為個(gè)人理解的Linix啟動(dòng)和初始化流程,如果有問(wèn)題請(qǐng)各位大神細(xì)心指點(diǎn) ? ?
總結(jié)
以上是生活随笔為你收集整理的CentOS系统启动流程和系统初始化的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。