A. 淺談小米平板2的啟動與雙系統切換機制
小米公司於2015年11月推出小米平板2,至今已經5年多,該款平板雖然已可歸為老機型,但以高解析度的屏幕、美觀大方的外形、支持雙系統的x86架構,以及硬體可魔改升級的特點,至今依然得到大批粉絲的喜愛。
我去年開始與一群愛好者共同研究小米平板2雙系統刷機方法,研製的刷機包和配套教程成為網上傳播最廣、用戶最多的的雙系統安裝工具。在這個過程中,我對小米平板2的啟動過程和雙系統切換機制有了一定的了解,通過這篇文章進行簡單的總結。
小米平板2採用了目前主流的 UEFI 引導管理機制,具備安全、靈活的特點,也為用戶自行定製提供了基礎。
小米平板2加電後完成硬體自檢與 BIOS 引導,然後將控制權交給 UEFI 。UEFI 的運行過程可以簡單理解為:訪問 U盤或硬碟里 Fat32 格式的EFI系統分區(ESP),調用後綴為 .efi 的系統啟動文件(OS Loader),通過啟動文件載入 MIUI 或 Win10 等操作系統,最後把控制權交給新啟動的系統,完成啟動過程。
但是平板中可能有很多啟動文件,UEFI 怎麼知道該調用哪個呢?原來,調用過程遵守「按啟動序列中的順序依次調用啟動項」的原則。
平板中有兩個全局變數,一個存放所有啟動項,一個存放啟動順序,這兩個變數共同定義了啟動序列。UEFI 獲得控制權後會先訪問這兩個變數,以決定下一步的操作。用戶可以修改這兩個變數的內容,增加自己的啟動項,調整啟動順序,以達到優先調用用戶的啟動文件,啟動用戶想要的系統的目的。
但有個問題:如果由於用戶失誤,設置了無法正常啟動的文件,那麼每次開機時平板都先調用有問題的啟動項,導致系統無法正常進入操作系統,那豈不進入了無法控制的狀態,導致所謂的「變磚」?
小米平板2設計者充分考慮了這個情況,內置了另一個機制:只要平板識別到 U盤,就會檢查 U盤中是否有 Fat32 格式的分區,如果有,則在這個分區中查找 EFIBootBootx64.efi 文件。如果找到了,就會自動把這個文件添加到啟動項中,並把它設置為啟動順序中的第一個,然後啟動該啟動項。因此,只要 U盤的這個啟動文件正常,你就可以以它為入口,進入某個系統,比如PE,獲得控制權去修正之前犯下的錯誤。因為對 U盤的控制權在你的手裡,你可以隨時重做 U盤,甚至更換 U盤,因此只要你把 U盤做好,你就一定能取回對平板的控制權。
這就是我經常安慰機友的原因:「小米平板2變磚並不容易,只要屏幕能亮,U口沒壞,平板就變不了磚」。平板啟動失敗後一般會不斷嘗試重啟,即使有時剛開機或強行重啟時不識讀 U盤,也沒有關系,等它自動重啟(不通過按電源鍵重啟)後,一般都能恢復識讀。
使用 UEFI 的計算機普遍啟用了安全啟動選項(UEFI Secure Boot),用於避免非授權啟動文件的運行。小米平板2也不例外,並且更甚一步,不但啟用了安全啟動,而且即使用戶進入 BIOS 手工把安全啟動關閉,一段時間後平板會把它自動打開。
因此,小米平板2的安全啟動機制是做得比較嚴格的,但在保證安全的同時,也降低了用戶 DIY 的靈活度。也就有了那個梗:有用戶對「游戲塵間」(最早製作小米平板2雙系統切換功能的那位高手)吐槽切換操作不方便時,「游戲塵間」建議用戶「致電雷軍」。
UEFI Secure Boot 的存在,導致只有兩種 efi 文件可以成為小米平板2的啟動文件:一種是小米公司自己製作的 efi,它可以使用小米平板2最底層的一些機制獲得合法運行權,這個文件就是我們在安裝 MIUI 後,在 ESP 分區中看到的那個 EFIBootBootx64.efi 文件;另一種就是獲得了微軟CA認證的文件。因為 Secure Boot 最初是由微軟公司推出的,多年來微軟利用其自身地位強行推廣,已經形成廣泛使用的既成事實,目前基本上所有使用 UEFI 的計算機主板都集成了微軟的 CA 證書,主流的 Linux(如:Ubuntu、Redhat)等操作系統通過取得微軟的證書簽名,得以在使用 UEFI 的計算機上合法運行。
目前各大操作系統廠商之所以甘於屈居微軟的認證體系之下,一是由於反抗即成事實的代價太大,二是微軟用實力和信譽做擔保,至少到目前做到了公平。但在極端情況下,比如中美脫鉤,微軟是否還能保證公平,UEFI 是否會成為中國公司的一個軟肋,已經成為國內業界的熱門話題。這個留到以後再說。
在小米平板2雙系統刷機過程中,共涉及三個啟動文件,第一個是前面說到的MIUI 的 Bootx64.efi,第二個是 Win10 的啟動文件 Bootmgfw.efi,第三個是 Shimx64.efi。後面這兩個屬於取得微軟證書簽名的第二種文件,但 Shimx64.efi 不是操作系統的啟動文件,它與 rEFInd 共同為用戶提供選擇界面,讓用戶決定下一步啟動哪個系統。關於 Shimx64.efi 我會在後面詳細講解。
看到這里,你大概能明白小米平板2的雙系統開機切換功能為什麼不容易實現了:由於安全啟動的存在,導致第三方開發者的選擇非常有限,只能在狹窄的縫隙中尋找騰挪空間。
在小米平板2上安裝雙系統,實現雙系統切換功能,實際就是要給用戶以選擇權,讓用戶能自主決定進入哪個系統。我們使用了 rEFInd 提供的選擇機制來實現這個目標。
rEFInd 是一個被廣泛用於 UEFI 多系統啟動場景的解決方案,最大特點是平台無關和操作簡便。它最初被「游戲塵間」用於實現小米平板2刷機和雙系統切換,我們繼承了「游戲塵間」的思路,將其用於目前這版廣泛流傳的刷機工具和雙系統開機切換方案中。
rEFInd 與 Shimx64.efi 相結合,完美地在刷機和開機時給用戶提供了美觀、易操作的選擇界面,並在一定程度上減少了 UEFI Secure Boot 對用戶 efi 的限制。
Shimx64.efi 使用了 Secure Boot 的鏈式認證機制。前面已經說過,Shimx64.efi 已經取得微軟CA認證簽名,可以在小米平板2開機時合法運行,鏈式認證機制允許 Shimx64.efi 對 rEFInd 的 grubx64.efi 進行合法性認證,只要認證通過就可以被 Shimx64.efi 調用。grubx64.efi 的主要功能是給用戶提供選擇菜單(圖1),用戶選擇某一菜單的操作實際也是調用某個 efi 文件,grubx64.efi 對用戶選擇的 efi 認證通過後授權其運行。通過這種鏈式授權方式,減少了 UEFI Secure Boot 對 efi 的限制,未直接獲得微軟認證的軟體只要能由這種鏈式授權認證通過,也將被允許運行,因此簡化了認證過程,用戶可以使用的 efi 大為增加。
那麼什麼樣的 efi 能通過這種方式獲得授權呢?Shimx64.efi 調用 grubx64.efi 時,會對比小米平板2主板中存放的個人證書(注意:是個人證書,不是微軟發布的正式證書),如果 grubx64.efi 已經獲得該證書的簽名,則認證通過予以運行,否則彈出「驗證失敗,拒絕訪問」的報錯。
然後要求用戶導入 cer 證書,如果用戶能導入對應的 cer 證書文件,則允許 grubx64.efi 運行,否則退出。
用戶在 grubx64.efi 提供的選擇菜單調用的某個 efi 文件,也是通過這種方法進行認證。因此,用戶如果能保證 cer 證書正確導入平板,並且除 Bootx64.efi、Bootmgfw.efi 和 Shimx64.efi 這三個文件外的所有其它 efi 都經過該證書簽名,就可以在小米平板2上通過這種鏈式認證方式得以合法運行。
我們製作的刷機包中提供了個人證書,也就是上圖中的 Butterfly_of_Amazon.cer,刷機包中的各個 efi 文件也用該證書進行了簽名,因此只要按教程把這個證書導入平板,就可以正常使用刷機包和它提供的開機切換功能。
第一次使用刷機包進行刷機時,由於證書尚未導入,所以需要進入 BIOS 手工關閉安全啟動選項,等完成證書導入後就可以省略這個步驟了。
證書是存放在主板上的,導入一次永久有效,哪怕將硬碟中所有分區都刪除,也不會影響已導入的證書。但重刷 BIOS 會清除證書,因此每次刷完 BIOS 都會出現藍色窗口讓用戶重新導入。
前面講了小米平板2的啟動過程、安全機制和選擇機制,有了這些基礎,下面說說我們是怎麼實現雙系統切換功能的。
我們製作的刷機工具提供了兩種雙系統切換方法:一鍵切換和開機切換。
1. 一鍵切換
一鍵切換的原理相對簡單:(1)用戶在 MIUI 系統中運行 And2Win,這個 APP 會將 Win10 的 Bootmgfw.efi 改名為 Bootx64.efi,復制到平板的 ESP 分區中替換 MIUI 啟動文件 EFIBootBootx64.efi,然後重啟平板。平板啟動時調用 EFIBootBootx64.efi,而此時這個文件實際是 Bootmgfw.efi,因此實際啟動的將是 Win10;(2)由 Win10 切換到 MIUI 系統的過程類似,用戶在 Win10 中運行 Android 快捷方式,它將 MIUI 啟動文件 Bootx64.efi 復制回 ESP 分區的 EFIBoot 中,替換掉 Bootmgfw.efi,然後重啟平板,平板啟動還是調用 EFIBootBootx64.efi,而此時這個文件是 MIUI 的啟動文件,因此平板將啟動 MIUI 系統。
原理詳見下圖:
2. 開機切換
如果你安裝的是開機切換功能,那麼每次啟動平板時,會出現下圖的系統選擇菜單:
左邊大圖標為進入 Win10 系統,右邊大圖標為進入MIUI 系統。
原理詳見下圖:
理論這層窗戶紙捅破後,其實很簡單。我動筆前覺得這篇文章需要寫好幾天,可寫了3500 字後,卻發現畫完上面兩張流程圖後就可以收尾了。
實際在刷機包的研發過程中,我和小夥伴們克服了無數的困難,比如:PE 解析度太高字體太小問題、安裝 Win10 經常異常問題、Win10 映像的驅動集成問題、Remix 和 Lineage、RR 的硬碟克隆問題、第三方 REC 刷入 zip升級包問題、安卓系統下如何自動恢復 rEFInd 啟動文件問題、個人證書更換問題、BIOS 刷入工具移植問題、Win10 啟動序列自動更改問題、開機切換圖標用戶DIY問題、ESP 序號變化導致一鍵切換失效問題、開機切換多按一下確認鍵問題、啟動分區過小導致 Win10 引導文件生成失敗問題、Win10 啟動分區容量不足導致升級失敗問題,等等。每一個問題的解決都花費了我們諸多的心血。由這個項目,我深深體會了將理論知識轉換為工程成果需要經歷多少艱苦的工作,但這些工作卻又無法寫進文章,否則顯得太過瑣碎和龐雜。
現在這個刷機包雖然得到這么多用戶的喜歡,但我知道遠沒有達到完美,比如:安裝 Win10 時對異常情況的提示和處理還很不完善,存在很多個例情況不能自動處理,初次使用者容易感到困惑,等等。限於精力,只能以後有時間再慢慢完善了。有願意進一步了解的朋友歡迎加我微信探討。
B. 平板怎麼切換安卓系統
問題一:平板電腦怎麼切換安卓系統? 一般雙系統平板 在關機狀態下點開電源鍵就有界面選擇系統了
問題二:平板電腦windows系統怎麼切換到安卓系統 在關機狀態下,可以按住電源鍵和音量加鍵,就可以進入系統選擇界面,快速進入Windows系統。
問題三:平板電腦的電腦系統如合切換到安卓系統 關機狀態下,按住音量減鍵不鬆手再按開關機鍵可以進入到系統選擇界面.或者請您嘗試恢復win8系統,先插上充電器,屏幕右邊邊緣劃出電腦設置-----更改電腦設置---更新和恢復-----恢復---- 刪除所有內容並重新安裝-----(可選擇恢復電腦而不影響您的文件)或僅刪除飢梁我的文件.將WIN8恢復至出廠狀態.英特爾最新推出了第六代酷睿產品,採用全新一代的架構,性能提示、功能降低、續航更加長久、無論辦公學習、暢玩游戲或者觀看超高清音箱播放,均得心應手,您也可以試試。
問題四:昂達平板電腦雙系統在windows中切換到安卓系統怎麼切換 在關機狀態下,可以按住電源鍵和音量加鍵,就可以進入系統選擇界面,快速進入Android系統或Windows系統。
問題五:蘋果平板電腦怎麼換安卓的系統 別嘗試了,是下載不了的。
問題六:win8和Android雙系統平板怎麼切換系統 1、如果希望開機選擇系統
長按電源鍵和音量加鍵,出現系統選擇項,在這里可以進行安卓、Win8的選擇,倒計時為10秒,隨便在屏幕上點一下,可以停止10秒倒計時。如果希望每次開機都選擇系統,那麼,在系統啟動界面的左上角,雙系統啟動按鈕不打上勾。這樣,每次開機時,都會出現系統選擇的界面。
2、如果不希望開機選擇系統
當然,也有不希望開機選擇系統的玩家,那麼,在雙系統啟動按鈕上,打上勾,那麼每次啟動,系統自動進入前一次關機時的系統。這樣可以節省很多開機時間。
3、從安卓系統切換到Win8系統
從安卓系統切換到Win8系統非常方便,長按電源鍵,調出系統切換菜單,點胡肢如擊切換到win8系統,無需開關機,系統自動切換。
4、從Win8系統切換到安卓系統
在桌面上,找到系統切換程序,打開之後點擊數次「確認」,系統會自動切換到安卓系統,無需開關機,一鍵熱切換。
問題七:雙褲啟系統平板怎麼切換安卓系統? 50分 像sf-yw10,sf-yw81以及RYW11,都是 在關機狀態下,可以按住電源鍵和音量加鍵,就可以進入系統選擇界面,快速進入Android系統或Windows系統。
問題八:平板電腦上的安卓系統怎樣切換輸入法? 安卓系統不支持輸入法的實時切換,但可以通過更改默認輸入法的方式實現。如圖所示,在設置界面中打開【語言和輸入法】一項(不同型號的手機設置界面可能有所不同),然後在默認輸入法中,選擇自己想要用到的輸入法即可。
問題九:有沒有人告訴我台電平板電腦x16hd系統怎麼切換從電腦系統切換到安卓系統,我找不到在哪切換 尊敬的台電用戶,您好:
請在平板電腦關閉以後先長按音量「+」鍵,然後在按電源開關鍵進行開機進入系統選擇界面。詳情可通過論壇進行查看:bbs.teclast/thread-261926-1-1。
感謝您對台電的支持!
問題十:昂達平板電腦從安卓系統切換到windows10 在關機狀態下,可以按住電源鍵和音量加鍵,就可以進入系統選擇界面,快速進入Android系統或Windows系統。