uefi與win8 (根據網絡資料整理)

 

 BIOS
      
所有電腦啓動的時候,都會運行BIOS程序,用於初始化硬件。BIOS是英文"Basic Input Output System"的縮略語,直譯過來後中文名稱就是"基本輸入輸出系統"。其實,它是一組固化到計算機內主板上一個ROM芯片上的程序,它保存着計算機最重要的基本輸入輸出的程序、系統設置信息、開機後自檢程序和系統自啓動程序。其主要功能是爲計算機提供最底層的、最直接的硬件設置和控制。

BIOS的基本功能,那就是:
1)  
檢測硬件,又叫POST

檢查硬件是否還正常的工作,但是從軟件的角度看.其中最重要的就是對內存的檢測的
2)  
初始化硬件,設置其基本狀態,使得整個計算機達到所謂的"可用狀態"(Ready State).
硬件的設計廠家往往爲了通用市場的考慮,不願意將硬件設計成定製的狀態,可能一個網卡,可以安裝在PC,同樣也可以安裝在嵌入式系統上.所以爲了使得硬件能夠按照PC的架構工作,BIOS必須要按照由IHVIndenpendent Hardware Vendor獨立硬件商)提供的手冊將硬件設置好,比如寫幾個必須的寄存器之類的,做一些enable的工作.這點非常重要,如果一個硬件沒有enable,那麼在OS下將不可見.

3)  啓動OS Loader加載操作系統
這也是BIOS必須要做的事情之一.啓動的方式是由BIOS規定,操作系統必須按照BIOS的要求來設計.這也是爲什麼操作系統從DOS一直到Vista,都只能把自己的loader放在MBR,因爲BIOS只讀MBR.強大的微軟都必須要按照這個不成標準的標準來.當然,在EFI時代,這一點有所改變,EFI支持的Boot From File不在需要MBR

4)  在操作系統啓動起來以後,一部分繼續駐留內存,向操作系統以及其他軟件提供基本的系統級的服務.如磁盤讀寫等.例如INT 10基本屏幕服務,INT 13磁盤服務,病毒正是靠INT 13來傳播.還有試圖繞過INT 10來直接寫屏,Windows時代,這些東西事實上仍然存在,並且繼續發揮着基本的核心作用,只是他們被Windows包裝起來了,一般的程序無法接觸到,但這並不能說明他們就沒有用處了

5)  修復硬件缺陷

Intel在它的CPU裏專門留了個模式叫System Managment Mode,擁有最高的權限.SMM中斷的時候,就連號稱無所不能的Windows的也不知道,這樣就可以給CPUbug了,舉個例子,比如某天Intel的一個CPUADD指令給出錯誤操作結果,那麼就可以利用SMM在每次執行這個指令的時候,中斷一下,由BIOS軟件給出正確的執行結果.這就達到了給硬件修復缺陷的目的.這樣Intel也不用招回它的CPU了,此外,每次BIOS開機的時候,事實上都會更新CPU Microcode,同樣是用來給CPUbug的.所以很多時候,刷BIOS刷出問題,事實上某個CPUbug沒有補上導致出了問題出現.

 

BIOS有三種狀態,分別是:

1)  Before Build
BIOS
表現爲BIOS開發者硬盤上的一堆源代碼
2)  BIOS Image
BIOS
則是沉睡在Flash裏的一段image(主板ROM中的代碼)
3)  BIOS Runtime

BIOS執行,控制系統,與操作系統交互

 

EFI BIOS

eFI不是一個具體的軟件,而是在操作系統與平臺固件(platform firmware)之間的一套完整的接口規範。EFI定義了許多重要的數據結構以及系統服務,如果完全實現了這些數據結構與系統服務,也就相當於實現了一個真正的BIOS核心。

EFI最早是在Spring 2000 IDFIntel Developer’s Forum)上提出的,當時Intel認爲,隨着IBM80年代初推出了第一臺個人計算機開始,直到今天爲止,個人計算機硬件平臺已經發生了翻天覆地的變化,相關的系統軟件如操作系統等也從最早的MS DOS1.0到今天的Windows XP,而作爲整個系統的最底層也最爲關鍵的系統軟件之一的BIOS卻基本上保持了架構二十年不變。這在整個軟件史上都是一件不可思議的事情。如今,BIOS已經變成了嚴重阻礙IT產業前進的絆腳石,必須通過對BIOS的革新來爲下一代的操作系統(如Windows Server Longhorn)提供更加強大的支持。

通俗的說:EFI就是用來替換傳統BIOS.作爲更好的BIOSEFI可以提供過去無法在BIOS中作到的許多事情

 BIOS一般有多大?
傳統bios(以後說legacy bios)一般都是512KB,而早期的EFI bios也是512KB.現在EFI基本上是1MB.

BIOS用什麼工具開發?
legacy bios一般用MASM 6.11開發,同時還會配上一些廠商自己寫的buid tools. EFI則使用Viusal Studio.NET 2003以及MASM 6.11開發

EFI boot是怎麼一回事?
EFI有自己獨特的boot方式,完全拋棄掉了傳統的0磁道0扇區的MBR概念.EFIboot方式與文件系統息息相關.過去的legacy bios由於不帶文件系統,不得已選擇從硬盤上特定空間裝載程序的辦法,EFI則附帶了完整的文件系統支持,所以不再對硬盤有特定的要求,EFI下的操作系統加載程序事實上存儲在boot\ia32\bootia32.efi文件裏.(假定是IA32架構).這是一個EFI應用程序.

 

bios的資源彙總:
1. BIOS Boot Specification
業內一般叫BBS,詳細描述bios啓動時必須要做的所有事情,如何區分啓動設備,如何選擇啓動設備等等.

2. UEFI Specification
UEFI
規範,詳細描述了UEFI bios必須支持的接口.以及UEFI bios的模型,提供的服務等等開發UEFI必備的.

3. Ralf Brown's Interrupt List
收集中斷的東西,legacy bios學習很有用.

4. El Torito CD-ROM Boot
描述了bios如何從光驅上boot的細節.

5. USB Specification
USB
設備規範

6. Plug-and-Play Specifications
MS
PnP規範

7. BIOS Writer's Guide
bios
開發的聖經,cpu廠商給出.Intel的絕對看不到,Intel的是絕密級的文檔.AMD的倒是可以看到,不同的cpu有不同的BWG

EFI如何支持傳統操作系統如Windows XP?
:EFI通過一個叫CSM的東西來支持.CSMCompatibility Support Module,包括CSM32CSM16,EFI裏面定義的一種用來對傳統技術,MBR,legacy PCI OpRom等支持的模塊.包含32位代碼和16位的代碼,通過一種叫ThunkReverse Thunk的技術來切換CPU執行模式.目前世界上有能力提供CSM的公司只有三家,分別是:Insyde,AMI以及我國南京的百敖軟件(Nanjing Byosoft)。CSMefi bios最核心的模塊之一。

原生支持EFI的操作系統出現了嗎?
當然,Linux內核再2.4.0以上,就可以再編譯的內核的時候選擇EFI支持。Windows Vista也再SP1的時候提供了對EFI的支持,同時Windows Server 2008將直接支持EFI

 有能力提供EFI bios的廠家都有哪些?

1. Phoenix -- 早先主推CSS,現在開始逐漸轉行EFI。不過它的動作最慢,已經不爲業界看好。
2. Insyde -- 
主推H2O。最早的EFI解決方案,也同時賣legacy bios,但是質量一般。
3. AMI -- EFI
的方案叫Aption,特色是自己的開發工具VEB
4. Byosoft -- 
剛成立一年半的一家IBV,拿到了Intel的授權。目前如長城等OEM的一些特殊機器上的bios開始由Byosoft提供。(國產)
5. General Software -- 
專做x86 embedded bios的公司。國內很少見。

 

EFI下附帶完整的FAT/FAT32文件系統支持,並且所有的源代碼都是open source的,你可以從:
https://fat-driver.tianocore.org/
上面獲取這個EFI下的FAT32驅動程序的代碼

 

啓動操作系統的細節問題。legacy BIOS下,系統固件是從默認的0磁道0扇區(俗稱的MBR)來加載OSloader程序的。但是EFI提供了另一個選擇,如那就是如果操作系統是EFI native的,那麼操作系統可以選擇將自己的loader程序做成EFI應用程序,然後按照UEFI規範,存放在硬盤的GPT分區內的ef\boot\目錄下。具體的文件名是boot(ARCH).efi,這裏ARCH是架構名,如果是IA32,則是bootia32.efi,當然也可以是bootx64.efibootIA64.efi等等。
BIOS
檢測到這個文件,會自動將其加載到內存,然後執行。換言之,開始啓動操作系統。
這就是UEFI BOOT

EFI相較於legacy BIOS,有優點也有缺點
優點是高度模組化,移植很方便,OEM開發module很方便。
缺點也正是因爲這個模組化,完全沒考慮到BIOS是直接操作hardwareEFI很不好debug

 

1998年,Intel牽頭,聯合AMDAMIAppleDellHPIBMLenovoMicrosoftPhoenix等業界主要廠商,開始制定新一代BIOS。這個項目叫做"統一的可擴展固定接口"Unified Extensible Firmware Interface),簡稱UEFI2005年推出1.1版,目前是2.3版。新型UEFI,全稱統一的可擴展固件接口”(Unified Extensible Firmware Interface)是一種詳細描述全新類型接口的標準。這種接口用於操作系統自動從預啓動的操作環境,加載到一種操作系統上,從而使開機程序化繁爲簡,節省時間。從20129月以來,電腦運行的已經不是BIOS,而是UEFI BIOS。等它運行結束,再載入操作系統。

 微軟的態度
       UEFI是一個很先進的、面向未來的規格。但是很長時間內無法推廣,原因就是微軟公司不積極。Windows操作系統是桌面市場的主流系統,如果它不推廣UEFI,就沒有硬件廠商會跟進。所以,普通消費者對這個新規格所知甚少。意想不到的變化,出現在20119月,微軟毫無預兆地突然宣佈,Windows 8將啓用UEFI。這本來是一件好事。但是,問題是微軟感興趣的不是整個UEFI,而是UEFI的一個子規格Secure Boot。它要強行部署Secure Boot

Secure Boot
       Secure Boot
只是UEFI的一個部分。兩者的關係是局部與整體的關係。Secure Boot的目的,是防止惡意軟件侵入。它的做法就是採用密鑰。UEFI規定,主板出廠的時候,可以內置一些可靠的公鑰。然後,任何想要在這塊主板上加載的操作系統或者硬件驅動程序,都必須通過這些公鑰的認證。也就是說,這些軟件必須用對應的私鑰簽署過,否則主板拒絕加載。由於惡意軟件不可能通過認證,因此就沒有辦法感染Boot。這個設想是好的。但是,UEFI沒規定哪些公鑰是可靠的,也沒規定誰負責頒發這些公鑰,都留給硬件廠商自己決定。現在,微軟就是要求,主板廠商內置Windows 8的公鑰

Windows 8
      
首先明確,在不打開Secure Boot的情況下,Windows 8可以安裝。這與安裝以前版本的Windows沒有差別。但是,微軟規定,所有預裝Windows 8的廠商(即OEM廠商)都必須打開Secure Boot。因此,消費者購買一臺預裝Windows 8的臺式機或筆記本,想要在上面再安裝其他操作系統(包括以前版本的Windows)是不可能的,除非關閉Secure Boot,或者其他操作系統能夠通過Windows 8公鑰的認證。如果選擇關閉Secure Root,那麼預裝的Windows 8將無法使用,需要重新安裝。

Linux的影響
       Secure Boot規格的本意是,讓操作系統廠商自行選擇公鑰,通過認證。但是實際上,只有微軟公司纔有能力,讓主板廠商內置它的公鑰,其他公司都不具備這種能力。
      
根據微軟針對OEM廠商的一則規定,Windows 8要求PC電腦採用UEFI(統一可擴展固件接口),這個接口將會替代PC機誕生以來歷史悠久的BIOS固件設置。關於UEFI這個標準接口,是支持WindowsLinux OS X 操作系統的,只是微軟要求預裝Windows 8 PC電腦需要支持安全性啓動機制,啓動過程中涉及到的軟件/固件都必須打上CA數字簽名,這樣,對於Linux 這種開源的無簽名的系統就會直接阻止。
      
因此,如果要在打開Secure Boot的主板上安裝Linux系統,這個系統就必須通過Windows 8的認證。目前,微軟公司把Win8的數字簽名外包給了Verisign。操作系統廠商想要通過認證,就必須花99美元,向Verisign買一張數字證書,嵌入自家的操作系統。最新動態是,Linux的各個發行版之中,Ubuntu已經購買了數字證書,FedoraSUSE計劃購買,其他發行版還沒做出決定。
      
因此,在預裝Windows 8的電腦上安裝Linux(或其他操作系統)的最佳做法,就是進入BIOS,關閉Secure Boot。但是,這意味着你花錢買來的Windows 8將無法使用。

       目前看上去,Linux購買Windows8的數字證書,是眼下唯一可行的相對容易的解決方法。但是,這種做法不可接受。首先,系統的公鑰被微軟控制,後果難以預料。如果微軟決定更換和廢除這個公鑰,Linux就要被迫跟進。其次,Linux的啓動管理器GrubGPL許可證,該許可證(第三版)明文禁止軟件使用密鑰配合硬件阻止一部分用戶的使用,因此要改用非GPL許可證的啓動管理器。再次,只有幾個較大的Linux發行版纔有能力購買數字證書,較小的發行版和用戶自己定製的版本最終還是需要有自己的公鑰。

關於移動設備
       Secure Boot
對移動設備的影響,比PC還要嚴重。微軟明確規定,所有PC主板必須帶有關閉Secure Boot的選項。這不是因爲微軟的善意,而是因爲如果不這樣做,它一定會遭到反壟斷起訴。但是,在移動設備領域,微軟不佔優勢,所以它就沒有顧慮,規定所有安裝Windows的移動設備的Secure Boot必須打開,而且沒有關閉選項。
      
微軟的平板電腦Surface RT就是一個最好的例子。它的Secure Boot是打開的,沒法關閉,而且微軟用了一個不同於桌面電腦Windows 8操作系統的公鑰,且不提供獲得數字證書的途徑。因此理論上,用戶不可能在Surface RT上安裝其他操作系統。還有報道稱,使用Windows Phone 8操作系統的智能手機也將採用這種做法。那麼,用戶也就不可能在Windows Phone上安裝其他操作系統了。

Secure Boot的用意是保證系統安全,但現在似乎成了廠商保護市場壟斷、阻礙競爭一種手段。除了微軟公司,蘋果公司也有這種傾向。在新一代的iPhoneiPad上面安裝其他操作系統,似乎是不可能的。(不過一旦iPhoneiPad上面安能裝其他操作系統,估計蘋果就不是今天這個樣子了,蘋果玩的就是封閉!其實壟斷也是有好處的!)
      
自由軟件基金會呼籲反Secure Boot壟斷,就是基於這種考慮:用戶應該擁有硬件和軟件的使用自由,操作系統應該是開放的,而不是封閉的。作爲一種規格,自由軟件基金會並不反對Secure Boot,它只是要求硬件廠商提供便利,使得用戶可以更容易地安裝和管理公鑰,從而使用硬件平臺對所有操作系統(以及設備驅動)保持開放。

 

磁盤分區類型:MBRGPT

    MBR分區:使用32位表示扇區數,分區不超過2T,按柱面分區。0磁道0扇區是最外層,是引導系統啓動區域。它有512Byte,前446Byte是啓動加載項,64個字節是分區表,16個字節標識一個分區,所以最多分4個主分區,還有2個自己是55AA標識

    GPT分區:使用64位,支持128個分區,使用128UUID表示磁盤和分區,GPT分區表自動備份在頭和尾兩份,並有CRC校驗位,固件有UEFI接口,才支持GPT分區。

 

安裝win7win8經常會出現這種提示Windows 無法安裝到這個磁盤。選中的磁盤具有MBR分區表。在 EFI 系統上,Windows 只能安裝到 GPT 磁盤。

出現這種情況主要是因爲U盤啓動時,默認使用EFI引導啓動,而不是常見的MBR引導,所以會發生這種情況。這種情況常常出現在原來安裝32位系統、現在改安64位系統的過程中。

    解決方法一:出現上述問題後,直接把U盤拔掉插到其它電腦,把U盤裏的efi文件夾和bootmgr.efi文件刪掉,問題就搞定了,然後,再用這個U盤啓動盤去裝系統,就不會出現這種問題了。
刪掉這兩個文件夾跟文件的原因是因爲從U盤安裝會默認使用efi引導啓動,刪掉之後沒有efi,就默認用mbr啓動了。

解決方法二:非預裝win8機型出廠時,硬盤默認爲MBR分區表格式,而UEFI模式僅支持在GPT分區表的硬盤上安裝系統。
    如果系統安裝光盤中包含了UEFI信息,啓動時可能會自動加載並進入UEFI模式,因此便會出現“ windows無法安裝到這個磁盤,選中的磁盤具有MBR分區表,在EFI系統上,windows只能安裝到GFT磁盤”的提示。
建議您嘗試以下方法:
    開機按ESC鍵,會顯示兩個光驅或者U盤的選項,選擇光驅名稱前沒有UEFI的選項啓動,即可正常把系統安裝在MBR分區表硬盤上。

    解決方法三:進入主板選擇啓動的項目、比如F8、F11之類、u盤啓動裏有2項、一個是EFI啓動、一個是普通啓動,安裝64位系統、選了EFI啓動,就會出錯,應該選普通啓動。如果光盤安裝,進BIOS看看, EFI進入bios看到UEFI狀態時,Enabled 如果是啓用狀態,那麼把他禁用掉看看(改爲disabled),保存重啓,選擇光驅啓動。但不能選擇uefi的光驅模式。

 

總結:

1.uefi模式下安裝win8 ,安裝到GFT磁盤,不能安裝到MBR硬盤

2.MBR硬盤下安裝win 8,關閉Secure Boot,採用傳統引導模式

 

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