1. 程式人生 > >反Secure Boot壟斷:兼談如何在Windows 8電腦上安裝Linux

反Secure Boot壟斷:兼談如何在Windows 8電腦上安裝Linux

這絕非危言聳聽。而且,由於這個事件直接與Windows 8作業系統有關,因此意味著一切已經迫在眉睫了。

下面,我根據自己的理解,談談這到底怎麼回事。如果你是一個Linux愛好者,或者喜歡自己安裝作業系統,下面的內容與你直接相關。

二、BIOS和UEFI

所有電腦啟動的時候,都會執行BIOS程式,用於初始化硬體。



自從個人電腦誕生後,就一直如此。過去30年我們都在使用類似上圖的畫面,設定硬體引數。不用說,BIOS已經變得日益不適用了。

1998年,Intel牽頭,聯合AMD、AMI、Apple、Dell、HP、IBM、Lenovo、Microsoft和Phoenix等業 界主要廠商,開始制定新一代BIOS。這個專案叫做"統一的可擴充套件固定介面"(Unified Extensible Firmware Interface),簡稱
UEFI
。2005年推出1.1版,目前是2.3版。



將來一開機,電腦執行的將不是BIOS,而是UEFI BIOS。等它執行結束,再載入作業系統。

三、微軟的態度

UEFI是一個很先進的、面向未來的規格。但是很長時間內無法推廣,原因就是微軟公司不支援。

Windows作業系統是桌面市場的主流系統,如果它不部署UEFI程式碼,就沒有硬體廠商會跟進。所以,普通消費者對這個新規格所知甚少。

意想不到的變化,出現在2011年9月,微軟毫無預兆地突然宣佈,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將無法使用,需要重新安裝。

六、例項:微星主機板

ITwire的記者Sam Varghese,做了一個實驗,想了解在開啟Secure Boot的主機板上,如何安裝作業系統。

實驗物件是微星公司Z77A-G41主機板。它帶有Secure Boot功能,預設是關閉的。

第一步,開機後按Delete鍵,進入BIOS,選擇Windows 8 Configration選項。



第二步,選擇最後一個Secure Boot選項。



第三步,開啟(Enabled)Secure Boot功能,然後選擇最後一個Key Management(金鑰管理)選項。



第四步,輸入廠商提供的公鑰,也就是Windows 8的公鑰(目前,任何其他作業系統都沒有這類公鑰。)



第五類,安裝Windows 8之後,在命令列介面輸入confirm-securebootuefi命令,結果為true,表示secureboot功能開啟。



根據Sam Varghese測試,開啟Secure Boot之後,再安裝其他作業系統(包括以前版本的Windows),全部被主機板拒絕。

七、對Linux的影響

Secure Boot規格的本意是,讓作業系統廠商自行選擇公鑰,通過認證。但是實際上,只有微軟公司才有能力,讓主機板廠商內建它的公鑰,其他公司都不具備這種能力。

因此,如果要在開啟Secure Boot的主機板上安裝Linux系統,這個系統就必須通過Windows 8的認證。

目前,微軟公司把Windows 8的私鑰委託給Verisign,頒發認證。作業系統廠商想要通過認證,就必須花99美元,向Verisign買一張數字證書,嵌入自家的作業系統。

最新動態是,Linux的各個發行版之中,Ubuntu已經購買了數字證書,Fedora和SUSE計劃購買,其他發行版還沒做出決定。

因此,在預裝Windows 8的電腦上安裝Linux(或其他作業系統)的最佳做法,就是進入BIOS,關閉Secure Boot。但是,這意味著你花錢買來的Windows 8將無法使用,而且對於普通使用者,這種操作有一定難度。

八、為什麼Windows 8的公鑰不可接受?

目前看上去,Linux購買Windows 8的數字證書,是眼下唯一可行的相對容易的解決方法。但是,這種做法不可接受。

首先,系統的公鑰被微軟控制,後果難以預料。如果微軟決定更換和廢除這個公鑰,Linux就要被迫跟進。

其次,Linux的啟動管理器Grub是GPL許可證,該許可證(第三版)明文禁止軟體附帶非GPL許可證下的金鑰,因此要改用非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的本來用意是保證系統安全,但現在似乎成了廠商保護市場壟斷、阻礙競爭一種手段。

除了微軟公司,蘋果公司也有這種傾向。在新一代的iPhone和iPad上面安裝其他作業系統,似乎是不可能的。

自由軟體基金會呼籲反Secure Boot壟斷,就是基於這種考慮:使用者應該擁有硬體和軟體的使用自由,作業系統應該是開放的,而不是封閉的。

作為一種規格,自由軟體基金會並不反對Secure Boot,它只是要求硬體廠商提供便利,使得使用者可以更容易地安裝和管理公鑰,從而使用硬體平臺對所有作業系統(以及裝置驅動)保持開放。

我認為,這是完全合理的要求,對於保證使用者的自由和業界的健康生態極為重要。讓我們一起支援這個行動(簽名捐助),密切關注事態下一步的發展。