更新后 Grub2 无法识别 USB 记忆棒?

更新后 Grub2 无法识别 USB 记忆棒?

我在 VirtualBox 中有一个非常基本的 ArchLinux 设置,我经常将其复制到 USB 上以便在真机上启动。过去几个月它运行良好,但在上次更新(2018 年 10 月 8 日)后,从 USB 启动时,GRUB2 不再识别我的 LUKS 加密系统分区,并将我带入紧急 shell。blkid在该 shell 中运行发现,GRUB2 甚至无法识别加载它的 USB 盘。

这里对可以工作和不工作的情况做了一些总结,表明问题既不是我的电脑,也不是我的 USB 驱动器,而是我的 Arch 系统:

                          |                      ArchLinux                      |  Fresh install of
                          |  before update  |  after update  | fresh reinstall  |   Ubuntu 18.04.1
--------------------------+-----------------+----------------+------------------+--------------------
Booting from virtual hard |     worked      |     works      |      works       |       works*
disk in VirtualBox        |                 |                |                  |
--------------------------+-----------------+----------------+------------------+--------------------
Booting from USB          |     worked      |  NOT WORKING   |   NOT WORKING    |       works*
in VirtualBox             |                 |                |                  |
--------------------------+-----------------+----------------+------------------+--------------------
Booting from USB          |     worked      |  NOT WORKING   |   NOT WORKING    |       works*
on a computer             |                 |                |                  |

* with and without full disk encryption (LVM on LUKS)

当然,我尝试通过启动 Arch-iso、安装所有分区(USB 棒)、arch-chroot进入系统、检查/etc/mkinitcpio.conf以及/etc/default/grub运行来mkinitcpio -p linux修复此问题grub-mkconfig -o /boot/grub/grub.cfg。仍然无法启动... 我还尝试使用虚拟硬盘中更新的且仍在运行的系统覆盖 USB 棒,但同样没有成功。

有谁知道可能导致这种行为的原因是什么,或者有什么提示我需要在哪里寻找问题?这不可能是磁盘加密,因为虚拟硬盘上的系统在更新后仍然有效(遗憾的是我没有更新前的备份)。


更新:在所有情况下(vbox、vbox 中的 usb、机器上的 usb),使用 fallback initramfs 启动都可以正常工作。mkinitcpio.conf 中可能缺少一些钩子。


以下是关于我的 Arch 系统的一些细节:它是一个 EFI 系统,带有一个 GPT 格式的磁盘,其中只包含两个分区,一个 200 MiB 的 FAT32 分区,上面有 GRUB2,还有一个 15.8 GiB 的 LUKS 容器,里面装有 ext4 系统分区,不涉及 LVM。以下是配置文件的摘要。如果您需要更多信息,请告诉我。

# /etc/mkinitcpio.conf
[...]
HOOKS=(base udev autodetect keyboard keymap modconf block encrypt filesystems fsck)
[...]

# /etc/default/grub
[...]
GRUB_CMDLINE_LINUX_DEFAULT="cryptdevice=/dev/disk/by-uuid/UUID_OF_LUKS_CONTAINER:cryptosystem"
GRUB_CMDLINE_LINUX=""
[...]
#GRUB_DISABLE_LINUX_UUID=true
[...]
#GRUB_ENABLE_CRYPTODISK=y
[...]

# /boot/grub/grub.cfg
[...]
linux /vmlinuz-linux root=UUID=UUID_OF_FS_INSIDE_LUKS rw cryptdevice=/dev/disk/by-uuid/UUID_OF_LUKS_FS:cryptosystem quiet
[...]

标签:usb、arch-linux、grub2

答案1

删除autodetect挂钩解决了该问题,现在我可以不使用后备映像来启动系统。

相关内容