Maj*_*jiy 5 upgrade encryption boot btrfs luks
不久前,我按照本指南使用 btrfs-luks 加密安装了 Ubuntu 20.04。
过去,启动过程一开始只涉及一个密码短语提示。
今天升级到Ubuntu 22.04后,启动失败。
在启动过程的一开始,我仍然收到密码短语提示。但现在我收到以下输出(为了清楚起见,所有 UUID 均已修改):
Btrfs loaded, crc32c=crc32c-intel, zoned=yes, fsverity=yes
Scanning for Btrfs filesystems
done.
Begin: Waiting for root file system ... Begin Running /scripts/local-block ... done.
done.
Gave up waiting for root file system device. Common problems:
- Boot args (cat /proc/cmdline)
- Check rootdelay= (did the system wait long enough?)
- Midding modules (cat /proc/modules; ls /dev)
ALERT! UUID=xxx-xxx-xxx-xxx-xxx does not exist. Dropping to a shell!
Run Code Online (Sandbox Code Playgroud)
在此输出之后,它会让我进入 (initramfs) 提示符。
跑步cat /proc/cmdline
给了我:
BOOT_IMAGE=/@/boot/vmlinuz-5.15.0-46-generic root=UUID=xxx-xxx-xxx-xxx-xxx ro rootflags=subvol=@
Run Code Online (Sandbox Code Playgroud)
通过 uuid 列出磁盘ls -l /dev/disk/by-uuid/
给了我(再次,为了清楚起见,UUID 被替换):
aaa-aaa-aaa-aaa-aaa -> ../../nvem0n1p2
bbb-bbb-bbb-bbb-bbb -> ../../nvem0n1p3
ccc-ccc -> ../../nvme0n1p1
ddd-ddd-ddd-ddd-ddd -> ../../nvme0n1p4
Run Code Online (Sandbox Code Playgroud)
因此,提到的 UUID 不可用。
如果我使用cryptsetup open /dev/nvme0n1p3 cryptdata
(并再次输入密码)手动解密,我会收到:
BTRFS: device fsid=xxx-xxx-xxx-xxx-xxx devid 1 transid 797369 /dev/dm-0 scanned by systemd-udevd (527)
Run Code Online (Sandbox Code Playgroud)
当我现在运行时ls -l /dev/disk/by-uuid/
,丢失的 uuid 现已包含在内:
aaa-aaa-aaa-aaa-aaa -> ../../nvem0n1p2
bbb-bbb-bbb-bbb-bbb -> ../../nvem0n1p3
ccc-ccc -> ../../nvme0n1p1
ddd-ddd-ddd-ddd-ddd -> ../../nvme0n1p4
xxx-xxx-xxx-xxx-xxx -> ../../dm-0
Run Code Online (Sandbox Code Playgroud)
当我现在时exit
,启动过程继续运行,没有问题。
现在我正在寻找一种方法让启动过程再次自行运行。我怀疑某些配置文件可能在升级过程中被覆盖,我认为除了上面链接的安装指南之外,还需要进行一些调整,但我不记得确切了。
我尝试过的:
update-initramfs
按照类似问题的答案所建议的方式运行。没有效果。解决方案结果是:
echo "KEYFILE_PATTERN=/etc/luks/*.keyfile" >> /etc/cryptsetup-initramfs/conf-hook
update-initramfs -c -k all
Run Code Online (Sandbox Code Playgroud)
看来conf-hook已被更新覆盖。恢复 KEYFILE_PATTERN 并运行 update-initramfs 后,它再次按预期工作。
归档时间: |
|
查看次数: |
1184 次 |
最近记录: |