編碼的世界 / 優質文選 / 女人

Win10+Ubuntu16.04雙系統重裝win10後ubuntu引導失敗UEFI啟動方式下GRUB消失


2021年10月23日
-   

參考博客:http://blog.csdn.net/zrf2112/article/details/71042782
參考文章:https://wiki.deepin.org/index.php?title=%E4%BF%AE%E5%A4%8D%E5%90%AF%E5%8A%A8
問題闡述:本人機型是Dell遊匣15-7567筆記本,128gSSD+1T機械,裝了win10+ubuntu16.04雙系統,win的引導放到了SSD中,ubuntu的引導放到了機械硬盤中。由於win10系統出現cpu占用率一直處於100%的情況,找了客服檢測半天也沒查出什麼問題後,我立馬重裝個了個win10系統,但重裝後ubuntu引導失敗,進入 bios發現ubuntu的efi啟動文件丟失。
試了很多方法一直失敗,搞了一整天最後打算重裝ubuntu的時候發現了一個論壇,按照裏面的方法試了下結果成功了,下面寫寫總結 。
首先確定兩點:
1、電腦使用的是UEFI啟動。
2、bios中Secure Boot處於關閉狀態,並關閉了快速啟動功能。
原因分析:
  UEFI啟動時需要有一個ESP分區(EFI 系統分區),這個分區的EFI目錄下有三個目錄(安裝Ubuntu後),一個是BOOT目錄,一個是Microsoft目錄還有一個是Ubuntu目錄,我是將系統啟動項分別放到了兩個硬盤中分別是sda(SSD)與sdb(機械硬盤)。UEFI方式時會找到BOOT目錄下的bootx64.efi啟動文件並運行,及默認啟動文件。而Microsoft目錄下有一個bootmgfw.efi,對比發現這兩文件一樣的,也就是說UEFI找到的bootx64.efi就是Microsoft下的efi文件,因此系統默認啟動的就是windows系統,而在ubuntu啟動界面中我們可以選擇進入ubuntu和windows系統,因此我們可以,將ubuntu文件夾中的grubx64.efi文件替換掉bootx64.efi,並重命名為bootx64.efi即可讓系統默認啟動ubuntu系統,或者我們可以在BIOS中新建一個ubuntu16.04的啟動項,將其鏈接到grubx64.efi的啟動文件上,但由於重裝win10並更新了bios後ubuntu啟動文件丟失因為我們需要重新生成啟動文件。
解決方法:
主要思路
     找到grub啟動程序,grubx64.efi,放到ESP分區的ubuntu目錄下即可。
     進入ubuntu的live模式:
sudo -i (取得root特權) fdisk -l (找到你ubuntu“/”和“/boot”所在的磁盤區號,如我的是在sdb8和sdb9中)
解決過程:
  
EFI+GPT模式下修複GRUB2雙系統引導:
對於雙系統用戶,一般而言,推薦先安裝 Windows 8/10,再安裝 Linux,並使用 Linux 的 GRUB2 作為雙系統引導管理器。那麼,重裝 Windows 後,GRUB2 會被破壞,只能進入 Windows。如何再次找回 GRUB2 雙系統引導,就是本文的主題。
用 Linux 啟動盤進入 Live 系統環境,在 Live 的終端裏,創建修複 GRUB2 所需的文件夾:
$ sudo mkdir -p /mnt/system
把 Linux 的 / 分區掛載到創建的文件夾:(注意:站長的是 sdb4,請確認自己的 / 分區所在,不可照搬)
$ sudo mount /dev/sdb9 /mnt/system
把 EFI 分區(即 ESP 分區)也掛載:
$ sudo mount /dev/sdb8 /mnt/system/boot/efi
用 efibootmgr 創建 ubuntu 的啟動項:(注意:站長的主硬盤是 sdb,請確認自己的主硬盤,不可照搬)
$ sudo efibootmgr -c -d /dev/sdb -p 2 -w -L ubuntu
重啟,並在 BIOS 中選擇剛才創建的 ubuntu 啟動項,進入 Ubuntu。
OK,已經進入本機硬盤上的 Ubuntu 系統了,但 GRUB2 修複並未完畢。打開終端,重新安裝 GRUB2 到 EFI 分區:
$ sudo grub-install /dev/sda1
刷新一下 GRUB2 配置:
$ sudo update-grub2
現在重啟,即可看到親切的 GRUB2 終於“奪回”雙系統引導權了!
修訂: 站長另外介紹一種更簡便的方法。用 Linux 啟動盤進入 Live 系統環境,在終端中依次執行如下命令:
$ sudo su
# mount /dev/sdb9 /mnt(注意先確認自己的 / 分區是 sdaX)
# mount /dev/sdb8 /mnt/boot/efi
# mount -t proc proc /mnt/proc
# mount -t sysfs sys /mnt/sys
# mount -o bind /dev /mnt/dev
# mount -t devpts pts /mnt/dev/pts/
# chroot /mnt
# grub-install /dev/sdb8
# update-grub2

重啟:sudo reboot
按F2進入bios界面
添加在uefi處添加ubuntu16.04的啟動選項,並將啟動文件連接到efi/ubuntu/grubx64.efi上,可參考我前面的博客。
小結:EFI 引導 + GPT 分區模式下的雙系統問題稍微複雜一點,需要朋友們多實操、多領會,關鍵是搞清楚自己的硬盤分區(EFI 分區和 / 分區)的作用、在不同系統環境下的名稱,切記切記!

熱門文章