裝系統,尤其是雙系統,總是無法繞過引導的坑。linux的grub是非常複雜的引導系統,學習它非常累。而windows又不能引導linux。你可能會想,怎麼就沒有一種簡單的引導方式,就好像引導光碟,引導u盤那樣,插上去就能用呢?因為傳統的mbr引導設計得很小氣,所以多個系統都拼命爭奪那個小小的引導區域... ...
裝系統,尤其是雙系統,總是無法繞過引導的坑。
linux的grub是非常複雜的引導系統,學習它非常累。而windows又不能引導linux。你可能會想,怎麼就沒有一種簡單的引導方式,就好像引導光碟,引導u盤那樣,插上去就能用呢?
因為傳統的mbr引導設計得很小氣,所以多個系統都拼命爭奪那個小小的引導區域,而自己卻又不懂得引導對方,所以就相互傷害,相互覆蓋引導。但是,uefi橫空出世,比較好的解決了這個問題。
但是如果你不熟悉uefi的原理,那麼你會覺得這個uefi更加坑爹。電腦的東西,一定要先熟悉其原理,而不是渾水摸魚,隨便瞎搞,這樣是沒結果的。
uefi引導有兩個條件:
1.有個引導區,叫ESP。
2.每個分區都是gpt分區格式的。這個分區格式是指用了新的分區表。
uefi可以相容mbr傳統格式,但沒必要!舊的東西就是要被淘汰的。所以現在uefi的複雜性是因為相容mbr,如果不去相容,才能體現uefi的便利。
首先要在bios裡面關閉相容模式,csm 關了。安全啟動也關了。然後能選的都選uefi。
設好之後,才是純粹的uefi環境。
為什麼uefi 引導會比較方便呢?因為以前是所有操作系統,都爭奪一塊小區域,現在uefi直接給你一個引導分區,每個系統只要把引導文件按照規定放在各自的文件夾,就ok了,大家相互可以不認識,也可以不知道對方是誰,也可以不知道怎麼引導對方。這豈不是很完美?
esp就是這麼一個地方,它實際上是一個普通的fat16格式(或fat32)分區(win98之前的預設格式),這種格式,幾乎每個操作系統都認識,都能操作,所以就很便利。但是為了避免受到破壞,進入系統之後,系統會對其進行隱藏,所以要用特定的工具來訪問它。
知道原理之後,就很容易設計引導方案了。
事實上,對windows來說,引導只需要兩個文件,一個是引導程式,一個是配置文件。其中引導程式,只需要複製,而配置文件叫bcd,通過一個叫easybcd的工具可以配置。
當然,第一步你的硬碟必須先格式化為gpt格式的。但是如果你已經格式化了,也沒關係,可以通過diskgenius的免費軟體來轉換成gpt格式,操作得當不會破壞數據。
esp分區新建如下目錄結構:
efi/boot/
efi/microsoft/boot/
將windows系統裡面的bootmgfw.efi 複製到第二個路徑下,把配置好的bcd也複製過去。然後把bootmgfw.efi 複製一份,改名bootx64.efi複製到第一條路徑下。
就這麼簡單,甚至第二步也不是必須的。bootx64.efi這裡是電腦預設啟動的路徑,而microsoft下麵的,是微軟這個品牌的系統所使用的啟動路徑,如果bios足夠聰明,它會直接在microsoft下麵找引導程式.efi。
對於linux來說,同樣的,它也可以建立一個linux的文件夾,或者隨便什麼名字的文件夾,把引導文件放進去就可以了。
特別的,bios 內部的存儲區域還可以存儲相關的引導路徑信息(需要相關工具來設置這塊區域),方便用戶選擇。所以為何有些系統的引導文件佈局和以上有所不同。
除了esp分區,其他任何分區,都可以獨立的被引導,甚至可以跨設備引導,因為gpt用一個很長的標記標識所有設備,可以認為是無衝突,獨一無二的,因此理論上,不管引導文件存在那裡,從那裡開始引導,只要給出正確的設備號,都能找到對應的設備,從而進行正確的引導。因此,理論上當前設備esp有沒有,也不是關鍵,只要在某個設備上有,這個引導程式可以引導所有連接到硬體系統的設備。這也是uefi 和gpt分區系統真正強大的地方,真正做到了隨意引導,與位置無關。
比如我們可以把引導放在一個u盤裡面,然後插上這個u盤才能使用電腦,這也是挺有趣的實踐。不過我沒試過。大家可以嘗試一下。