一次修復linux的efi引導的集中方法總結記錄


本文通過MetaWeblog自動發布,原文及更新鏈接:https://extendswind.top/posts/technical/grub_uefi_repair

起因:EFI分區被刪除導致引導問題。

症狀:

  1. 通過安裝其它系統的方式。正好想試試其它的linux發行版,就在另一個分區裝了deepin,完成后硬盤沒有發現UEFI引導;然后又嘗試裝了openSUSE,仍沒在硬盤發現UEFI引導。(失敗)

  2. 通過live cd重新在efi分區安裝grub。(wiki推薦的一般方式,仍失敗)

  3. 通過live cd安裝refind。(仍不行)

  4. 安裝的系統可以通過manjaro live cd直接boot。

  5. 安裝win10可以發現UEFI的引導方式(只啟動win10,安裝grub也只啟動win10)

引導的問題網上的解決方案很多,對於一些新的電腦UEFI的方式應該很好修復,但一些比較老的電腦可能出現各種坑問題,用legacy的引導還是穩定一點。

UEFI的引導通過grub的各種安裝嘗試都無法被主板識別,一直檢測不到硬盤UEFI的啟動項。懷疑主板並不支持linux grub2寫入的UEFI引導信息,只支持windows的。最后通過安裝win10,用refind覆蓋win10的efi啟動條目解決問題。

最常規的修復方式 通過live cd

將系統燒入U盤,啟動U盤進入系統后修復。涉及兩種方式:

  1. 通過boot-repair
  2. grub-install 命令安裝

還有通過grub命令行的方式,不常用沒折騰。

建議燒入的系統為ubuntu和manjaro。deepin的live cd在我的電腦上有顯示的bug,而且添加ppa有一點坑。openSUSE上的grub命令和debian系arch系不怎么一樣。ubuntu的主要優點在於可以通過安裝boot-repair進行一鍵修復,manjaro和arch的live cd提供了直接的manjaro-chroot以及arch-chroot,進入后直接安裝grub就行,而且manjaro的live cd支持直接引導啟動efi分區中的系統。

在下面的兩種操作之前,最好通過gparted等軟件新建一個efi分區(fat32,一般幾十兆,openSUSE建議不小於500M,帶efi標簽)。

基於ubuntu的boot-repair

網上的資料多操作也不復雜,主要注意U盤從UEFI模式啟動。

sudo add-apt-repository ppa:yannubuntu/boot-repair -y
sudo apt-get update
sudo apt-get install boot-repair -y
sudo boot-repair

grub-install 命令安裝

使用manjaro live cd,其它的系統可能需要安裝grub2、efibootmgr、grub-efi-amd64、os-prober等包。

以下需要root權限,sudo -i或命令前加sudo

1、 查看要引導系統的分區和efi分區的編號(fdisk -l) 2、 掛載引導系統的分區(一般 mount /dev/sda4 /mnt) 3、 掛載efi分區到系統分區的/boot/efi目錄(`mount /dev/sda2 /mnt/boot/efi) 4、 chroot到硬盤系統分區

對於ubuntu

mount --bind /dev/ /mnt/dev
mount --bind /proc /mnt/proc
mount --bind /sys /mnt/sys
chroot /mnt

對於manjaro直接

manjaro-chroot /mnt

5、 安裝grub

grub-install --target=x86_64-efi /dev/sda2  # target默認是x86_64-efi
grub-grub-mkconfig -o /boot/grub/grub.cfg
update-grub

各種操作和問題

上面的操作在一般較新的電腦上就能啟動了。

refind 引導程序

可以在啟動時動態檢查和引導所有硬盤里efi分區里的配置,還可以設置各種主題。grub每次只能識別efi分區EFI目錄下的某一個寫好的配置。

安裝后直接運行refind-install腳本即可,也可以指定efi分區。

安裝完仍默認啟動win10

UEFI支持一種安全模式,win10會獨占UEFI,雙系統時需要在win10中關閉安全啟動。(沒碰到,具體資料可搜)。

其次,修改efi的引導順序,進入win10后,使用bcdedit命令

bcdedit /enum  # 查看引導
bcdedit /default {12277df3-07da-11e8-a54c-9f200771404e}  # 設置默認項

# 如果上面的設置默認沒有用,可以暴力修改windows的引導文件到其它的引導文件
# refind可以改為其它的系統
bcdedit /set {bootmgr} path \EFI\refind\refind_x64.efi   

win10啟動幾次就讓grub引導消失的問題

win10會默認修改UEFI的引導順序。

好像是win10 系統配置->常規 里的最后一個勾,用了上面的方式后,沒怎么遇到這個問題。

啟動時仍沒有UEFI引導選項的問題

一般上面的操作能解決絕大多數電腦的,我的2代i3電腦開機f12的啟動菜單中,怎么安裝linux都出現不了UEFI菜單,但安裝windows能,於是一般先裝windows再改默認引導…

一次windows的UEFI在裝完系統第一次啟動后也不顯示無法選擇,在BIOS里設置只允許UEFI啟動,竟然啟動了….

更坑爹的是,雙硬盤時啟動不了,通過換sata線的接口就啟動了…


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM