我的 dist 进行了升级,但不知为何丢失了启动分区上的内核。
我已设法恢复了大部分内容(通过启动旧的 14、安装加密分区并进入其中 - 因此下面是 /mnt),但我仍然无法启动。它从不询问我的根分区密码,而是卡在 initramfs shell 中。
我尝试将其添加到 /etc/default/grub
GRUB_CMDLINE_LINUX="cryptdevice=/dev/disk/by-uuid/8711af09-1c70-414a-af43-e859ddabf09f:cryptroot root=/dev/mapper/cryptroot"
该 UUID 在我的 /etc/crypttab 中的位置:
sda5_crypt UUID=8711af09-1c70-414a-af43-e859ddabf09f none luks,discard
但是当我这样做并像这样运行 grub-install 时:
grub-install --boot-directory=/mnt/boot /dev/sda1
我明白了:
Installing for i386-pc platform.
grub-install: error: attempt to install to encrypted disk without cryptodisk enabled. Set `GRUB_ENABLE_CRYPTODISK=1' in file `/etc/default/grub'..
据我所知,GRUB_ENABLE_CRYPTODISK 仅适用于加密整个磁盘的情况 - 我没有。我在 /boot(或 USB 启动机器上的 /mnt/boot)上安装了单独的 EXT2 启动分区。
当我打开该选项时:
GRUB_ENABLE_CRYPTODISK=y
并运行 grub-install,我得到:
Installing for i386-pc platform.
grub-install: warning: Filesystem `ext2' doesn't support embedding.
grub-install: error: embedding is not possible, but this is required for RAID and LVM install.
我能找到的所有示例似乎都是针对整个磁盘安装的,似乎没有人谈论这种情况。
请帮忙!
答案1
据我所知,您不需要设置GRUB_CMDLINE_LINUX
加密块设备。相反,请确保以下内容正确:
- 安装 grub:确保 grub 安装在你的 /boot 分区上。如果它仍然抱怨扩展2,然后将 /boot 格式化为扩展或者ext4(我假设您的 /boot 分区上没有任何有价值的数据)。
我推荐以下清理方法(从 liveUSB 或救援磁盘):
sudo -i cryptsetup open /dev/sda5 my_encrypted_device mount /dev/mapper/my_encrypted_device /mnt mount --bind /dev/ /mnt/dev && mount --bind /dev/pts /mnt/dev/pts && mount --bind /proc /mnt/proc && mount --bind /sys /mnt/sys mount /dev/<YOUR_BOOT_PARTITION> /mnt/boot chroot /mnt apt purge --auto-remove grub-pc
按 Enter 确认删除。
apt install grub-pc
在终端内,使用空格键选择安装 grub 的位置,按 tab 然后按 Enter。
- 在/etc/crypttab中:您的输入应采用以下格式:
目标源设备密钥文件选项
(例如 my_encrypted_device /dev/sda5 none luks)
请记住,密钥文件参数none
要求用户以交互方式提供密钥文件
- 在 /etc/fstab 中:/ 条目的第一个字段应包含相同的设备映射名称(即 my_encrypted_device)
- 更新-initramfs:不要忘记更新您的 RAM 文件系统!
update-initramfs -u -k all
现在你应该可以启动了。
注意:正如你所说,GRUB 可以安装在你的加密设备上