操作系統引導詳細過程

就直觀而言,我們所見到計算機啓動的過程是:按下電腦開機鍵,系統在黑色的屏幕下打印出一些英文語句、然後進入進度條狀態,最後到登陸界面,這樣操作系統的引導過程就算完成了。我們不知道的是計算機本身經歷一系列複雜的引導過程,才最終出現在我們面前。假如系統引導不成功,掛了,哇,好尷尬。

接觸計算機時間長的人,都有過安裝操作系統的經歷,無非是找個系統安裝盤(iso)丟到光驅裏、弄個U盤啓動程序插入usb接口,也或者裝Windows操作系統的時候,弄個gost備份鏡像,用gost軟件考到C盤裏,然後就是漫長的等待。假如安裝過程中,就是不進入登陸界面,又一頓尷尬。

一 、系統引導 

 我們先回到最初的狀態。我們需要知道的是,在計算機中,操作系統是一種程序,程序都是以數據(操作系統也不例外)存在的,數據又是存在於硬盤中的。而硬盤通常分爲幾個區,一個計算機中又有幾種存儲介質(包括硬盤),計算機通過CPU來控制運行的。反過來說,在你安裝完一個操作系統之後(就是把光盤鏡像的文件或者GHOST文件丟到主分區)或者開機後,需要讓計算機在開機的時候能識別電腦中的系統,這個過程就是系統引導,計算機系統引導的過程就是在保證硬件設備正常後,計算機利用CPU運行特定程序,通過程序識別硬盤,識別硬盤分區,識別硬盤分區上的操作系統,最後又通過程序啓動操作系統,一環扣一環的完成上述過程,在這環環緊扣的過程中,有一環吊鏈了,我們都是看不到最後的操作系統的。比如:計算機硬件壞了、程序識別不了硬盤,程序識別不了有操作系統的分區,程序不能啓動操作系統初始化程序,都會導致操作系統不能正常啓動。瞭解操作系統引導機制,或許能幫助我們解決以上問題。而在上述引導過程中,計算機本身又引入了一些中間程序或數據,如boot程序(入口程序,藥引子),bois程序(主引導程序),init程序(初始化程序),Boot Sequence(存儲介質隊列),MBR表(主引導記錄表),PBR(硬盤分區記錄表),EBR(擴展分區引導記錄表)、文件系統等等。

現在操作系統引導方式主要有兩種:

1、bois引導:開機-->BIOS啓動MBR-->MBR啓動激活分區PBR-->啓動bootmgr-->讀取BCD-->啓動對應的系統

 過程:①電腦開機,BIOS找到第一個硬盤 ②MBR在硬盤開頭幾百k以內,BIOS啓動到硬盤上的MBR(主引導記錄) ③PBR在分區開頭的幾百k以內,MBR啓動當前磁盤激活分區的PBR(分區引導記錄) ④VISTA以上的PBR啓動當前分區上的BOOTMGR,找不到則啓動NTLDR ⑤讀取當前分區根目錄下\boot\BCD文件 ⑥啓動BCD裏對應菜單的系統。

2、 UEFI引導:

過程:①電腦開機,BIOS找到第一個硬盤 ②BIOS搜索到FAT/FAT32分區上的\EFI\BOOT\BOOTx64.efi(計算機默認引導)或\efi\Microsoft\boot\bootmgrfw.efi(Windows默認引導),BIOS內會有個EFPROM,如果有多個efi文件,會記錄efi文件的啓動順序。這個順序可以在BIOS裏修改,也可以用工具修改,EFI文件一般在ESP分區下,分區格式只能是FAT16或FAT32 ③讀取\efi\Microsoft\boot\BCD ④啓動BCD裏對應菜單的系統。

什麼是BOOT,什麼是BIOS,什麼是UEFI

BOOT

BOOT其實是你按開機鍵之後,在電腦微軟操作系統運行之前就自動運行的一段小程序。表象上就是windows引導畫面之前那些黑屏藍屏的英文那個階段就是BOOT了。通過這段小程序,它就可以初始化硬件設備、建立內存空間的映射圖,從而將系統的軟硬件環境帶到一個合適的狀態,以便爲最終調用操作系統內核準備好正確的環境。

BIOS

BIOS它其實也是在電腦裏的系統運行之前,但是BOOT出現後加載運行的一個預啓動的操作環境程序,嚴格來算是軟件。是一組固化到計算機內主板上一個ROM芯片上的程序。它保存着計算機最重要的基本輸入輸出的程序、系統設置信息、開機後自檢程序和系統自啓動程序。其主要功能是爲計算機提供最底層的、最直接的硬件設置和控制。

UEFI

UEFI它其實和BIOS是同一個性質的東西,同一種程序,是隨着發展出現的BIOS升級版,被看做是有近20多年曆史的BIOS的繼任者。全稱“統一的可擴展固件接口,它也是在電腦裏微軟系統運行之前,但是BOOT出現後加載運行的一個預啓動操作環境程序。因爲硬件發展迅速,傳統式(Legacy)BIOS成爲進步的包袱,現在已發展出最新的UEFI(UnifiedExtensibleFirmwareInterface)可擴展固件接口。但造化弄人的是,理論上說是比BIOS更先進的UEFI,卻還是諸多支持不足,往往很多是UEFI啓動電腦,到頭來還是切換回BIOS。這也是令人疑惑的所在,不是說BIOS有病毒嗎,不是說UEFI比BIOS好嗎?爲啥我按住DEL鍵進入的還是BIOS。這其中博弈的過程,是商業的、技術的各種妥協,我們已無從評論。

 傳統的BIOS引導安裝的電腦,分區表的格式是MBR的,裝機基本是BIOS引導+MBR分區的格式。而UEFI引導安裝的電腦,硬盤分區表是GPT格式的,操作系統安裝後它是運行在UEFI引導+GPT分區的格式基礎上。從硬盤分區上來說UEFI和BIOS就是兩個完全不同的分區表格式了,所以往往用GHOST備份出來的系統,你再重裝還原,最好是原BIOS的裝在BIOS引導方式的電腦上,原UEFI的裝在UEFI的電腦上。不然很容易出問題。

        硬盤分區格式爲MBR格式,啓動模式應該爲Legacy;
        硬盤分區格式爲GUID(GPT)格式,啓動模式應該爲UEFI。      

       開啓UEFI模式或Legacy模式:

       按住DEL鍵進入BIOS,在“啓動(Startup)”選項卡中,可選擇UEFI啓動:

           Auto(自動):自動按照啓動設備列表中的順序啓動,優先採用UEFI方式;

           UEFI only(僅UEFI):只選擇具備UEFI啓動條件的設備啓動;

           Legacy only(僅Legacy):只選擇具備Legacy啓動條件的設備啓動;

        (注:假如說你的主板很老,你只能選擇BIOS引導,一般來說現在的計算機都兼容BIOS和UEFI,當然也有一進入界面就是UEFI的,如果你原生操作系統引導-是UEFI,你安裝新的操作系統用BIOS引導,恭喜你,你看不到操作系統的,支持BIOS的u盤啓動或者GOST鏡像還原皆如此類)

以x86爲例,BIOS引導過程如下:

       1、激活cpu:計算機開機,激活CPU,激活的CPU讀取ROM裏的boot,將內存指令寄存器設置爲:0xFFFF0000,表示CPU開始從0xFFFF0000這個內存中取出一條指令執行,通常在0xFFFF0000處是一條地址轉跳指令,轉向BIOS的入口。

     2、加電自檢:CUP開啓BIOS程序。首先執行BIOS自我檢查,確認計算機硬件能否滿足運行的基本硬件條件,這叫做”硬件自檢”(Power-On Self-Test),縮寫爲POST。如果硬件出現問題,主板會發出不同含義的蜂鳴,啓動中止。 如果沒有問題,屏幕就會顯示出CPU、內存、硬盤等信息。   

      3、加載帶有操作系統的硬盤:硬件自檢完成後,BIOS開始讀取Boot Sequence(設置外部存儲設備的啓動順序,排在前面的設備就是優先轉交控制權的設備),根據Boot Sequence中的順序,按照"啓動順序",把控制權轉交給排在第一位的儲存設備。然後計算機將該存儲設備引導扇區的內容加載到內存中。計算機本身並不知道誰是系統硬盤,誰不是系統硬盤,通過遍歷的方式,尋找帶有系統硬盤標識符(MBR,物理上也叫引導扇區)的系統硬盤。

    4、加載主引導記錄(MBR):硬盤以特定的標識符區分引導硬盤和非引導硬盤。在BIOS將所檢查外部存儲設備的第一個扇區載入內存後,如果發現一個扇區的最後兩個字節是“55 AA”,那麼這就是一個引導扇區(MBR),這個外部存儲設備也就是一塊可引導盤,計算機將控制權交給主引導記錄。如果最後兩個字節不是“55 AA”,那麼BIOS就檢查下一個外部存儲設備。如果沒有其他啓動介質,則顯示 ”No ROM BASIC” ,然後死機。主引導記錄主要作用是,告訴計算機到硬盤的哪個主分區去找操作系統。

    5、加載硬盤分區表:主引導記錄在獲得控制權後,需要找出哪個硬盤分區是含有操作系統的,於是開始掃描硬盤分區表,進而識別含有操作系統的硬盤分區(活動分區)。其中,MBR包含硬盤分區表,硬盤分區表以特定的標識符區分活動主分區和非活動主分區。

       以上表達的意思就是硬盤分區表主要標識和尋找哪個是有操作系統的分區(活動分區),哪個不是操作系統的分區。

     6、加載硬盤活動分區:每個區可以安裝不同的操作系統,”主引導記錄”因此必須知道將控制權轉交給哪個區。如果分區首字節字節爲0x80,就表示該主分區是活動分區(有操作系統的分區),控制權要轉交給這個分區。主引導記錄在找到硬盤活動分區後,開始加載硬盤活動分區。

     7、加載分區引導記錄(PBR):繼續遍歷硬盤活動分區,計算機會讀取活動分區的第一個扇區。這個扇區叫做”卷引導記錄”(Volume Boot Record,縮寫爲VBR,也可稱爲分區引導記錄,Partition Boot Record,縮寫爲PBR)。分區引導記錄標識了用於引導操作系統的程序位置。

       分區引導記錄的主要作用是,尋找激活分區根目錄下的NTLDR(XP)、bootmgr(Win7 above)、grldr(Grub)、btldr.mbr(BootLink)等可用於引導操作系統的程序(啓動管理器)。

      8、加載啓動管理器(boot loader):分區引導記錄搜索到活動分區中的啓動管理器,計算機加載啓動管理器,將控制權交給”啓動管理器。

     9、加載操作系統初始化程序:啓動管理器尋找激活分區中的啓動配置數據(如:Win7中的BCD文件、XP中的boot.ini),根據啓動配置數據,在顯示器上顯示多操作系統選擇畫面,選擇相應的操作系統,控制權交給操作系統初始化程序(init())。

     10、加載操作系統:操作系統初始化程序獲取控制權後,加載操作系統內核、硬件、服務等,之後加載桌面等信息,從而啓動整個操作系統。

      11、操作系統啓動之後,操作系統內核、應用程序庫、服務、應用程序開始工作。。。。。。。。

二、 系統引導的一些術語

梳理一下操作系統引導過程的一些概念:     

什麼是MBR,什麼是DPT,什麼是PBR,什麼是擴展分區,什麼是邏輯分區,什麼是boot,什麼是GPT。

MBR:

      MBR,英文“Master Boot Record”,中文“主引導記錄”MBR是IBM公司早年間提出的。它爲存儲設備的第一個扇區(這個扇區包含了已安裝的操作系統的啓動加載器和驅動器的邏輯分區信息),位於整個硬盤的0磁道0柱面1扇區。在512字節的主引導扇區中,MBR只佔用了其中的446個字節,另外的64個字節交給了 DPT(Disk Partition Table硬盤分區表),最後兩個字節“55,AA”是分區的結束標誌,這個整體構成了硬盤的主引導扇區。計算機讀取MBR的512字節內容,如果這512個字節的最後兩個字節是0x55和0xAA,表明這個設備可以用於啓動;如果不是,表明設備不能用於啓動,控制權於是被轉交給”啓動順序”中的下一個設備。

MBR分區表結構

   MBR的主要作用是告訴計算機到存儲設備的哪個位置去找操作系統對應的硬盤主分區。它主要由三部分組成:

  • 第1-446字節:調用操作系統的機器碼。
  • 第447-510字節:硬盤分區表(Disk Partition Table,DPT),將硬盤分成若干分區。
  • 第511-512字節:主引導記錄簽名(0x55和0xAA)。

           主引導記錄完成一下工作:  
     (1)掃描硬盤分區表查找活動分區; 
     (2)尋找活動分區的起始扇區; 
     (3)將活動分區的引導扇區讀到內存; 
    (4)執行引導扇區的運行代碼。 

DPT

       MBR中有個表叫硬盤分區表,用來指向硬盤的各個分區。硬盤分區表長度只有64個字節,裏面分成4項,每項16個字節,一個硬盤最多隻能分四個一級分區,這些一級分區叫做”主分區”。每個區可以安裝不同的操作系統,”主引導記錄”因此必須知道將控制權轉交給哪個區。硬盤分區表主要用於標識操作系統所在的硬盤主分區。

  硬盤分區表記錄的每個主分區16個字節,由6個部分組成:

  • 第1個字節:如果爲0x80,就表示該主分區是激活分區,控制權要轉交給這個分區。四個主分區裏面只能有一個是激活的。
  • 第2-4個字節:主分區第一個扇區的物理位置(柱面、磁頭、扇區號等等)。
  • 第5個字節:主分區類型。
  • 第6-8個字節:主分區最後一個扇區的物理位置。
  • 第9-12字節:該主分區第一個扇區的邏輯地址。
  • 第13-16字節:主分區的扇區總數。

     最後的四個字節("主分區的扇區總數"),決定了這個主分區的長度。也就是說,一個主分區的扇區總數最多不超過2的32次方。如果每個扇區爲512個字節,就意味着單個分區最大不超過2TB。再考慮到扇區的邏輯地址也是32位,所以單個硬盤可利用的空間最大也不超過2TB,這也是win7以下版本的操作系統只能識別小於2TB硬盤的原因。如果想使用更大的硬盤,只有2個方法:一是提高每個扇區的字節數,二是增加扇區總數。

擴展分區和邏輯分區

隨着硬盤越來越大,四個主分區已經不夠了,需要更多的分區。但是,分區表只有四項,因此規定有且僅有一個區可以被定義成”擴展分區”(Extended partition)。

所謂”擴展分區”,就是指這個區裏面又分成多個區。這種分區裏面的分區,就叫做”邏輯分區”(logical partition)。

計算機先讀取擴展分區的第一個扇區,叫做”擴展引導記錄”(Extended boot record,縮寫爲EBR)。它裏面也包含一張64字節的分區表,但是最多隻有兩項(也就是兩個邏輯分區)。

計算機接着讀取第二個邏輯分區的第一個扇區,再從裏面的分區表中找到第三個邏輯分區的位置,以此類推,直到某個邏輯分區的分區表只包含它自身爲止(即只有一個分區項)。因此,擴展分區可以包含無數個邏輯分區。

PBR

 PBR(Partition Boot Record 分區引導記錄):每個分區都有分區引導記錄,分區開頭幾kb數據,一般也是0.5kb,內容一般是分區參數以及一小段引導程序。特別的,對於Windows nt6的分區引導記錄,程序核心內容就是搜索當前分區下bootmgr,如果沒有,則搜索ntldr,然後啓動它。分區引導記錄的主要作用是,尋找激活分區根目錄下可用於引導操作系統的程序(啓動管理器)。

GPT:

 GPT的意思是GUID Partition Table,即“全局唯一標識磁盤分區表”。他是另外一種更加先進新穎的磁盤組織方式,一種使用UEFI啓動的磁盤組織方式,  GPT和UEFI BIOS相輔相成,鑑於MBR的磁盤容量和分區數量已經不能滿足硬件發展的需求,GPT首要的任務就是突破了2.2T分區的限制,最大支持18EB的分區。最開始是爲了更好的兼容性,後來因爲其更大的支持內存(mbr分區最多支持2T的磁盤),更多的兼容而被廣泛使用,特別是蘋果的MAC系統全部使用gpt分區。gpt不再有分區的概念,所有CDEF盤都在一段信息中存儲。可以簡單的理解爲更先進但是使用不夠廣泛的技術。在MBR硬盤中,分區信息直接存儲於主引導記錄(MBR)中(主引導記錄中還存儲着系統的引導程序)。但在GPT硬盤中,分區表的位置信息儲存在GPT頭中。因爲兼容問題,gpt其實在引導的最開始部分也有一段mbr引導,也叫做“保護引導”,爲了防止設備不支持uefi。

GPT分區表結構:

在GTP磁盤的第一個數據塊中同樣有一個與MBR(主引導記錄)類似的標記,叫做PMBR,GPT硬盤中存在PMBR(Protective MBR)分區表和GPT分區表。在GPT分區表的最開頭,處於兼容性考慮仍然存儲了一份傳統的MBR(LBA 0),這個MBR也叫做保護性MBR(Protective MBR)。在支持從GPT啓動的操作系統中,這裏也用於存儲第一階段的啓動代碼。在這個MBR中,只有一個標識爲0xEE的分區,以此來表示這塊硬盤使用GPT分區表。
 

無論微軟的c、d、e或者linux磁盤掛載,或許都繞不開文件系統這個術語,你的操作系統都是靠文件系統支撐起來的。有文件系統才能正確的找到相應磁盤對應的數據,才能使得後面的操作正常運轉。

什麼是文件系統?

文件系統是操作系統用於明確存儲設備(常見的是磁盤,也有基於NAND Flash的固態硬盤)或分區上的文件的方法和數據結構;即在存儲設備上組織文件的方法。操作系統中負責管理和存儲文件信息的軟件機構稱爲文件管理系統,簡稱文件系統。文件系統由三部分組成:文件系統的接口,對對象操縱和管理的軟件集合,對象及屬性。從系統角度來看,文件系統是對文件存儲設備的空間進行組織和分配,負責文件存儲並對存入的文件進行保護和檢索的系統。具體地說,它負責爲用戶建立文件,存入、讀出、修改、轉儲文件,控制文件的存取,當用戶不再使用時撤銷文件等。

文件系統分類:

Linux

1Linux:存在幾十個文件系統類型:ext2,ext3,ext4,xfs,brtfs,zfs(man 5 fs可以取得全部文件系統的介紹)

不同文件系統採用不同的方法來管理磁盤空間,各有優劣;文件系統是具體到分區的,所以格式化針對的是分區,分區格式化是指採用指定的文件系統類型對分區空間進行登記、索引並建立相應的管理表格的過程。

  • ext2具有極快的速度和極小的CPU佔用率,可用於硬盤和移動存儲設備
  • ext3增加日誌功能,可回溯追蹤
  • ext4日誌式文件系統,支持1EB(1024*1024TB),最大單文件16TB,支持連續寫入可減少文件碎片。rhel6默認文件系統
  • xfs可以管理500T的硬盤。rhel7默認文件系統
  • brtfs文件系統針對固態盤做優化,
  • zfs更新?

windows

  • FAT16:MS—DOS和win95採用的磁盤分區格式,採用16位的文件分配表,只支持2GB的磁盤分區,最大單文件2GB,且磁盤利用率低
  • FAT32:(即Vfat)採用32位的文件分配表,支持最大分區128GB,最大文件4GB
  • NTFS:支持最大分區2TB,最大文件2TB,安全性和穩定性非常好,不易出現文件碎片。

其他

  • RAMFS:內存文件系統
  • ISO 9660:光盤
  • NFS:網絡文件系統
  • SMBAFS/CIFS:支持Samba協議的網絡文件系統
  • Linux swap:交換分區,用以提供虛擬內存。

三、總結

以Win7系統爲例,整個操作系統引導過程如下:

1、電腦開機後,開始啓動BIOS,開始BIOS自檢。

2、通過自檢後,bios找到硬盤上的主引導記錄MBR.

3、MBR開始讀取硬盤分區表DPT,找到活動分區,找到活動分區中的分區引導記錄PBR,並且把控制權交給PBR.

4、PBR搜索活動區中的啓動管理器bootmgr,找到啓動管理器後,PBR把控制權交給bootmgr(相當於xp裏的ntldr文件)。

5、Bootmgr尋找活動分區中的boot文件夾中的BCD文件(啓動配置數據,相當於xp裏的boot.ini文件)。

6、找到BCD後,Bootmgr首先從BCD 中讀取啓動管理器bootmgr菜單的語言版本信息,然後再調用BOOTMGR與相應語言的BOOTMGR.EXE.MUI (在boot文件夾對應語言文件夾中)組成相應語言的啓動菜單,之後在顯示器上顯示多操作系統選擇畫面。

7、如果存在多個操作系統而且系統設置的等待時間不是0,那麼屏幕就顯示多個操作系統的選擇界面。如果沒有多系統,那麼直接進入windows 7系統,不顯示選擇界面。

8、選擇windows 7系統後,bootmgr就會讀取BCD裏win7系統所在的盤裏的windows\system32\winload.exe文件,並且將控制權交給winload.exe。

9、Winload.exe加載windows7內核、硬件、服務等,之後加載桌面等信息,從而啓動整個windows 7系統,直至執行login程序,跳出登錄界面,等待用戶輸入用戶名和密碼。

10、windows 7系統啓動文件系統,用於後續數據的存入、讀出、修改等。

 

是不是很暈!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

 

GPT轉MBR

 

一般情況下,我們使用Diskpart命令即可完成轉換。

 

操作步驟如下:(注意:轉換磁盤格式需要清空磁盤中的所有分區和數據,在操作前,請保存好磁盤中所有重要數據。)

1.使用Win7光盤或者U盤引導,進入系統安裝界面。

 

MBR分區和GPT分區互相轉換的方法

 

2.按Shift + F10打開命令提示符。

 

MBR分區和GPT分區互相轉換的方法

 

3.輸入"Diskpart"(不用輸入引號,下同),並按回車,進入操作界面

 

MBR分區和GPT分區互相轉換的方法

 

4.輸入:"list disk",查看磁盤信息。注意看磁盤容量來選擇。圖中465G的Disk 0是硬盤,3852M的Disk 1是用於Win7安裝的U盤。

 

MBR分區和GPT分區互相轉換的方法

 

5.輸入:"select disk 0",選擇disk 0爲當前操作的磁盤

 

MBR分區和GPT分區互相轉換的方法

 

6.輸入:"Clean",清空當前磁盤分區。

 

MBR分區和GPT分區互相轉換的方法

 

7.輸入:"convert mbr",轉換爲MBR分區。

 

MBR分區和GPT分區互相轉換的方法

 

8.操作完成,關閉此命令提示符窗口,繼續按照正常的方法安裝Win7系統即可。

 

擴展知識:convert命令的其它用法:

 

convert  basic     -將磁盤從動態轉換爲基本。

 

convert  dynamic  -將磁盤從基本轉換爲動態。

 

convert  gpt      -將磁盤從MBR轉換爲GPT。

 

convert  mbr     -將磁盤從GPT轉換爲MBR。

部門轉自:https://blog.csdn.net/jonathan321/article/details/51987680

                 https://blog.csdn.net/qq_35038153/article/details/78440374

 

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