BIOS與UEFI


BIOS  

  BIOS是英文"Basic Input Output System"的縮略詞,直譯過來后中文名稱就是"基本輸入輸出系統"。在IBM PC兼容系統上,是一種業界標准的固件接口 [1]  BIOS這個字眼是在1975年第一次由CP/M操作系統中出現。 [2]  BIOS是個人電腦啟動時加載的第一個軟件。

  其實,它是一組固化到計算機主板上一個ROM芯片上的程序,它保存着計算機最重要的基本輸入輸出的程序、開機后自檢程序和系統自啟動程序,它可從CMOS中讀寫系統設置的具體信息 其主要功能是為計算機提供最底層的、最直接的硬件設置和控制。此外,BIOS還向作業系統提供一些系統參數。系統硬件的變化由BIOS隱藏,程序使用BIOS功能而不是直接控制硬件。現代作業系統會忽略BIOS提供的抽象層並直接控制硬件組件。
當今,此系統已成為一些病毒木馬的目標。一旦此系統被破壞,其后果不堪設想
BIOS在計算機系統中起着非常重要的作用。一塊主板性能優越與否,很大程度上取決於主板上的BIOS管理功能是否先進。
  而BIOS程序是由硬件實現了ROM地址到CPU尋址空間的映射,不需要“驅動程序”裝載。BIOS調用之所以能“通吃”地訪問所有可啟動的存儲設備,是因為芯片組給存儲設備接口制定了標准,所有的存儲設備都要符合這個標准。
  BIOS設置程序主要對計算機的基本輸入輸出系統進行管理和設置,使系統運行在最好狀態下,使用BIOS設置程序還可以排除系統故障或者診斷系統問題。有人認為既然BIOS是"程序",那它就應該是屬於軟件,感覺就像自己常用的Word或Excel。但也有很多人不這么認為,因為它與一般的軟件還是有一些區別,而且它與硬件的聯系也是相當地緊密。形象地說,BIOS應該是連接軟件程序與硬件設備的一座"橋梁",負責解決硬件的即時要求。
    
BIOS芯片中主要存放:
自診斷程序:通過讀取CMOSRAM中的內容識別硬件配置,並對其進行自檢和初始化;
● CMOS設置程序:引導過程中,用特殊熱鍵啟動,進行設置后,存入CMOS RAM中;
● 系統自舉裝載程序:在自檢成功后將磁盤相對0道0扇區上的引導程序裝入內存,讓其運行引導操作系統;
● 主要I/O設備的驅動程序和中斷服務:由於BIOS直接和系統硬件資源打交道,因此總是針對某一類型的硬件系統,而各種硬件系統又各有不同,所以存在各種不同種類的BIOS,隨着硬件技術的發展,同一種BIOS也先后出現了不同的版本,新版本的BIOS比起老版本來說,功能更強。
注:CMOS是Complementary Metal Oxide Semiconductor(互補金屬氧化物半導體)的縮寫。它是指制造大規模集成電路芯片用的一種技術或用這種技術制造出來的芯片,是電腦主板上的一塊可讀寫的RAM芯片。因為可讀寫的特性,所以在電腦主板上用來保存BIOS設置完電腦硬件參數后的數據,這個芯片僅僅是用來存放數據的。而對BIOS中各項參數的設定要通過專門的程序。BIOS設置程序一般都被廠商整合在芯片中,在開機時通過特定的按鍵就可進入BIOS設置程序,方便地對系統進行設置。因此BIOS設置有時也被叫做CMOS設置。
在計算機領域,CMOS常指保存計算機基本啟動信息(如日期、時間、啟動設置等)的芯片。有時人們會把CMOS和BIOS混稱,其實CMOS是主板上的一塊可讀寫的並行或串行FLASH芯片,是用來保存BIOS的硬件配置和用戶對某些參數的設定。
BIOS主要功能:
第一個部分是用於電腦剛接通電源時對硬件部分的檢測,也叫做加電自檢(Power On Self Test,簡稱POST),功能是檢查電腦是否良好,通常完整的POST自檢將包括對CPU,640K基本內存,1M以上的擴展內存,ROM,主板,CMOS存儲器串並口,顯示卡,軟硬盤子系統及鍵盤進行測試,一旦在自檢中發現問題,系統將給出提示信息或鳴笛警告。自檢中如發現有錯誤,將按兩種情況處理:對於嚴重故障(致命性故障)則停機,此時由於各種初始化操作還沒完成,不能給出任何提示或信號;對於非嚴重故障則給出提示或聲音報警信號,等待用戶處理。
第二個部分是初始化,包括創建中斷向量、設置寄存器、對一些外部設備進行初始化和檢測等,其中很重要的而對BIOS中各項參數的設定要通過專門的程序。BIOS設置程序一般都被廠商整合在芯片中,在開機時通過特定的按鍵就可進入BIOS設置程序,方便地對系統進行設置。因此BIOS設置有時也被叫做CMOS設置。一部分是BIOS設置,主要是對硬件設置的一些參數,當電腦啟動時會讀取這些參數,並和實際硬件設置進行比較,如果不符合,會影響系統的啟動。
第三個部分是引導程序,功能是引導DOS或其他操作系統。BIOS先從軟盤或硬盤的開始扇區讀取引導記錄,如果沒有找到,則會在顯示器上顯示沒有引導設備,如果找到引導記錄會把電腦的控制權轉給引導記錄,由引導記錄把操作系統裝入電腦,在電腦啟動成功后,BIOS的這部分任務就完成了。
EFI&UEFI
  可擴展固件接口(Extensible Firmware Interface,EFI)是 Intel 為 PC 固件的體系結構、接口和服務提出的建議標准。其主要目的是為了提供一組在 OS 加載之前(啟動前)在所有平台上一致的、正確指定的啟動服務,被看做是英特爾公司推出的一種在未來的類PC的電腦系統中替代BIOS的升級方案。
 
  EFI,是Extensible Firmware Interface的詞頭縮寫,直譯過來就是可擴展固件接口,它是用模塊化、高級語言(主要是C語言)構建的一個小型化系統,它和BIOS一樣,主要在啟動過程中完成硬件初始化,但它是直接利用加載EFI驅動的方式(而BIOS程序是由硬件實現了ROM地址到CPU尋址空間的映射,不需要“驅動程序”裝載),識別系統硬件並完成硬件初始化,徹底摒棄讀各種中斷執行。EFI驅動並不是直接面向CPU的代碼,而是由EFI字節碼編寫成,EFI字節碼是專用於EFI的虛擬機器指令,需要在EFI驅動運行環境DXE下解釋運行,這樣EFI既可以實現通配,又提供了良好的兼容。此外,EFI完全是32位或64位,摒棄16位實模式,在EFI中就可以實現處理器的最大尋址,因此可以在任何內存地址存放任何信息。另外,由於EFI的驅動開發非常簡單,基於EFI的驅動模型原則上可以使EFI接觸到所有硬件功能,在EFI上實現文件讀寫,網絡瀏覽都是完全可能的。BIOS上的的CMOS設置程序在EFI上是作為一個個EFI程序來執行的,硬件設置是硬件設置程序、而啟動管理則是另一個程序,保存CMOS又是另一個程序,雖然它們在形式的Shell上是在一起的。
   EFI在概念上非常類似於一個低階的操作系統,並且具有操控所有硬件資源的能力。不少人感覺它的不斷發展將有可能代替現代的操作系統。事實上,EFI的締造者們在第一版規范出台時就將EFI的能力限制於不足以威脅操作系統的統治地位。首先,它只是硬件和預啟動軟件間的接口規范;其次,EFI環境下不提供中斷的訪問機制,也就是說每個EFI驅動程序必須用輪詢的方式來檢查硬件狀態,並且需要以解釋的方式運行,較操作系統下的驅動效率更低;再則,EFI系統不提供復雜的存儲器保護功能,它只具備簡單的存儲器管理機制,具體來說就是指運行在x86處理器的段保護模式下,以最大尋址能力為限把存儲器分為一個平坦的段,所有的程序都有權限存取任何一段位置,並不提供真實的保護服務。當EFI所有組件加載完畢時,系統可以開啟一個類似於操作系統Shell的命令解釋環境,在這里,用戶可以調入執行任何EFI應用程序,這些程序可以是硬件檢測及除錯軟件,引導管理,設置軟件,操作系統引導軟件等等。理論上來說,對於EFI應用程序的功能並沒有任何限制,任何人都可以編寫這類軟件,並且效果較以前MS-DOS下的軟件更華麗,功能更強大。一旦引導軟件將控制權交給操作系統,所有用於引導的服務代碼將全部停止工作,部分運行時代服務程序還可以繼續工作,以便於操作系統一時無法找到特定設備的驅動程序時,該設備還可以繼續被使用。
一般認為,EFI由以下幾個部分組成:
  1. Pre-EFI初始化模塊
  2. EFI驅動執行環境
  3. EFI驅動程序
  4. 兼容性支持模塊(CSM)
  5. EFI高層應用
  6. GUID 磁盤分區
  新型UEFI,全稱“統一的可擴展固件接口”(Unified Extensible Firmware Interface), 是一種詳細描述類型接口的標准。這種接口用於操作系統自動從預啟動的操作環境,加載到一種操作系統上。UEFI是由EFI1.10為基礎發展起來的,它的所有者已不再是Intel,而是一個稱作Unified EFI Form的國際組織。
  值得注意的是,一種突破傳統MBR(主引導記錄磁盤分區結構限制的GUID(全局唯一標志符)磁盤分區系統將在UEFI規范中被引入。MBR結構磁盤只允許存在4個主分區,而這種新結構卻不受限制,分區類型也改由GUID來表示。在眾多的分區類型中,UEFI系統分區用來存放驅動和應用程序。很多朋友或許對這一點感到擔心:當UEFI系統分區遭到破壞時怎么辦?而容易受病毒侵擾更是UEFI被人詬病的一大致命缺陷。事實上,系統引導所依賴的UEFI驅動通常不會存放在UEFI系統分區中,當該分區的驅動程序遭到破壞,我們可以使用簡單方法加以恢復,根本不用擔心。
 

1 必須搞清的幾個UEFI問題
(1) UEFI啟動模式 與 legacy啟動模式
legacy啟動模式: 就是這么多年來PC一直在使用的啟動方式(從MBR中加載啟動程序),UEFI BIOS作為一種新的BIOS自然也應該兼容這種老的啟動方式;

UEFI啟動模式: UEFI BIOS下新的啟動技術。如果你的PC在UEFI啟動模式下預裝了Win8,你會發現有兩個很小的隱藏分區。一個叫ESP(EFI系統分區),另一個MSR(Microsoft保留分區,通常為128MB)。MSR是windows要求的。ESP對UEFI啟動模式很重要,UEFI的引導程序是以后綴名為.efi的文件存放在ESP分區中的,ESP分區采用fat32文件系統。此外,可能還存在一個小分區叫WinRE Tools,這個是win8的恢復分區,體積也很小。所以千萬不要手賤把這三個分區刪了。但對我們有意義的是ESP分區,windows下想訪問ESP分區需用分區工具給它分配盤符並取消隱藏;而Ubuntu則直接將這個分區掛載到/boot/efi,直接用文件夾瀏覽器進去就可以看到各種.efi文件了。


因此第一個關鍵問題就是確定自己的啟動模式,方法是進入BIOS,然后你會發現有一項叫"boot mode",選中"UEFI boot"就是UEFI啟動模式,選中"Legacy boot"就是Legacy啟動模式。

(2) UEFI啟動模式只支持64位的系統,所以預裝的win8是64位的,ubuntu(kylin)也需要64位的。

(3) UEFI BIOS 和 Legacy BIOS
我們都知道可以在傳統的bios中調整設備的啟動優先級,UEFI BIOS在UEFI啟動模式下不但可以調整設備的優先級,還可以調整設備中引導程序的優先級,安裝完ubuntu之后,你再進BIOS就會發現多了一個可選擇的啟動項叫ubuntu。

(4) UEFI啟動模式下如何從u盤或移動硬盤引導
只要u盤或移動硬盤上有一個fat32的分區,分區的根目錄下有個文件夾叫EFI,UEFI就會自動去查找相應的啟動文件(.efi)
如果你剛制作了ubuntu(kylin)-13.04-64位的啟動u盤,可以打開它,你會發現分區的文件系統是fat32,確實有一個EFI文件夾,進去看看就是各種.efi引導文件(這里再次強調64位,32位下你是找不到這個文件夾的)。因此現在想制作可啟動的u盤或移動硬盤就簡單了,只需要復制粘貼就行了。
部分UEFI BIOS還支持從NTFS分區中查找啟動文件。


Q:GPT與(U)EFI有何關系?
A:這點通過百科即可了解。GPT本來可算是(U)EFI的衍生品,但是兩者並無絕對的彼此依賴關系。也就是說,在BIOS/MBR分區表使用(U)EFI,或者在GPT使用BIOS/MBR都是可能的。這點也是大多數初級接觸的用戶的誤區,認為兩者是共生關系,缺一不可,事實上卻完全不是如此。

Q:操作系統對GPT的支持如何?
A:這點也可以通過查找百科了解。現有的主流操作系統皆可支持GPT。但是,我在這里要把所謂的支持分成兩部分來說,一部分是對GPT作為數據盤的支持,一部分是對從GPT磁盤啟動的支持。如果僅將GPT用作數據盤,幾乎都不存在問題。如果要從GPT啟動,對於Windows而言,由於其依賴(U)EFI,因此僅有64位的Windows可實現。而在Linux等非Windows系統,通常不存在此限制。

Q:GPT有何優勢?
A:首先最明顯的優勢自然是對於大容量硬盤(2.2TB或者2.0TiB以上)的原生支持。現在雖然廠商各自針對大容量硬盤推出了在BIOS/MBR分區表的訪問方案,不過總覺得有點別扭。
其次,GPT不存在擴展分區和邏輯分區,所有分區全都是主分區,且理論上可存在的主分區個數是無限的(大多數操作系統會將主分區個數限制為128個,此處可能有謬誤)。由此帶來的好處顯而易見,不必糾結於分區個數的限制和擴展分區/邏輯分區和主分區的轉換了。而且這兩年分區工具日漸成熟,對GPT的支持也已經算是良好了。
第三,GPT的分區表在GPT頭部和磁盤尾部各存一份,這種機制使得GPT的分區表不容易破壞或丟失,像我這樣沒有備份分區表習慣的人也不怕丟分區了。

Q:我沒有(U)EFI主板,能否從GPT啟動Windows?
A:事實上是可以的,不過需要Hackintosh的Clover EFI Loader,這個Loader可以在不支持(U)EFI的主板模擬(U)EFI,從而騙過操作系統。只不過Clover似乎並不能單獨提取出來,因此差不多只有需要Hackintosh和Windows雙系統的用戶才會用到。

Q:為何Linux/BSD等操作系統不需要(U)EFI即可從GPT啟動?
A:仔細研究下GPT的組成結構就不難發現,GPT的第一個扇區是一份出於兼容考慮而保留的保護性MBR(PMBR)。有些操作系統從GPT啟動依賴的就是這份PMBR,而不是(U)EFI。在涉及PMBR時,其操作和BIOS/MBR完全一樣。因此,Linux/BSD等操作系統是“以傳統MBR方式”從GPT啟動的。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM