问题描述
我正在尝试在新笔记本电脑上实现 Windows 10(预装)和 Ubuntu 18.04 的双重启动。这并不是很困难,但如果您还需要 LUKS 全盘加密,它会在启动期间要求密码短语进行解密,并使用硬件加速进行加密和解密,这似乎会变得更加复杂。如果您想使用 LUKS,可以使用 Ubuntu 安装程序轻松完成,但前提是该磁盘上没有其他操作系统。如果是这样,您所能做的就是根据网上找到的一些教程手动设置。
因此,我尝试手动进行此安装。首先,我完成了预装Windows 10的安装。然后,我使用了这个使用 LUKS 设置 Ubuntu 的指南。
重现步骤
- 从 Ubuntu 18.04 U 盘启动
- 为 /boot 创建未加密的分区(类型 ext2 或 ext3)
- 为 luks 加密创建分区(类型未格式化)
- 在我们刚刚创建的分区上创建 LUKS 容器:
- sudo cryptsetup luksFormat /dev/nvme0n1p5
- sudo cryptsetup luksOpen /dev/nvme0n1p5 加密分区
- 在 LUKS 容器内为交换和根 (/) 创建 LVM 卷
- sudo pvcreate /dev/mapper/cryptedpartition
- sudo vgcreate vgcrypted /dev/mapper/cryptedpartition
- sudo lvcreate -n swap -L 20g vgcrypted
- sudo lvcreate -n root -l 100%免费 vgcrypted
- 开始Ubuntu安装,当询问在哪里安装Ubuntu时,选择其他的东西。弹出分区编辑器。在这里,我们做了几件事:
- 我们挂载/格式化我们创建的未加密分区 /boot (ext2 或 ext3)
- 我们将加密数据分区挂载/格式化为 / (ext4)
- 我们将现有的 EFI 分区挂载为 /boot/efi
- 我们选择Windows 启动管理器在底部的下拉框中,作为安装引导加载程序(GRUB)的位置。
- 安装完成后,选择继续测试并打开一个终端。
- 确定我们在步骤 3 中创建的 LUKS 分区的唯一标识符 (UUID):
- 须藤 blkid /dev/nvme0n1p5
chroot 进入新安装:
- sudo 安装 /dev/mapper/vgcrypted-root /mnt
- 须藤挂载 /dev/nvme0n1p4 /mnt/boot
- sudo mount --bind /dev /mnt/dev
- 须藤 chroot /mnt
- 注意:现在我们已在 chrooted /mnt 中获得 root 权限;不需要须藤
- 挂载 -t proc proc /proc
- 挂载-t sysfs sys /sys
- 挂载 -t devpts devpts /dev/pts
创建一个新文件:纳米 /etc/crypttab并将以下内容放入其中,将 UUID 替换为您在步骤 8 中获得的 UUID。同时将 lvm= 替换为您的 LVM 卷组的名称(本例中为“vgcrypted”)。
。
# <target name> <source device> <key file> <options>
cryptedpartition UUID=8b80b3a7-6a33-4db3-87ce-7f126545c74af none luks,retry=1,lvm=vgcrypted
- 完成方式:
- 打字出口逃离 chroot 环境
- 卸载所有文件系统(不确定是否有必要)
- 重启
- 如果您选择从默认选择的 ubuntu 启动,那么现在应该要求您提供密码,以便在启动阶段解锁 LUKS 加密容器。
。
上面链接的指南到此结束,但是现在怎么办?
好消息是双启动似乎可以工作:我可以通过选择启动到 WindowsWindows 启动管理器从启动菜单,默认值为乌班图。欢呼!
但是启动 Ubuntu 失败:它会转到 Busybox,并且没有任何有意义的错误消息。我找不到太多帮助来找到问题;没有实际的错误消息,很难诊断,因为我不知道从哪里开始。
幸运的是,我最终沿着这条路线走得更远:
附加说明
- 再次从 Ubuntu U 盘启动
- 打开 LUKS 容器:
- sudo cryptsetup luksOpen /dev/nvme0n1p5 加密分区
- 安装所有内容,按照步骤 9 进入 chroot。
- 配置下一个 initrd 构建以强制 CRYPTSETUP=y:
- 纳米 /etc/cryptsetup-initramfs/conf-hook
- 取消注释 CRYPTSETUP=y 行
- 生成 initrd(初始 ramdisk),它在引导阶段用于设置 LUKS 等内容:
- 更新-initramfs -c -k 4.15.0-29-generic
- 注意:如果适用,请将 4.15.x 版本替换为 /boot 中的内核/initrd 版本。你也可以尝试uname -a。
- 卸载,重启
。
快到了,但还没有到……
现在,启动时,系统会要求我输入 LUKS 密码,并且它似乎还会检测我的 LUKS 容器(cryptedpartition)的名称。听起来不错吧?
我现在的问题是:密码不被接受;每次输入密码时,我都会收到密码可能不正确的消息。但是当使用 USB 记忆棒启动时,命令sudo cryptsetup luksOpen还会要求输入密码,并且会被接受。
我想尝试的一件事是禁用密码混淆,以便我可以看到在启动阶段输入的密码。也许它检测到我的键盘错误并且确实输入了错误的密码。我根本不知道可能是什么问题。文件系统是干净的(使用 fsck -f 进行测试)。我还使用外部 USB 键盘而不是笔记本电脑的默认键盘进行了测试。
现在我真的陷入困境了;有人可以帮我让这个双启动 Ubuntu+LUKS 与 Windows 10 一起工作吗?感谢您的时间和努力!