Ubuntu 安装盘有一个选项,可以使用 LUKS 加密安装 Ubuntu。但是,没有选项可以在现有分区旁执行加密安装以实现双启动方案。
我怎样才能在活动磁盘的另一个分区上安装加密的 Ubuntu?
答案1
首先,如果您想在硬盘上安装加密的 Ubuntu,替换任何现有的分区和操作系统,您可以直接从图形安装程序中执行此操作。此手动过程仅在双启动时才需要。
该答案已使用 Ubuntu 13.04 测试过。
从 Ubuntu Live DVD 或 USB 启动,然后选择“试用 Ubuntu”。
使用实时磁盘中包含的 GParted 创建两个分区。第一个分区应未格式化,并且应足够大以容纳根目录和交换区,在我的示例中,这是
/dev/sda3
。第二个分区应有几百兆字节大,并以 ext2 或 ext3 格式格式化,它将被解密并安装到/boot
(在我的示例中,这是/dev/sda4
)。在此屏幕截图中,我在两个分区中有一个未加密的 Ubuntu 安装:
/dev/sda1
和/dev/sda5
,在左侧的圆圈中突出显示。我在 中创建了一个未格式化的分区,/dev/sda3
在 中创建了一个 ext3 分区/dev/sda4
,用于加密的 Ubuntu 安装,在右侧的圆圈中突出显示:使用这些命令创建一个 LUKS 容器。将其替换
/dev/sda3
为之前创建的未格式化分区,并cryptcherries
使用您选择的名称。sudo cryptsetup luksFormat /dev/sda3 sudo cryptsetup luksOpen /dev/sda3 cryptcherries
警告:您会注意到该
luksFormat
步骤完成得非常快,因为它不会安全地擦除底层块设备。除非您只是在进行实验并且不关心针对各种类型的取证攻击的安全性,否则在在其中创建文件系统之前正确初始化新的 LUKS 容器至关重要。将零写入映射容器将导致将强随机数据写入底层块设备。这可能需要一段时间,因此最好使用命令pv
来监控进度:### Only for older releases, e.g. not for 19.04, `pv` is not included in the repo must be added first # sudo add-apt-repository "deb http://archive.ubuntu.com/ubuntu $(lsb_release -sc) universe" # sudo apt-get update sudo apt-get install -y pv sudo sh -c 'exec pv -tprebB 16m /dev/zero >"$1"' _ /dev/mapper/cryptcherries
或者,如果您正在进行离线安装并且无法轻松获取
pv
:sudo dd if=/dev/zero of=/dev/mapper/cryptcherries bs=16M
在已挂载的 LUKS 容器内,创建一个 LVM 物理卷、一个卷组和两个逻辑卷。第一个逻辑卷将挂载在
/
,第二个逻辑卷将用作交换。vgcherries
是卷组的名称,和lvcherriesroot
是lvcherriesswap
逻辑卷的名称,您可以自行选择。sudo pvcreate /dev/mapper/cryptcherries sudo vgcreate vgcherries /dev/mapper/cryptcherries sudo lvcreate -n lvcherriesroot -L 7.5g vgcherries sudo lvcreate -n lvcherriesswap -L 1g vgcherries
为两个逻辑卷创建文件系统:(您也可以直接从安装程序执行此步骤。)
sudo mkfs.ext4 /dev/mapper/vgcherries-lvcherriesroot sudo mkswap /dev/mapper/vgcherries-lvcherriesswap
无需重启,使用图形安装程序安装 Ubuntu(快捷方式位于 Xubuntu 18.04 的桌面上),选择手动分区。将 和 分配
/
给/dev/mapper/vgcherries-lvcherriesroot
步骤/boot
2 中创建的未加密分区(在此示例中为/dev/sda4
)。图形安装程序完成后,选择“继续测试”并打开终端。
找到 LUKS 分区的 UUID(
/dev/sda3
在本例中),您稍后会需要它:$ sudo blkid /dev/sda3 /dev/sda3: UUID="8b80b3a7-6a33-4db3-87ce-7f126545c74af" TYPE="crypto_LUKS"
将适当的设备挂载到 中的适当位置
/mnt
,并 chroot 到其中:sudo mount /dev/mapper/vgcherries-lvcherriesroot /mnt sudo mount /dev/sda4 /mnt/boot sudo mount --bind /dev /mnt/dev sudo chroot /mnt > mount -t proc proc /proc > mount -t sysfs sys /sys > mount -t devpts devpts /dev/pts
/etc/crypttab
在 chrooted 环境中创建一个名为的文件以包含此行,将 UUID 值替换为 LUKS 分区的 UUID,并将vgcherries
其替换为卷组的名称:# <target name> <source device> <key file> <options> cryptcherries UUID=8b80b3a7-6a33-4db3-87ce-7f126545c74af none luks,retry=1,lvm=vgcherries
在 chrooted 环境中运行以下命令:
update-initramfs -k all -c
重新启动并启动到加密的 Ubuntu。系统将提示您输入密码。
/
通过运行以下命令检查您是否正在使用加密分区mount
:$ mount /dev/mapper/vgcherries-lvcherriesroot on / type ext4 (rw,errors=remount-ro) /dev/sda4 on /boot type ext3 (rw) # rest of output cut for brevity
通过运行以下命令检查您是否正在使用加密的交换分区(而不是任何其他安装的未加密的交换分区):
$ swapon -s Filename Type Size Used Priority /dev/mapper/vgcherries-lvcherriesswap partition 630780 0 -1
检查您是否可以启动到恢复模式,您不想在紧急情况下才发现恢复模式不起作用:)
安装任何更新,这些更新可能会重建 ramdisk 并更新 grub 配置。重新启动并测试正常模式和恢复模式。
答案2
仅使用 Ubuntu LiveCD 的 GUI 工具即可创建加密双启动设置。
先决条件
- 带有 19.04 Ubuntu 安装程序的 USB 记忆棒。
- 如果您有 EFI 主板,请确保磁盘使用 GUID 分区表 (GPT)。使用此方法使用 MBR 磁盘似乎会失败。您可以使用 Linux 工具 (
gdisk
) 将 MBR 转换为 GPT,但您应该先进行备份。如果您转换分区表,则需要修复 Windows 启动加载程序然后。
视窗
在开始栏中输入
disk partition
并选择第一个选项(从设置中打开磁盘分区管理器)。将主分区缩小到所需的 Ubuntu 大小(我只是使用默认设置,将我的 500GB 驱动器分成 240GB Windows 操作系统和 240GB 未分配空间)。
BIOS
- 禁用安全启动(如果您有 bitlocker,则需要每次重新启用它才能安全地启动到 Windows) - 这对我来说很好,因为 Ubu 是我的主要操作系统,只需使用 windoze 进行游戏即可。
Ubuntu LiveCD
最后 - 启动 19.04 安装程序 USB
点击Enter默认安装 Ubuntu选项。
当你看到屏幕上显示擦除整个磁盘并有一些复选框,点击其他内容(手动分区)选项。否则您将丢失 Windows 数据!
磁盘分区管理器加载磁盘后,您将有大量未分配空间。单击它并点击添加按钮创建分区。
- 首先,创建一个 500MB 的
/boot
分区(主分区,ext4)。 - 第二,用剩余的空间创建一个加密卷。这将创建一个 LV 分区。将其修改为选定的根
/
分区。换句话说,点击“更改”按钮/dev/mapper/sdaX_crypt
并将挂载点设置为/
- 然后,其余的安装过程将照常进行。
首次启动时,登录、打开终端、运行,sudo apt-get update
然后sudo apt dist-upgrade
重新启动并再次登录。
将自动创建一个 2GB 的交换文件。如果您想要一个 8GB 的交换文件,请阅读这个答案。
答案3
首先,指出为什么仅加密 Linux 分区可能对您来说不够安全:
- https://superuser.com/questions/1013944/encrypted-boot-in-a-luks-lvm-ubuntu-installation
- https://security.stackexchange.com/questions/166075/encrypting-the-boot-partition-in-a-linux-system-can-protect-from-an-evil-maid-a
- https://www.reddit.com/r/linux/comments/6e5qlz/benefits_of_encrypting_the_boot_partition/
- https://unix.stackexchange.com/questions/422860/why-should-we-encrypt-the-system-partition-and-not-only-home
- https://www.coolgeeks101.com/howto/infrastructure/full-disk-encryption-ubuntu-usb-detached-luks-header/
- https://superuser.com/questions/1324389/how-to-avoid-encrypted-boot-partition-password-prompt-in-lvm-arch-linux
现在,我按照这个教程进行操作:
- https://www.oxygenimpaired.com/multiple-linux-distro-installs-on-a-luks-encrypted-harddrive
- http://web.archive.org/web/20160402040105/http://www.oxygenimpaired.com/multiple-linux-distro-installs-on-a-luks-encrypted-harddrive
在此回答中,我将逐步(带图片)介绍 LinuxMint 19.1 XFCE
和的安装Ubuntu 18.04.2
,它们都完全加密在单个磁盘中。首先,我安装Ubuntu 18.04.2
在 上/dev/sda5
,我没有创建交换分区,因为Linux Mint 19.1
和Ubuntu 18.04.2
不使用它们,即它们使用交换文件。
Ubuntu 18.04.2 仿生海狸
首先,插入Ubuntu
安装介质并重新启动机器进入Ubuntu
实时会话,然后选择Try Ubuntu
并打开一个终端,然后
sudo su -
fdisk /dev/sda
然后,创建以下分区cryptsetup luksFormat /dev/sda5
cryptsetup luksOpen /dev/sda5 sda5_crypt
pvcreate /dev/mapper/sda5_crypt
vgcreate vgubuntu /dev/mapper/sda5_crypt
lvcreate -L10G -n ubuntu_root vgubuntu
- 不要关闭终端,打开发行版安装程序,选择其他内容并标记以下选项
Install Now
选择以上选项后选择- 不要重启,点击继续使用Linux,并选择打开终端
mkdir /mnt/newroot
mount /dev/mapper/vgubuntu-ubuntu_root /mnt/newroot
mount -o bind /proc /mnt/newroot/proc
mount -o bind /dev /mnt/newroot/dev
mount -o bind /dev/pts /mnt/newroot/dev/pts
mount -o bind /sys /mnt/newroot/sys
cd /mnt/newroot
chroot /mnt/newroot
mount /dev/sda1 /boot
blkid /dev/sda5
(复制不带引号的 UUID 并在下一步中使用它)echo sda5_crypt UUID=5f22073b-b4ab-4a95-85bb-130c9d3b24e4 none luks > /etc/crypttab
- 创建文件
/etc/grub.d/40_custom
- 编辑
/etc/default/grub
并设置 update-initramfs -u
update-grub
exit
reboot
- 重新启动计算机后,选择该选项
Ubuntu
,它将正确询问您的加密密码 - 登录后,运行
sudo apt-get update
sudo apt-get install gparted
- 打开后
gparted
你会发现这个
有关更详细的说明,请阅读该问题顶部指出的原始教程或在 Google 上搜索这些命令的用法。
Linux Mint 19.1 Cinnamon
对于其余的 Linux 安装,reboot
您的Ubuntu
计算机使用Mint 19.1
(Live CD)安装程序启动,然后打开终端窗口
sudo su -
cryptsetup luksFormat /dev/sda6
cryptsetup luksOpen /dev/sda6 sda6_crypt
pvcreate /dev/mapper/sda6_crypt
vgcreate vgmint /dev/mapper/sda6_crypt
lvcreate -L10G -n mint_root vgmint
- 不要关闭终端,打开发行版安装程序,选择其他内容并标记以下选项
Install Now
选择以上选项后选择- 不要重启,点击继续使用Linux,并选择打开终端
mkdir /mnt/newroot
mount /dev/mapper/vgmint-mint_root /mnt/newroot
mount -o bind /proc /mnt/newroot/proc
mount -o bind /dev /mnt/newroot/dev
mount -o bind /dev/pts /mnt/newroot/dev/pts
mount -o bind /sys /mnt/newroot/sys
cd /mnt/newroot
chroot /mnt/newroot
mount /dev/sda2 /boot
blkid /dev/sda6
(复制不带引号的 UUID 并在下一步中使用它)echo sda6_crypt UUID=5f22073b-b4ab-4a95-85bb-130c9d3b24e4 none luks > /etc/crypttab
update-initramfs -u
update-grub
exit
reboot
- 重新启动计算机后,选择选项
Linux Mint on /dev/sda2
- 然后,它将正确启动
Mint 19.1
并要求输入加密密码 - 登录后,运行
sudo apt-get update
sudo apt-get install gparted
- 打开后
gparted
你会发现这个
相关链接:
答案4
在这里添加另一个答案,因为我找到的许多其他资源(这里和其他地方)已经过时了,我认为其中一些步骤可以简化。
首先,正如其他答案所提到的,如果您不想双重启动,只需在自动安装程序中选择加密选项。
值得注意的是,此方法不加密/boot
。虽然加密有正当理由/boot
,但当您使用 LUKS 进行图形安装时,图形安装程序不会对其进行加密。因此,我遵循了这一先例,并保持了未加密/boot
分区的简单性。
Ubuntu 20.04 和 Windows 10
在本指南中,我将引用/dev/sda
。您的可能有所不同 - 特别是/dev/nvme0n1
。只需在下面进行适当的替换,同时注意/dev/sda1
对应于/dev/nvme0n1p1
。1
可以使用 GParted、sgdisk 或 gdisk 进行分区。sgdisk 最容易在这里作为命令引用。
- 仅为 UEFI 配置您的 BIOS。无 MBR,无传统启动。2
- 将驱动器初始化为 GPT 驱动器,并创建一个格式化为 FAT32(作为根)的 550M EFI 系统分区。
# 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.fat -F 32 /dev/sda1
- 安装 Windows。在安装程序中,选择为 Windows 创建一个新分区,并将其设置为合适的大小(大约是硬盘的一半)。保留未分配的空间以便稍后用于 Ubuntu。当您执行此操作时,安装程序实际上会出于 Windows 原因创建多个分区。
- 如果需要,Windows 安装完成后,请在
C:
驱动器上启用 BitLocker。这将创建另一个分区。 - 为 Ubuntu 创建分区(以 root 身份)。768M 分区用于
/boot
。另一个用于 Ubuntu,将使用 LUKS 加密并使用 LVM(类似于默认安装过程的设置方式)。(如果您之前未设置 BitLocker,您的分区号将与我下面的示例相差 1(因此我的 sda5 是您的 sda4)。# 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:8301 --typecode=6:8301 /dev/sda # mkfs.ext4 -L boot /dev/sda5
- 设置 LUKS 和 LVM(以 root 身份)。我设置了 8G 的交换空间。一个好的经验法则是系统中的 RAM 数量。交换将被加密。
# cryptsetup luksFormat --type=luks1 /dev/sda6 # cryptsetup open /dev/sda6 sda6_crypt # pvcreate /dev/mapper/sda6_crypt # vgcreate ubuntu-vg /dev/mapper/sda6_crypt # lvcreate -L 8G -n swap_1 ubuntu-vg # lvcreate -l 100%FREE -n root ubuntu-vg
- 使用图形安装程序安装 Ubuntu。自行选择分区。
/dev/sda5
至于ext4
/boot
/dev/mapper/ubuntu--vg-root
至于ext4
/
/dev/mapper/ubuntu--vg-swap_1
作为swap
- 引导加载程序设备应该是
/dev/sda
- 安装程序完成后,不要退出。我们需要设置
/etc/crypttab
(以 root 身份)。这将在启动时触发密码提示。将文件中的 UUID 替换为驱动器的 UUID,该 UUID 来自sudo blkid /dev/sda6
# mount /dev/mapper/ubuntu--vg-root /target # mount /dev/sda5 /target/boot # for n in proc sys dev etc/resolv.conf; do mount --rbind /$n /target/$n; done # chroot /target # mount -a # echo 'sda6_crypt UUID=abcdefgh-1234-5678-9012-abcdefghijklm none luks,tries=0,discard,loud' > /etc/crypttab # update-initramfs -k all -c
完成!如果您在 Windows 上使用 BitLocker,则它不会喜欢使用 grub 启动。相反,请直接从 BIOS 启动选项启动 Windows。