雙系統引導修復 系統更新後的問題

昨天因爲一次系統更新,我的雙系統掛掉了。

更新之前系統情況:

  1. UEFI引導模式
  2. ubuntu windows雙系統
  3. UEFI先啓動ubuntu,ubuntu的啓動菜單中有windows的啓動項。但是windows的BCD配置文件中沒有設置ubuntu。
  4. 之前UEFI的啓動項中有沒有設置windows的啓動項不清楚
    (因爲一直正常沒有手動啓動過)。不過固態硬盤的ESP分區中的/EFI/Boot/bootx64.efi是windows的啓動管理器(如果選擇(默認或者手動)從該硬盤啓動,UEFI引導會在該硬盤中搜索第一塊格式爲FAT/FAT32的分區,即ESP分區),UEFI會默認加載該啓動管理器,即如果選擇手動從固態硬盤啓動,會打開windows。

更新
這是這次導致引導出現問題的更新,更新之後的系統狀況是

  1. windows ubuntu雙系統
  2. UEFI中ubuntu的引導不見了,windows的更新添加了一個UEFI啓動項 而且由於windows不能檢測到其他的系統,導致ubuntu的引導丟失

最終的解決辦法:

添加啓動項

默認是UEFI引導,該方法是linux系統的啓動菜單中有windows的方法。

既然UEFI的中的系統啓動項不見了,可以使用EasyUEFI添加一個UEFI啓動項,可以在下面的鏈接中下載EasyUEFI
打開EasyUEFI,選擇管理EFI啓動項,創建新項,填寫類型和描述,類型選擇啓動項對應的系統類型,描述隨便,剩下的就是選擇目標分區和文件路徑。

UEFI方式會將引導項存儲在一個FAT格式的磁盤分區中,磁盤分區不大,我的有260M,系統在建立引導時可能將磁盤命名爲ESP或者EFI,這些用DiskGenius可以很方便的看到,除了查看分區,後面也可以用DG更改ESP分區來修復引導。
![在這裏插入圖片描述](https://img-blog.csdnimg.cn/20200311182444488.png
在這裏插入圖片描述
這是我電腦的FAT格式分區,名字叫SYSTEM_DRV,看文件夾就可以看出來。

開機後摁f12後進入UEFI啓動項的選擇界面。UEFI分爲從磁盤啓動還是從已創建的啓動項啓動。這裏從https://www.jianshu.com/p/9166e8c00ca2參考一張圖片(因爲懶得重啓了)
在這裏插入圖片描述
選擇從磁盤啓動後,UEFI會選擇從磁盤中搜索EFI分區,用這個分區下的/EFI/Boot/bootx64.efi作爲默認引導管理器,如上圖的後兩個啓動項。
選擇從已創建的啓動項啓動後,UEFI會從啓動項記錄的引導文件即目標系統的啓動管理器開始下一步操作。

知道這一步就好搞了:1.找到ubuntu系統在EFI分區的啓動管理器 2.用EasyUEFI添加啓動項。 因爲ubuntu的grub啓動中包含windows的啓動信息,所以windows也可以啓動。
在這裏插入圖片描述
ubuntu採用同grub2啓動,在/EFI/ubuntu下的grubx64.efi文件是ubuntu的啓動管理器,EasyUEFI選擇這個文件路徑即可。
添加啓動項後將啓動項置頂,就可以正常登錄ubuntu和windows了。

修改windows的BCD配置文件

使用啓動項啓動windows的啓動過程如下:
UEFI----->EFI分區(FAT格式)----->\EFI\Microsoft\Boot\bootmgfw.efi(windows的啓動管理器)----->讀取BCD配置文件--------->根據BCD配置選擇內核加載文件\Windows\system32\winload.exe。
在Legacy+MBR的引導方式下,EasyBCD也是通過更改BCD文件的內容,選擇相應的啓動項,但是在UEFI引導下,EasyBCD禁止添加linux引導。所以可以用DG將Microsoft文件夾下的BCD文件copy出來,再用BOOTICE更改BCD文件的內容。

參考下面鏈接可以更改Windows的BCD配置文件
http://www.upantool.com/jiaocheng/boot/9403.html

我覺得用智能編輯模式更好點,啓動文件選擇目標系統的啓動管理器,和第一種方法的文件路徑相同,將BCD文件修改後重啓就可以在開機時看到windows的選擇菜單了。
在這裏插入圖片描述

總結:

造成問題的原因是系統更新的時候windows改掉了UEFI的引導,但是又不像linux的grub2啓動一樣可以探測磁盤中的文件系統並添加到啓動菜單中,才導致了ubuntu的UEFI啓動丟失。

本來如果是legacy+mbr引導,使用easyBCD能很方便的在windows的BCD文件中添加ubuntu的引導。但是現在用的電腦使用的是UEFI+gpt的引導,easyBCD不支持,所以搞起來費了點時間。順便整理一下資料,分享的同時以備以後查閱。

windows引導方式

現在windows的主要引導方式主要有兩種:legacy BIOS和UEFI BIOS,還有兩種磁盤分區表格式:MBR和GPT

MBR

windows的操作系統的MBR分區格式最多支持四個主分區或者三個主分區 一個擴展分區,擴展分區還可以分爲多個邏輯分區。MBR分區表不支持大於2.2TB的分區,或者一些硬盤製造商將扇區升級到4KB,使MBR的有效容量上限上升到了16TB

GPT

GPT分區格式可以最多支持128個主分區,最大容量可以達到18EB

一般來說引導方式和磁盤分區表的組合有兩種,即Legacy+MBR UEFI+GPT。因爲,Legacy可以識別MBR分區格式,不能識別GPT分區格式。UEFI兩種分區格式都可以識別,但是微軟限制UEFI啓動方式下只能將windows安裝到GPT磁盤。

引導原理

bootloader:
廣義上來說等於 BIOS+啓動管理器+啓動文件+載入程序
BIOS有 Legacy UEFI
啓動管理器如 windows的bootmgfw.efi grub啓動的grubx64.efi
啓動文件如 windows的 winload.exe

狹義上來說bootloader指啓動管理器和啓動配置文件。

Legacy + MBR引導原理
引導過程:上電–>Legacy BIOS–>MBR–>DPT–>PBR–> Bootmgr(vista開始)/NTLDR–>BCD(vista開始)/boot.ini–>Winload.exe–>內核加載 –>windows vista/windows xp

UEFI+GPT引導原理
引導過程:上電–>UEFI–>GPT分區表–>EFI分區–>\efi\Microsoft\boot\bootmgfw.efi–>efi\Microsoft\BCD→\Windows\system32\winload.efi。

參考文檔:

  1. https://blog.csdn.net/liao20081228/article/details/82591728
  2. https://blog.csdn.net/li_qing_xue/article/details/79228867
  3. https://www.jianshu.com/p/9166e8c00ca2
  4. https://www.cnblogs.com/sddai/p/6354289.html
  5. https://blog.csdn.net/donglany/article/details/79961938
  6. https://bbs.deepin.org/forum.php?mod=viewthread&tid=147753&extra=
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章