BIOS啓動原理

Intel的IBMPC上i386芯片是遵循Intel與IBM共同制定的Boot協議的

1. PC機的復位線和系統中的所有部件相連,包括CPU的RESET引腳
2. 系統上電開機時,主板電源系統發送低電平的"Power Good"信號,該信號送到復位接口電路的#RES端,產生時鐘同步的復位正脈衝信號RESET,該脈衝發送到上面提及的復位線上,經由CPU的RESET引腳被CPU採集到,當正脈衝從1返回0時(下降沿),CPU啓動內部初始化程序,初始化完成後進入實地址模式,其中CS:IP寄存器的狀態是CS=F000H,IP=0000FFF0H;顯然,CPU自初始化完畢後,系統的真正啓動纔開始,那麼,也決定了第一條指令的地址爲CS:IP=F000:FFF0H=FFFF0H單元。

3. 與此同時,IBM開機協議規定,RESET時,BIOS ROM被加載到F0000H~FFFFFH,幾乎所有BIOS在FFFF0H的指令爲JMP BINI,這個BINI就是BIOS啓動程序的首地址了

4. 結合2,3兩點,PC機開機後的第一個程序就是BIOS啓動程序了,這個啓動程序的執行流程分爲二步:
I. POST(Power On Self Test)
II. 按BIOS設置好的順序逐一嘗試加載啓動媒體(硬盤,光驅,軟驅,USB盤)的啓動程序。對於我們常用的硬盤,則把0面,0道,1扇區的內容(512字節),也就是我們說的MBR加載到0000:7C00H單元開始的區域


結論:
在PC機上的重啓(其實重啓也是正常啓動的一種形式而已),POST一定發生在加載MBR之前,這是由久而來的IBM開機協議所定的。只要你是使用PC機,你無法僅從操作系統的角度來改變這個事實,更何況,從邏輯上而言,這些發生在操作系統運作之前的舞臺。或許你的BIOS提供這種設置,使BIOS啓動程序中跳過POST這一步(但也同樣作用於正常啓動,不能僅作用於重啓),又或許你使用其他硬件架構如PPC或者ARM嵌入式系統!

之所以產生這種設想,估計是誤解了我們計算機教學一直以來的初級概念,軟重啓和硬重啓。注意,前者的RESET信號由鍵盤發出,後者的RESET信號由物理按鍵動作發出!但無論是哪種重啓,都必須遵循開機協議,POST一定發生在加載MBR之前

-------------------------------------------------------------------------------------------------------------------------------

BIOSMBRPBR等基礎知識,兼談U盤、移動硬盤以及操作系統的安裝與啓動基本原理

一、基本概念
    1、BIOS的概念
  BIOS(Basic Input/Output System,基本輸入輸出系統)全稱是ROM-BIOS,是隻讀存儲器基本輸入/輸出系統的簡寫,它實際是一組被固化到電腦中,爲電腦提供最低級最直接的硬件控制的程序,它是連通軟件程序和硬件設備之間的樞紐,通俗地說,BIOS是硬件與軟件程序之間的一個“轉換器”或者說是接口(雖然它本身也只是一個程序),負責解決硬件的即時要求,並按軟件對硬件的操作要求具體執行。

    BIOS,它在計算機系統中起着非常重要的作用。一塊主板性能優越與否,很大程度上取決於主板上的BIOS管理功能是否先進。
    BIOS芯片,在主板上表現爲一塊長方型或正方型芯片,BIOS中主要存放:
    1、自診斷程序:通過讀取CMOS RAM中的內容識別硬件配置,並對其進行自檢和初始化;
    2、CMOS設置程序:引導過程中,用特殊熱鍵啓動,進行設置後,存入CMOS RAM中;

    3、系統自舉裝載程序:在自檢成功後將磁盤相對0道0扇區上的引導程序裝入內存,讓其運行以裝入DOS系統;

主要I/O設備的驅動程序和中斷服務;

   由於BIOS直接和系統硬件資源打交道,因此總是針對某一類型的硬件系統,而各種硬件系統又各有不同,所以存在各種不同種類的BIOS,隨着硬件技術的發展,同一種BIOS也先後出現了不同的版本,新版本的BIOS比起老版本來說,功能更強。

  2、MBR的概念
    主引導扇區位於硬盤的0磁道0柱面1扇區,共512bytes,由三大部分組成:
    硬盤主引導記錄MBR(Master Boot Record)佔446bytes
    分區表DPT(Disk Partition Table)佔
64bytes
    硬盤有效標誌(Magic Number)佔2bytes。AA和55被稱爲幻數(Magic Number),BOIS讀取MBR的時候總是檢查最後是不是有這兩個幻數,如果沒有就被認爲是一個沒有被分區的硬盤

    主引導扇區包含的MBR、DPT、MN,這3個區域是操作系統無關的,在每塊硬盤上都存在;MBR是一段可執行程序,由各個操作系統寫入不同的代碼。MBR的存儲空間限制爲446字節,MBR所做的唯一的事情就是裝載第二引導裝載程序。Windows產生的MBR裝載運行PBR;GRUB產生的MBR裝載運行grldr。
    3、操作系統引導過程
    主引導記錄(MasterBootRecord,MBR):512字節,位於硬盤的第一個扇區;可存放一小段程序及主分區表。MBR的boot code佔用其中的前446個字節,隨後的64個字節爲DPT(Disk Partition Table,硬盤分區表)。
    XP系統引導過程是,BIOS自檢後,DPT把系統控制權交給硬盤第一個分區的PBR(Partition Boot Record),XP的PBR會去找這個分區的ntldr,之後是boot.ini,選擇啓動的系統後load註冊表,交控制權給ntoskrnl,然後加載驅動,系統配置等等。
    Vista的PBR不再找ntldr,而是找bootmgr,這個文件也是保存在硬盤第一個分區的根目錄下.之後,bootmgr去找同路徑下的\boot\BCD. BCD這個文件實際是一個註冊表文件,裏面的數據保存了系統的引導信息,如果是多系統引導,會提供引導的界面內容. 如果是單Vista系統,控制權會交給winload.exe,之後再去找ntoskrnl.exe.
  擴展引導記錄(ExtendedBootRecord,EBR):512字節,位於擴展分區的第一個扇區,存放邏輯分區信息。

  分區引導區(PartitionBootRecord,PBR):512字節,位於每個非擴展主分區及每個邏輯分區的第一個扇區;可存放小段程序。
  活動分區(ActivePartition):可將所有主分區和邏輯分區中的一個標識爲Active,表示系統啓動時即加載運行其PBR程序的分區。
    DBR : DOS引導記錄(DOS Boot Record)應稱爲OBR(OS Boot Record),意思是活動分區的PBR,即操作系統引導記錄。

   二、分區概念
    一個硬盤的分區有Primary(主分區)、Extended(擴展分區)、Logical(邏輯分區)三種。
    1、主分區
    如果你只有一個硬盤,那麼這個硬盤肯定應該有一個主分區,以前DOS必須在主分區才能啓動。建立主分區的最大用途便是安裝操作系統,另外如果你有多個主分區,那麼只有一個可以設置爲活動分區(Active),操作系統就是從這個分區啓動的,當然了,只允許有一個活動分區,所謂的“激活分區”就是將某個主分區設置爲活動分區。
    2、擴展分區
    因爲主分區有先天的限制(最多隻能有4個),擴展分區就是爲了解決這種限制應運而生的,但是需要記住的是:它可是不能直接用來保存資料的,擴展分區的主要功能就是讓你在其中建立邏輯分區,而且事實上只能建立20多個。
    3、邏輯分區(邏輯驅動器)
   從上面的介紹你可以瞭解到,邏輯分區並不是獨立的分區,它是建立在擴展分區中的二級分區,而且在DOS/WINDOWS下,這樣的一個邏輯分區對應於一個邏輯驅動器(Logical Driver),我們平時說的D: E:........一般指的就是這種邏輯驅動器。
   4、分區的限制
   一個硬盤最多隻能劃分爲4個主分區,或者是3個主分區加上一個擴展分區,這是因爲在硬盤的開頭,也就是主引導扇區總共512字節存放着MBR佔446bytes,DPT分區表佔64bytes以及硬盤有效標誌佔2bytes,由於記錄空間只有那麼大,所以也只能記錄這4個分區的信息。

  三、一般單操作系統啓動過程
  1.BIOS加載並啓動保存在硬盤MBR中的引導程序,該引導程序一般在操作系統安裝時寫入
  2.MBR引導程序掃描所有分區表,找出活動分區(WindowsMBR程序只會在MBR中的分區表中查找活動分區,即Windows只能安裝在主分區;Linux無此限制)
  3.MBR引導程序加載並啓動保存在活動分區PBR中的引導程序
  4.活動分區PBR中的引導程序加載並啓動安裝在其上的操作系統(例如對Win98,定位並執行io.sys;對WinXP,定位並執行ntoskrnl.exe;對於Linux,定位並執行vmlinuz-xxx內核映像)。顯然PBR引導程序與操作系統密切相關,一般在操作系統安裝時寫入。
  總結爲:BIOS–>MBR—>PBR–>OS files

 四、修改標準過程實現按需啓動指定操作系統
  使用BootLoader等軟件置換MBR中的引導程序或PBR中的引導程序,如Windows的NTBoot Loader,Linux下的Lilo、Grub等。Windows NTBoot Loader一般用於在一臺機器上安裝多個Windows系統;Lilo或Grub用於在一臺機器上安裝多個Linux系統或同時安裝Linux和Windows系統。

  五、MBR損壞及修復
    mbr的損壞不會危及數據,復也很簡單,重寫mbr就是,dos下面的fdisk/mbr即可修改DOS引導,像DISKGEN等工具修改MBR更是隨手拈來。

    六、從U盤或移動硬盤啓動操作系統的步驟:
    1、U盤格式化後(FAT32或NTFS都可以),把U盤激活成活動分區(可使用DiskGenius硬盤分區軟件)
    2、寫入U盤活動分區的PBR,以達到PBR讀取bootmgr文件的目的(可使用Vista或windows7自帶的 bootsect.exe 進行操作)
    3、複製相應啓動文件到U盤根目錄
    4、修改bios啓動順序從U盤啓動即可

    移動硬盤:開機識別成 USB-HDD
    在XP中格式化成FAT32、NTFS格式的U盤:開機出現在BIOS的Removable Device中,識別成USB-ZIP,默認爲主分區非活動分區。可以用DiskGenius激活爲活動分區,再開機識別爲USB-HDD。

    量產成HDD的U盤:開機出現在BIOS的Hard Disk中,識別成USB-HDD,默認自動設置爲活動分區。





版權聲明:轉載時請以超鏈接形式標明文章原始出處和作者信息及本聲明
http://aiyaya0314.blogbus.com/logs/61464358.html

CPU被加電時,最初的1M內存空間的每一個字節都由BIOS安排好了:

0x00000-0x003ff : 中斷向量表 
0x00400-0x004ff : BIOS數據區 
0x00500-0x07bff : 自由內存區 
0x07c00-0x07dff : 引導程序加載區 
0x07e00-0x9ffff  : 自由內存區 
0xa0000-0xbffff  : 顯示內存區 
0xc0000-0xfffff   : BIOS中斷處理程序區  

instead of adding [ORG 7C00h] to the top of your file, you can add:

mov ax, 0x7C0
mov ds, ax
mov es, ax
mov fs, ax
mov gs, ax

And that will set-up the segment registers so they point to the start of
your bootsector..

 

 

系統啓動過程主要由一下幾步組成(以硬盤啓動爲例): 

  1. 開機 :-) 
  2. BIOS 加電自檢 ( Power On Self Test -- POST ) 
    內存地址爲 0ffff:0000 
  3. 將硬盤第一個扇區 (0頭0道1扇區, 也就是Boot Sector) 
    讀入內存地址 0000:7c00 處. 
  4. 檢查 (WORD) 0000:7dfe 是否等於 0xaa55, 若不等於 
    則轉去嘗試其他啓動介質, 如果沒有其他啓動介質則顯示 
    "No ROM BASIC" 然後死機. 
  5. 跳轉到 0000:7c00 處執行 MBR 中的程序. 
  6. MBR 首先將自己複製到 0000:0600 處, 然後繼續執行. 
  7. 在主分區表中搜索標誌爲活動的分區. 如果發現沒有活動 
    分區或有不止一個活動分區, 則轉停止. 
  8. 將活動分區的第一個扇區讀入內存地址 0000:7c00 處. 
  9. 檢查 (WORD) 0000:7dfe 是否等於 0xaa55, 若不等於則 
    顯示 "Missing Operating System" 然後停止, 或嘗試 
    軟盤啓動. 
  10. 跳轉到 0000:7c00 處繼續執行特定系統的啓動程序. 
  11. 啓動系統 ...

 

 

  以上步驟中 2,3,4,5 步是由 BIOS 的引導程序完成. 6,7,8,9,10 
步由MBR中的引導程序完成.


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