![efibootmgr:无法删除变量:系统调用中断---我的固件变砖了吗?](https://linux22.com/image/113897/efibootmgr%EF%BC%9A%E6%97%A0%E6%B3%95%E5%88%A0%E9%99%A4%E5%8F%98%E9%87%8F%EF%BC%9A%E7%B3%BB%E7%BB%9F%E8%B0%83%E7%94%A8%E4%B8%AD%E6%96%AD---%E6%88%91%E7%9A%84%E5%9B%BA%E4%BB%B6%E5%8F%98%E7%A0%96%E4%BA%86%E5%90%97%EF%BC%9F.png)
我正在处理一些奇怪的 UEFI 问题,现在我似乎唯一能够启动的是实时 USB 记忆棒上的 openSUSE Tumbleweed(KDE 版本,快照 20170608 x64)。
背景:我正在使用东芝 Satellite S55t-B5233 笔记本电脑。我想重新安装 Windows 10,但是当我安装它时,它没有正确擦除分区,最终我在启动时选择启动“Windows 10”或“Windows 10”。我启动了一个 openSUSE Live 镜像,删除了驱动器上的每个分区,使用 FAT 文件系统创建了一个新的空白 EFI 系统分区,然后我的麻烦就开始了。我无法从任何东西启动,包括之前工作不到一个小时左右的 U 盘。最后,按住“U”键后,我能够从 openSUSE live USB 启动。我尝试将 openSUSE 安装到磁盘,但没有成功。我尝试过 USB 驱动器上的真正 openSUSE 安装映像(不是实时映像)、USB 驱动器上的 Archiso、rEFInd 实时 USB 映像以及使用 Rufus 制作的 Windows 10 安装程序。它们都不起作用 - 我得到的只是“无法启动设备 - 请重新启动系统”。 (我什至尝试更改 Arch 驱动器的 MBR 磁盘标识符以匹配 openSUSE 驱动器。但这也不起作用。)无论如何,回到我真正的问题。 (以openSUSE现场环境为例)
efibootmgr --verbose
将“Windows Boot Manager”列为 UEFI 引导选项中的条目。它还指定了 bootmgfw.efi 的文件路径,该文件不再存在于驱动器上。当我使用时efibootmgr -b 3 -B
我得到了Could not delete variable: Interrupted system call
。 Boot0003 的文件从 /sys/firmware/efi/efivars 中消失,并且 efibootmgr 表示未设置 BootOrder,但重新启动后两个变量都会返回到之前的状态。我认为对 efivars 文件系统的更改实际上并未写入固件,那么这是否表明 openSUSE 存在错误,或者是否意味着固件有问题?
编辑:使用 GRUB 命令行,我启动到 Arch Linux。同样的问题仍然存在。
答案1
编辑:这是一个案例intel_spi_platform 驱动程序错误最近 Ubuntu 的这个问题广为人知,尽管在本例中它是由 openSUSE 引起的。通过 UKUU(Ubuntu 内核升级实用程序)安装 Linux 内核 4.14.10 后,损坏是可逆的。我想上面链接的错误报告推荐的 Linux 4.15.x 补丁版本也可以工作。
我已经做了我能做的一切,而且我的研究表明 NVRAM 几乎已经完蛋了。我修改了 openSUSE live USB,让我可以从 Archiso 运行 EFI Shell,即使在 EFI shell v1 和 v2 中尝试了bcfg
和dmpstore
命令之后,我也无法删除该启动项。我可能会尝试安装 Windows 以匹配现有条目,因为我可以从 EFI shell 进行链式加载。或许。
答案2
我在安装 arch linux 时遇到了同样的错误。也就是说,由于错误“系统调用中断”,我无法在 uefi 模式下安装 grub。 efibootmgr 也产生了同样的错误。它在我的笔记本电脑 Lenovo Ideapad 上。
以下解决方法有效:在BIOS模式下安装grub(--target = i386-pc)>在笔记本电脑的BIOS中选择“传统模式”>重新启动>在启动过程中选择了正确的启动项
效果很好!