所謂操作系統(tǒng)的引導過程是將存放在硬盤上的靜態(tài)的操作系統(tǒng)裝載到內(nèi)存中跳仿,并開始執(zhí)行操作系統(tǒng)的過程还绘。
第一階段:BIOS
1.1 何為BIOS窍荧?
BIOS灿椅,英文“Basic Input Output System”浸间,中文“基本輸入輸出系統(tǒng)”太雨。百度百科中的解釋如下:
它是一組固化到計算機內(nèi)主板上一個ROM芯片上的程序,它保存著計算機最重要的基本輸入輸出的程序魁蒜、開機后自檢程序和系統(tǒng)自啟動程序囊扳,它可從CMOS中讀寫系統(tǒng)設(shè)置的具體信息。 其主要功能是為計算機提供最底層的兜看、最直接的硬件設(shè)置和控制锥咸。
BIOS保存在ROM芯片中,系統(tǒng)上電后第一件事就是運行BIOS程序(這不是必須的)细移。
疑問:計算機CPU如何在上電之后直接運行BIOS呢搏予?
答:對于x86系列的CPU,一加電就將指令寄存器設(shè)置為:0xFFFF0000弧轧,表示CPU開始從0xFFFF0000這個內(nèi)存中取出一條指令執(zhí)行雪侥,通常在0xFFFF0000處是一條地址轉(zhuǎn)跳指令碗殷,轉(zhuǎn)向BIOS的入口。
1.2 硬件自檢
BIOS程序首先檢查速缨,計算機硬件能否滿足運行的基本條件锌妻,這叫做"硬件自檢"(Power-On Self-Test),縮寫為POST旬牲。如果硬件出現(xiàn)問題仿粹,主板會發(fā)出不同含義的蜂鳴,啟動中止原茅。
1.3 加載引導扇區(qū)
BIOS設(shè)置里有一個選項是Boot Sequence牍陌,可以設(shè)置外部存儲設(shè)備的啟動順序,排在前面的設(shè)備就是優(yōu)先轉(zhuǎn)交控制權(quán)的設(shè)備员咽。
硬件自檢完成后,BIOS的主要工作就是加載引導扇區(qū)贮预。BIOS根據(jù)Boot Sequence中的順序贝室,將最前面的存儲設(shè)備的引導扇區(qū)的內(nèi)容加載到內(nèi)存中,并跳轉(zhuǎn)到引導程序的第一條指令仿吞。
BIOS將所檢查外部存儲設(shè)備的第一個扇區(qū)(512B)載入內(nèi)存滑频,放在0x00007C00處,如果一個扇區(qū)的最后兩個字節(jié)是“55 AA”唤冈,那么這就是一個引導扇區(qū)峡迷,這個外部存儲設(shè)備也就是一塊可引導盤。通常這個大小為512B的程序就稱為引導程序(boot)你虹。如果最后兩個字節(jié)不是“55 AA”绘搞,那么BIOS就檢查下一個外部存儲設(shè)備。如果沒有其他啟動介質(zhì)傅物,則顯示 ”No ROM BASIC” 夯辖,然后死機。
第二階段:MBR
2.1 何為MBR董饰?
MBR蒿褂,英文“Master Boot Record”,中文“主引導記錄”卒暂。MBR為存儲設(shè)備的第一個扇區(qū)啄栓,也就是該存儲設(shè)備的最前面的512字節(jié)。
計算機讀取MBR的512字節(jié)內(nèi)容也祠,如果這512個字節(jié)的最后兩個字節(jié)是0x55和0xAA昙楚,表明這個設(shè)備可以用于啟動;如果不是诈嘿,表明設(shè)備不能用于啟動桂肌,控制權(quán)于是被轉(zhuǎn)交給"啟動順序"中的下一個設(shè)備数焊。
2.2 MBR結(jié)構(gòu)
MBR的主要作用是告訴計算機到存儲設(shè)備的哪個位置去找操作系統(tǒng)。主要由三部分組成:
- 第1-446字節(jié):調(diào)用操作系統(tǒng)的機器碼崎场。
- 第447-510字節(jié):硬盤分區(qū)表(Disk Partition Table佩耳,DPT),將硬盤分成若干分區(qū)谭跨。
- 第511-512字節(jié):主引導記錄簽名(0x55和0xAA)干厚。
2.3 分區(qū)表
MBR中的分區(qū)表長度只有64個字節(jié),里面分成4項螃宙,每項16個字節(jié)蛮瞄,所以一個硬盤最多只能分四個一級分區(qū),又叫做"主分區(qū)"谆扎。每個區(qū)可以安裝不同的操作系統(tǒng)挂捅,"主引導記錄"因此必須知道將控制權(quán)轉(zhuǎn)交給哪個區(qū)。
每個主分區(qū)的16個字節(jié)堂湖,由6個部分組成:
- 第1個字節(jié):如果為0x80闲先,就表示該主分區(qū)是激活分區(qū),控制權(quán)要轉(zhuǎn)交給這個分區(qū)无蜂。四個主分區(qū)里面只能有一個是激活的伺糠。
- 第2-4個字節(jié):主分區(qū)第一個扇區(qū)的物理位置(柱面、磁頭斥季、扇區(qū)號等等)训桶。
- 第5個字節(jié):主分區(qū)類型。
- 第6-8個字節(jié):主分區(qū)最后一個扇區(qū)的物理位置酣倾。
- 第9-12字節(jié):該主分區(qū)第一個扇區(qū)的邏輯地址舵揭。
- 第13-16字節(jié):主分區(qū)的扇區(qū)總數(shù)。
2.4 擴展分區(qū)和邏輯分區(qū)
隨著硬盤越來越大躁锡,四個主分區(qū)已經(jīng)不夠了琉朽,需要更多的分區(qū)。但是稚铣,分區(qū)表只有四項箱叁,因此規(guī)定有且僅有一個區(qū)可以被定義成"擴展分區(qū)"(Extended partition)。
所謂"擴展分區(qū)"惕医,就是指這個區(qū)里面又分成多個區(qū)耕漱。這種分區(qū)里面的分區(qū),就叫做"邏輯分區(qū)"(logical partition)抬伺。
計算機先讀取擴展分區(qū)的第一個扇區(qū)螟够,叫做"擴展引導記錄"(Extended boot record,縮寫為EBR)。它里面也包含一張64字節(jié)的分區(qū)表妓笙,但是最多只有兩項(也就是兩個邏輯分區(qū))若河。
計算機接著讀取第二個邏輯分區(qū)的第一個扇區(qū),再從里面的分區(qū)表中找到第三個邏輯分區(qū)的位置寞宫,以此類推萧福,直到某個邏輯分區(qū)的分區(qū)表只包含它自身為止(即只有一個分區(qū)項)。因此辈赋,擴展分區(qū)可以包含無數(shù)個邏輯分區(qū)鲫忍。
第三階段:硬盤啟動
計算機的控制權(quán)就要轉(zhuǎn)交給硬盤的某個分區(qū)了。
3.1 卷引導記錄
四個主分區(qū)里面钥屈,只有一個是激活的悟民。計算機會讀取激活分區(qū)的第一個扇區(qū),叫做"卷引導記錄"(Volume Boot Record篷就,縮寫為VBR射亏,也可稱為分區(qū)引導記錄,Partition Boot Record竭业,縮寫為PBR)智润。
"卷引導記錄"的主要作用是,尋找激活分區(qū)根目錄下的NTLDR(XP)永品、bootmgr(Win7 above)、grldr(Grub)击纬、btldr.mbr(BootLink)等可用于引導的程序鼎姐。
3.2 啟動管理器
"啟動管理器"(boot loader)是系統(tǒng)預(yù)先安裝的程序,由用戶選擇啟動哪一個操作系統(tǒng)更振。"卷引導記錄"搜索到激活分區(qū)中的"啟動管理器"炕桨,將控制權(quán)交給"啟動管理器"運行。
"啟動管理器"尋找激活分區(qū)中的啟動配置數(shù)據(jù)(如:Win7中的BCD文件肯腕、XP中的boot.ini文件)献宫,根據(jù)啟動配置數(shù)據(jù),在顯示器上顯示多操作系統(tǒng)選擇畫面实撒。選擇相應(yīng)的操作系統(tǒng)姊途,控制權(quán)交給操作系統(tǒng)。
Linux環(huán)境中知态,目前最流行的啟動管理器是Grub捷兰。在windows下為啟動管理器bootmgr(xp中的ntldr文件)。
第四階段:操作系統(tǒng)
控制權(quán)轉(zhuǎn)交給操作系統(tǒng)后负敏,操作系統(tǒng)的內(nèi)核首先被載入內(nèi)存贡茅。
以Win7系統(tǒng)為例,整個操作系統(tǒng)引導過程如下:
1、電腦開機后顶考,開始啟動BIOS赁还,開始BIOS自檢。
2驹沿、通過自檢后艘策,bios找到硬盤上的主引導記錄MBR.
3、MBR開始讀取硬盤分區(qū)表DPT甚负,找到活動分區(qū)柬焕,找到活動分區(qū)中的分區(qū)引導記錄PBR,并且把控制權(quán)交給PBR.
4梭域、PBR搜索活動區(qū)中的啟動管理器bootmgr斑举,找到后,PBR把控制權(quán)交給bootmgr(相當于xp里的ntldr文件)病涨。
5富玷、Bootmgr尋找活動分區(qū)中的boot文件夾中的BCD文件(啟動配置數(shù)據(jù),相當于xp里的boot.ini文件)既穆。
6赎懦、找到BCD后,Bootmgr首先從BCD 中讀取啟動管理器bootmgr菜單的語言版本信息幻工,然后再調(diào)用BOOTMGR與相應(yīng)語言的BOOTMGR.EXE.MUI (在boot文件夾對應(yīng)語言文件夾中)組成相應(yīng)語言的啟動菜單励两,之后在顯示器上顯示多操作系統(tǒng)選擇畫面。
7囊颅、如果存在多個操作系統(tǒng)而且系統(tǒng)設(shè)置的等待時間不是0当悔,那么屏幕就顯示多個操作系統(tǒng)的選擇界面。如果沒有多系統(tǒng)踢代,那么直接進入windows 7系統(tǒng)盲憎,不顯示選擇界面。
8胳挎、選擇windows 7系統(tǒng)后饼疙,bootmgr就會讀取BCD里win7系統(tǒng)所在的盤里的windows\system32\winload.exe文件,并且將控制權(quán)交給winload.exe慕爬。
9窑眯、Winload.exe加載windows7內(nèi)核、硬件医窿、服務(wù)等伸但,之后加載桌面等信息,從而啟動整個windows 7系統(tǒng)留搔。
上面幾步可以概括一下就是:
BIOS--MBR--DPT--PBR--Bootmgr--BCD--系統(tǒng)選擇界面---選擇windows7------Winload.exe----內(nèi)核加載等 --啟動整個windows7系統(tǒng)
參考文獻
1更胖、阮一峰:計算機是如何啟動的?
2、百度百科:BIOS
3却妨、百度經(jīng)驗:Windows 7開機啟動流程