我的 Linux 系统具有以下磁盘设置(MBR 格式、BIOS 引导):
sda 32G disk
└─sda1 32G part crypto_LUKS 001b349b-2a70-4408-bae2-107d035c96e9
└─luks-001b349b-2a70-4408-bae2-107d035c96e9 32G crypt btrfs 8c72adab-63cf-4526-b77e-78f11d2585e2
它工作得很好,但我想更改 LUKS 卷和文件系统的 UUID。这是因为我正在从我的主机上创建可启动救援 USB,因此我需要避免从 USB 启动时发生 UUID 冲突。
所以我尝试:
sudo sed -i 's/001b349b/101b349b/g' /etc/default/grub
sudo sed -i 's/001b349b/101b349b/g' /etc/fstab
sudo sed -i 's/001b349b/101b349b/g' /boot/grub/grub.cfg
sudo sed -i 's/8c72adab/7c72adab/g' /etc/default/grub
sudo sed -i 's/8c72adab/7c72adab/g' /etc/fstab
sudo sed -i 's/8c72adab/7c72adab/g' /boot/grub/grub.cfg
sudo update-grub
sudo grub-install /dev/sda --modules=btrfs
完成后,我将磁盘连接到另一台计算机并调整两个 UUID:
sudo cryptsetup luksUUID /dev/sda1 --uuid "101b349b-2a70-4408-bae2-107d035c96e9"
sudo btrfstune -U 7c72adab-63cf-4526-b77e-78f11d2585e2 /dev/mapper/sda1-crypt
当我尝试从生成的磁盘启动时,我看到:
error: no such cryptodisk found.
error: disk 'cryptouuid/001b349b2a704408bae2107d035c96e9' not found.
Entering rescue mode...
grub rescue> _
也就是说,某处旧的 LUKS UUID 仍然存在。我预计当我运行时它会被新的覆盖grub-install
,但它没有发生。
为什么 grub 仍然尝试旧的 UUID?为了让它尝试新的,我缺少什么?
更新:
看起来,当grub-install
运行时,它可能会从当前安装的 LUKS 设备(而不是从任何配置文件)获取旧的 UUID,因为我看不到旧的 UUID 可能来自其他地方。是这样的情况吗?有什么办法可以覆盖这种行为吗?