我有一个EFI分区/ dev / sda1,我曾经能够将GRUB安装到该分区并使用efibootmgr更改启动顺序而没有问题,但是不幸的是,现在,我无法从grub收到“只读文件系统”错误安装(特别是在安装到/ boot / efigrub-install --target=x86_64-efi --efi-directory=/boot/efi /dev/sda
和efibootmgr时。我尝试用以下方法擦除它:
sudo mkfs.vfat /dev/sda1
但我仍然收到此错误。具体grub-install --target=x86_64-efi --efi-directory=/boot/efi /dev/sda
给出:
Installing for x86_64-efi platform.
Could not delete variable: Read-only file system
efibootmgr: ** Warning ** : Boot0002 has same label gentoo
Could not prepare Boot variable: Read-only file system
Installation finished. No error reported.
我看到了Fix只读文件系统usb,但是wipefs
安装并安装了多个发行版后,我无法擦除此磁盘,并且需要一段时间才能从这种擦除中恢复。奇怪的是,grub-install仍会向/ dev / sda1添加文件,只是引导顺序似乎无法更改。
请注意错误消息是“无法删除变量:只读文件系统”。实际上,它正在尝试操纵UEFI引导变量,并在那里失败。
错误实际上是指efivarfs
用于访问UEFI引导变量的文件系统,该文件系统通常应安装在/sys/firmware/efi/efivars
。可能还有旧版本的UEFI变量访问机制,位于/sys/firmware/efi/vars
。
如果您错过了CONFIG_EFIVAR_FS内核配置选项,则该虚拟文件系统的驱动程序可能在您的内核中不存在(如果编译为模块,则名为efivarfs
)。如果驱动程序可用,请确保在以下文件中列出了该文件系统/etc/fstab
:如果系统的启动脚本未对其进行特殊处理,则/ etc / fstab文件中可能需要以下行:
efivarfs /sys/firmware/efi/efivars efivarfs defaults 0 0
更新:很明显,efivarfs
如果有人运行,的最初实现可能会导致某些计算机变砖rm -rf /sys/firmware/efi/efivarfs
。
通过在默认情况下将所有已知安全变量项设置efivarfs
为不可变(类似于chattr +i
),并efibootmgr
在修改之前使用合法的UEFI变量操作工具(如更改文件属性)来防止新内核中的攻击。
在滚动发布系统中,可能有内核更新,使efivarfs
更改在用户空间之类的工具grub-install
收到必要的修改后才能在您的系统上生效。在这种情况下可能会发生这种情况。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句