您尚未登录。

#1 2023-03-22 22:35:32

noikh
会员
注册时间: 2023-03-22
帖子: 8

[已解决] .efi程序未正确运行问题

前情:
        在朋友的推(撺)荐(掇)下,鄙人根据wiki以及archlinux简明指南中的教程,通过Ventoy启动U盘在闲置移动硬盘中安装了Archlinux和Grub引导程序。然而今天再次将硬盘插入电脑usb口后,发现不能够正常进入到Grub的选择系统的界面。

具体情况如下:
        (已关闭Sercure Boot)按电源键启动后,通过f12设置启动顺序,选择Arch和.edi引导程序所在的硬盘并回车,会正常直接启动到Windows11。
        但是如果提前插上Ventoy启动盘后,可以通过f12选择Ventoy所在U盘能够成功进入Ventoy,并且能够通过Ventoy访问到Arch所在硬盘的EFI分区下的.efi文件,通过直接运行该.efi文件可以进入Grub,但是会报“error: no such partition”错误并且进入到Grub Security。通过set root 和set prefix进入normal模式后可以顺利启动Arch。
        目前尝试按照原教程重新安装grub并生成config文件,但是没有解决这个问题。

        我(和朋友)无法准确定位问题和修复方法,还希望各位大佬不吝赐教,感谢!QAQ

最近编辑记录 noikh (2023-03-24 01:40:09)

离线

#2 2023-03-23 10:38:06

Watermelon.Rei
会员
注册时间: 2021-12-29
帖子: 114

Re: [已解决] .efi程序未正确运行问题

你的描述判断有两个问题,请描述EFI分区的情况以及config文件内容


(已关闭Sercure Boot)按电源键启动后,通过f12设置启动顺序,选择Arch和.edi引导程序所在的硬盘并回车,会正常直接启动到Windows11。

如果使用grub-install&efibootmgr安装,GRUB的EFI文件安装在ESP/EFI/GRUB/ 中,并通过efibootmgr写入NVRAM引导条目内。UEFI启动会按照记录启动ESP/EFI/GRUB/grubx64.efi,拔出移动硬盘后主板UEFI检测不到条目位置可能会清除该NVRAM条目。再次插入移动硬盘后,设置启动顺序选择移动硬盘,UEFI只会引导该硬盘ESP中的EFI/BOOT/bootx64.efi文件,没有找到就会跳过进入下个引导项,启动windows


但是如果提前插上Ventoy启动盘后,可以通过f12选择Ventoy所在U盘能够成功进入Ventoy,并且能够通过Ventoy访问到Arch所在硬盘的EFI分区下的.efi文件,通过直接运行该.efi文件可以进入Grub,但是会报“error: no such partition”错误并且进入到Grub Security。通过set root 和set prefix进入normal模式后可以顺利启动Arch。

通过Ventoy引导grub后,grub读取grub.cfg文件,按照config中的记录寻找内核文件,找不到分区的原因需要先检查grub.cfg

最近编辑记录 Watermelon.Rei (2023-03-23 10:39:07)

离线

#3 2023-03-23 10:39:56

依云
会员
所在地: a.k.a. 百合仙子
注册时间: 2011-08-21
帖子: 8,475
个人网站

Re: [已解决] .efi程序未正确运行问题

所以你的 grub 是怎么安装的?

离线

#4 2023-03-23 12:58:38

noikh
会员
注册时间: 2023-03-22
帖子: 8

Re: [已解决] .efi程序未正确运行问题

Watermelon.Rei 说:

你的描述判断有两个问题,请描述EFI分区的情况以及config文件内容


(已关闭Sercure Boot)按电源键启动后,通过f12设置启动顺序,选择Arch和.edi引导程序所在的硬盘并回车,会正常直接启动到Windows11。

如果使用grub-install&efibootmgr安装,GRUB的EFI文件安装在ESP/EFI/GRUB/ 中,并通过efibootmgr写入NVRAM引导条目内。UEFI启动会按照记录启动ESP/EFI/GRUB/grubx64.efi,拔出移动硬盘后主板UEFI检测不到条目位置可能会清除该NVRAM条目。再次插入移动硬盘后,设置启动顺序选择移动硬盘,UEFI只会引导该硬盘ESP中的EFI/BOOT/bootx64.efi文件,没有找到就会跳过进入下个引导项,启动windows


但是如果提前插上Ventoy启动盘后,可以通过f12选择Ventoy所在U盘能够成功进入Ventoy,并且能够通过Ventoy访问到Arch所在硬盘的EFI分区下的.efi文件,通过直接运行该.efi文件可以进入Grub,但是会报“error: no such partition”错误并且进入到Grub Security。通过set root 和set prefix进入normal模式后可以顺利启动Arch。

通过Ventoy引导grub后,grub读取grub.cfg文件,按照config中的记录寻找内核文件,找不到分区的原因需要先检查grub.cfg

非常详细的解释,十分感谢!我晚上回寝室后再详细排查一番

离线

#5 2023-03-23 13:03:18

noikh
会员
注册时间: 2023-03-22
帖子: 8

Re: [已解决] .efi程序未正确运行问题

依云 说:

所以你的 grub 是怎么安装的?

抱歉未在一楼说清,安装过程如下:
grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=ARCH
vim /etc/default/grub //修改了 GRUB_CMDLINE_LINUX_DEFAULT, loglevel, nowatchdog 参数
grub-mkconfig -o /boot/grub/grub.cfg

是完全按照教程中的命令进行操作的,感觉教程中的命令参数再我电脑上也适用就没有进行其他修改。

离线

#6 2023-03-23 13:07:06

依云
会员
所在地: a.k.a. 百合仙子
注册时间: 2011-08-21
帖子: 8,475
个人网站

Re: [已解决] .efi程序未正确运行问题

--efi-directory=/boot?你的 /boot 是直接挂载的 EFI 分区?

离线

#7 2023-03-24 01:38:58

noikh
会员
注册时间: 2023-03-22
帖子: 8

Re: [已解决] .efi程序未正确运行问题

Watermelon.Rei 说:

你的描述判断有两个问题,请描述EFI分区的情况以及config文件内容


(已关闭Sercure Boot)按电源键启动后,通过f12设置启动顺序,选择Arch和.edi引导程序所在的硬盘并回车,会正常直接启动到Windows11。

如果使用grub-install&efibootmgr安装,GRUB的EFI文件安装在ESP/EFI/GRUB/ 中,并通过efibootmgr写入NVRAM引导条目内。UEFI启动会按照记录启动ESP/EFI/GRUB/grubx64.efi,拔出移动硬盘后主板UEFI检测不到条目位置可能会清除该NVRAM条目。再次插入移动硬盘后,设置启动顺序选择移动硬盘,UEFI只会引导该硬盘ESP中的EFI/BOOT/bootx64.efi文件,没有找到就会跳过进入下个引导项,启动windows


但是如果提前插上Ventoy启动盘后,可以通过f12选择Ventoy所在U盘能够成功进入Ventoy,并且能够通过Ventoy访问到Arch所在硬盘的EFI分区下的.efi文件,通过直接运行该.efi文件可以进入Grub,但是会报“error: no such partition”错误并且进入到Grub Security。通过set root 和set prefix进入normal模式后可以顺利启动Arch。

通过Ventoy引导grub后,grub读取grub.cfg文件,按照config中的记录寻找内核文件,找不到分区的原因需要先检查grub.cfg

解决了,通过efibootmgr新添加了一个启动项即可
非常感谢!

离线

页脚