如何使用加密双引导Ubuntu 20.04和Windows 10

2020-10-28 11:36:05

当你运行Ubuntu安装程序时,有一个选项可以用现有的Windows安装来双引导Ubuntu。还有一个选项可以加密你的Ubuntuinstall,但前提是你必须清除所有内容并安装Ubuntu。没有自动方式将Ubuntu与加密的Windows10一起安装。虽然有很多关于双引导Ubuntu和Windows的教程,但其中很多都已经过时了--通常引用的是MBR分区表--而且几乎没有一个教程涉及加密您的Ubuntu分区。

实际上,一旦你弄清楚了,就没那么难了。棘手的是,这在任何地方都没有很好的记录!所以我希望用这篇文章来解决这个问题。老实说,如果您对Ubuntu有足够的了解,可以在Windows上设置双引导,那么使用加密只会稍微困难一点。我在Dell Latitude E7450上准备了本教程,在我的Dell Precision 5510上测试时对其进行了微调。因此,它在大多数戴尔系统上几乎都可以正常运行,而在大多数其他类型的计算机上只需稍作修改(特别是在BIOS设置方面)即可。

为了撰写本指南,我从几个来源收集了信息。以下是我找到的一些最有用的参考资料:

XPS 15 9560 Dual-Boot with Encryption Notes,作者:Luispabon。我非常仔细地遵循了这些说明,但根据其他指南修改了一些分区大小和名称。

全磁盘加密方法2019,来自Ubuntu社区维基。这是一个很好的资源,但是在不使用双引导的情况下处理加密。

手动全系统加密,来自Ubuntu社区维基。本文篇幅较长,并且不关注双引导,但提供了有关某些事情工作方式的详细信息。

值得注意的是,此方法不加密/引导。虽然加密/引导是有正当理由的,但是当您使用Luk进行图形安装时,图形安装程序不会对其进行加密。因此,我将遵循这一先例,并保持未加密/引导分区的简单性。因此,我在下面编写的指南是使用双引导进行Luks加密的最简单的方法。

五六年前,在注意到我工作过的所有公司都需要加密存储后,我开始在我所有的个人电脑上使用加密存储,并有很好的效果。笔记本电脑经常丢失和被盗。它们是价值很高的物品,体积小,携带方便。当小偷拿到你的笔记本电脑时,上面有成堆的有价值的信息,他们可以使用或出售。即使您使用密码登录,如果您的磁盘未加密(例如,使用活动的U盘),攻击者也很容易获得访问您的数据的权限。一旦他们有了这些数据,他们就可以访问在线账户、银行对账单、电子邮件和大量其他数据。对我来说,加密硬盘不再是可选的--它是一种必需品。

那么我们要做什么呢?本教程将帮助您设置一个双引导Ubuntu20.04和Windows10的系统。(我还没有测试过,但它应该可以与大多数其他现代版本(~16.04+)的Ubuntu或Windows兼容。)。系统将使用带有UEFI的GPT硬盘(您的BIOS必须支持UEFI)。Ubuntu分区将使用Luk进行加密。1 Windows分区可以选择使用BitLocker加密。我将使Ubuntu安装尽可能接近“默认”安装--没有像单独的/home分区那样的花哨把戏,但是如果你真的想要自己添加,应该会比较容易。

我将从一个空白硬盘开始,从头开始安装Windows10和Ubuntu。如果您已经安装了Windows并且想要保留它,您应该能够收缩您的Windows分区并加入我们的第三阶段(尽管您可能想要浏览第一阶段和第二阶段以了解我们所做的工作)。

为了让您大致了解我们的发展方向,以下是我们要做的事情:

当然,与任何新的操作系统安装一样,您应该在继续安装之前备份所有重要数据。下面的说明将擦除硬盘上的所有数据。操作风险自负;我不对任何损坏或数据丢失负责。

因为我们都是从头开始安装Windows10和Ubuntu,所以每个都需要一个USB棒。如果你还没有一台运行Ubuntu或Windows的电脑,制作安装介质会有点困难--不过有一些教程可以教你,我会让你自己弄明白的。

创建Windows Installer U盘。最简单的方法是在已经运行Windows的计算机上使用Windows10媒体创建工具。

创建一个Ubuntu 20.04 U盘。最简单的方法是下载ISO,然后在已经运行Ubuntu的计算机上使用Startup Disk Creator。

太棒了!我们的U盘已经准备好了!在我们开始之前还有最后一件事-我们需要确保我们的BIOS设置正确。特别是,我们需要确保我们使用UEFI来引导我们的操作系统。2个

确保您的计算机正在运行可用的最新BIOS。这一点很重要,因为过期的BIOS可能会有错误,而这些错误有时会影响UEFI、非Windows操作系统或我们打赌的其他组件。

编辑您的BIOS设置。以下名称可能特定于DellBIOS,但其它制造商也会有类似的设置。在“常规”和“高级启动选项”下,我禁用了传统选件ROM。两个操作系统都必须以UEFI模式安装,这一点很重要(如果您愿意,可以在安装完成时启用该模式)。

在“安全性”下,如果您希望在Windows中轻松设置BitLocker,则必须启用“TPM安全性”。

我禁用了安全引导。我不确定这是否是绝对必需的,如果您愿意,可以尝试将其保留或在完成后重新启用。

既然已经为UEFI配置了BIOS,我们就可以设置硬盘了。

大多数现代计算机都支持这一点,但如果您的计算机不支持此功能,本教程将不适用于您。您应该考虑:

或者找到另一个教程,或者找出如何使用MBR磁盘来做到这一点。

通过执行以下操作,完全擦除硬盘并将其设置为UEFI。3找出您的主硬盘的名称。它可能是/dev/sda或/dev/nvme0n1。重要的是,它不是/dev/sda1或/dev/nvme0n1p1-它们是磁盘的分区。确定您的名称的一种方法是运行lsblk并查看磁盘大小。在本指南的其余部分,我将引用/dev/sda。如果您的目录不是/dev/sda,请在本指南的其余部分中将/dev/sda替换为您自己的目录(可能是/dev/sdb或/dev/nvme0n1)。

运行以下命令。这会将驱动器初始化为GPT驱动器,并创建格式化为FAT32的550M EFI系统分区。

$sudo su#sgdisk--zap-all/dev/sda#sgdisk--new=1:0:+550M/dev/sda#sgdisk--change-name=1:efi/dev/sda#sgdisk--typecode=1:ef00/dev/sda#mkfs.fa-F 32/dev/sda1。

好的,第一阶段完成了。我们已准备好安装介质,并且计算机的BIOS和硬盘设置正确。接下来,我们将安装Windows。

在此阶段,我们将安装Windows。请注意,当我们这样做时,我们将留下一些未分配的空间,以便稍后安装Linux。这是一个很好的方法,因为Windows安装程序会稍微修改一下我们的分区,而且在最终完成Linux分区之前让它这样做更容易。

创建新分区。此分区的大小应该是要用于Windows的磁盘空间量。在本例中,我使用了80G,因为我计算机上的SSD相对较小。如果不确定,可以做大约一半的硬盘。

Windows将警告您它将创建一个额外的系统分区。这很好。4.。

将Windows安装到您刚刚创建的分区上。不需要格式化任何分区-Windows安装程序将为您处理。

Windows安装完成后,登录并在驱动器C:上启用BitLocker。这将自动在您的磁盘上创建另一个分区(Windows恢复分区)-这就是为什么我们在为Ubuntu分区之前这样做的原因。

此时,您可以开始使用Windows。但我会避免做太多的设置或个性化设置,这样如果下面出了什么问题,你就不必再做了。如果您想要仔细检查分区,在安装Windows并启用BitLocker后,您将得到以下结果:

Ubuntu@ubuntu:~$sudo sgdisk--print/dev/sdadisk/dev/sda:500118192个扇区,238.5 GiBNumber开始(扇区)大小代码名称12048 1128447 550.0 MiB EF00 EFI 2 1128448 1161215 16.0 MiB 0C01 Microsoft保留...3 1161216 167825076 79.5 GiB0700基本数据分区4 167825408 168900607 525.0 MiB2700。

这是最棘手的阶段,因为这是我们需要手动为Ubuntu设置加密磁盘的阶段。我们将使它的工作方式非常类似于Ubuntu安装程序在加密整个磁盘时的设置方式。

在本节中,我将引用sgdisk命令。如果您对gdisk感到满意并想要一个交互界面,您可以使用它,或者如果您愿意,也可以使用GParted。Sgdisk命令在教程中更易于参考。同样,我指的是/dev/sda,但是您的名称可能类似于/dev/nvme0n1-只需继续替换您一直使用的内容即可。

如果需要,可以在继续之前运行sudo sgdisk--print/dev/sda来检查分区表。您将看到由Windowsinstaller创建的多个分区,并且应该会看到我们将要安装Ubuntu的一些空白空间。

为/boot创建一个分区,为我们的Linux系统&;data创建一个分区(使用Luk加密)。

$sudo su#sgdisk--new=5:0:+768m/dev/sda#sgdisk--new=6:0:0/dev/sda#sgdisk--change-name=5:/boot--change-name=6:rootfs/dev/sda#sgdisk--typecode=5:8300--tyecode=6:8300/dev/sda#mkfs.ext4-L boot/dev/sda5。

#cryptsetup luksFormat--type=luks1/dev/sda6WARNING!=这将不可撤销地覆盖/dev/sda6上的数据。真的吗?(键入大写yes):YES输入/dev/sda6的密码:验证密码:#cryptsetup open/dev/sda6 sda6_crypt输入/dev/sda6的密码:#ls/dev/mapper/control sda6_crypt

在我们的加密分区中设置LVM用于数据卷和交换空间。我们的交换空间在加密分区中是件好事,因为当系统挂起时,数据可能会在那里。此外,对于挂起/休眠工作,您至少应该有与内存一样多的交换空间。我的笔记本电脑有8G内存,所以我将创建8G交换空间。5个。

#pvcreate/dev/mapper/sda6_cryptPhysical Volume";/dev/mapper/sda6_crypt";已成功创建。#vgcreate ubuntu-vg/dev/mapper/sda6_cryptVolume group";ubuntu-vg";已成功创建#lvcreate-L 8G-n swap_1 ubuntu-vg逻辑卷";swap_1";已创建。#lvcreate-l 100%free-n root ubuntu-vgLogical volume";已创建。

现在,我们所有的分区都准备好了。别停在这里!在不退出Ubuntu实时环境的情况下继续进入下一阶段。

从桌面运行Ubuntu安装程序,然后选择其他选项来自己配置分区。引导加载器设备应该是/dev/sda(尽管似乎在UEFI模式下可能并未实际使用此设置)。

安装程序完成后,单击继续测试。在我们重新开始之前,我们必须做更多的事情。

设置etc/crypttab。这将允许您在引导时通过键入密码来解锁加密的驱动器。#mount/dev/mapper/ubuntu--vg-root/target#mount/dev/sda5/target/boot#for n in proc sys dev etc/Resolution v.conf;do mount--rbind/$n/target/$n;do#chroot/target#mount-a。

在chroot内部(即在同一终端中),设置/etc/crypttab。使用您喜欢的编辑器编辑该文件。我将使用vi。Sudo vi/etc/crypttab保存以下文件内容,用上面找到的实际UUID替换UUID。

#<;目标名称>;<;源设备>;<;密钥文件>;<;选项>;#使用的选项:#luks-指定这是Luks加密设备#TRIES=0-允许重新输入密码不限次数#discard-允许SSD trim命令,警告:潜在安全风险(更多:";man crypttab";)#out-显示所有警告ssda6_crypt UID=abcdefgh-1234-5678-9012-abcdefghijm NONE Luks,disard

搞定了!恭喜您,您已经使用Ubuntu20.04和Windows10创建了一个双引导系统,所有数据都已加密!现在两个安装都已完成,您可以重新启动计算机了。

默认情况下,您的计算机将引导至GRUB,GRUB可以引导Ubuntu。尽管GRUB中列出了Windows,但在启用BitLocker的情况下从GRUB启动Windows将不起作用,因为系统的TPM将检测到启动顺序中的更改。若要避免此问题,您应该直接从计算机的BIOS启动菜单启动Windows-通常在启动时按F12键即可访问。

作为参考,下面是我的硬盘驱动器的最终状态(在rootfs分区上有2个逻辑卷,用于/和交换):

$sudo sgdisk--Print/dev/sdaDisk/dev/sda:500118192个扇区,238.5 GiB编号开始(扇区)结束(扇区)大小代码名称1 2048 1128447 550.0 MiB EF00 EFI 2 1128448 1161215 16.0 MiB 0C01 Microsoft保留...3 1161216 167825076 79.5 GiB0700基本数据分区4 167825408 168900607 525.0 MiB 2700 5 168900608 170473471 768.0 MiB 8301/Boot 6 170473472 500118158 157.2 GiB8301根文件系统。

我希望你会发现这本指南很有用,我希望Ubuntu的全磁盘加密会因此变得更受欢迎和更好的支持!

Ubuntu支持其他类型的加密。但是主文件夹加密可能会导致很多问题和不兼容。Cryptsetup手册页推荐Luks而不是dm-crypt。-↩。

在UEFI中引导对于此过程的工作非常重要。在Ubuntu社区维基上有一个关于引导模式的深入讨论。--↩。

根据sgdisk手册页,“如果Windows要从GPT磁盘引导,建议使用Microsoft保留类型的分区(sgdisk内部代码0x0C01)。此分区的大小应约为128 MiB。它通常紧跟在EFI系统分区之后,紧跟在视窗数据分区之前。“”↩

在Ubuntu社区维基上有关于暂停模式的很好的讨论,强调了交换空间的必要性。(↩