Linux GPT UEFI 引导项丢失修复

在 CMOS 掉电、过载保护、超频失败,可能导致 CMOS 设置被还原或者清空。

UEFI 引导可能丢失。(请忽略那个之前残留的 UEFI OS 无效引导项)

BIOS 会寻找 “回退路径 UEFI 原生启动项”,移动媒体使用这种方式。

但是丢失的应该是 “完全原生 UEFI 启动项”。

参考 http://www.tuicool.com/articles/NNf26jB

 

修复步骤

想办法引导一个系统先。这里用 Debian 举栗子。Advanced options

Rescue mode,进入救援模式。

语言地区键盘一路回车,经过加载各种程序包之后到检测网络的时候按 ESC 退出向导。

进入救援模式

选择 root 分区,当然你可以不挂载 root 。如果你有办法在下面的步骤中挂载 EFI 分区并运行 efiboomgr  程序。

然后进入 Shell

检查硬盘分区 找到 EFI 分区

fdisk -l /dev/sda

 

挂载 EFI 分区至任意目录 这里是这样的

mount /dev/sda1 /boot/efi/

 

检查 .efi 文件路径  “EFI 分区挂载路径/EFI/debian/grubx64.efi”

如果文件路径类似  “EFI 分区挂载路径/EFI/boot/bootx64.efi”, 那么有可能是“回退路径 UEFI 原生启动项”。

检查 UEFI 引导项

efibootmgr

 

然后我们来添加一个引导项

efibootmgr -c --disk /dev/sda --part 1 -l \\EFI\\debian\\grubx64.efi -L "debian"

-c 创建引导项

–disk 选择硬盘

–part 选择分区

-l efi 文件路径(相对与 EFI 分区的根,而不是当前文件系统的路径)

-L 引导项标签(名称)

 

然后 exit 退出 Shell,退出救援模式重启。

成功引导

删除无用记录

 

Ref:

UEFI 启动:实际工作原理: http://www.tuicool.com/articles/NNf26jB

efibootmgr Manual: https://linux.die.net/man/8/efibootmgr

gentoo wiki: https://wiki.gentoo.org/wiki/Efibootmgr

github: https://github.com/rhinstaller/efibootmgr

 

1 条评论
发表一条评论