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 必須搞清的幾個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啟動的。
?
轉載于:https://www.cnblogs.com/liuzhenbo/p/10805903.html
總結
- 上一篇: Quartus16.1布线优化选择,重编
- 下一篇: 软件工程第二次结对作业