问题描述
Ubuntu 13.04安装盘有一个选项来安装使用LUKS加密的Ubuntu。但是,没有选项可以为dual-boot方案执行加密安装along-side现有分区。
如何在活动磁盘上安装与其他分区一起加密的Ubuntu?
最佳解决办法
首先,如果要在硬盘上安装加密的Ubuntu,替换任何现有的分区和操作系统,可以直接从图形安装程序执行此操作。只有dual-booting才需要此手动过程。
这个答案已经过Ubuntu 13.04的测试。
-
从Ubuntu live DVD或USB memory 棒启动,然后选择”Try Ubuntu”。
-
使用活动磁盘中包含的GParted创建两个分区。第一个分区应该是未格式化的,并且应该足够大以用于root和swap,在我的示例中,这是
/dev/sda3
。第二个分区应该是几百兆字节,并在ext2或ext3格式化,它将是未加密的并安装到/boot
(在我的例子中,这是/dev/sda4
)。在此屏幕截图中,我在两个分区中安装了未加密的Ubuntu:/dev/sda1
和/dev/sda5
,在左侧的圆圈中突出显示。我在/dev/sda3
中创建了一个未格式化的分区,在/dev/sda4
中创建了一个ext3分区,用于加密的Ubuntu安装,在右侧的圆圈中突出显示: -
使用这些命令创建LUKS容器。将
/dev/sda3
替换为先前创建的未格式化分区,将cryptcherries
替换为您选择的名称。sudo cryptsetup luksFormat /dev/sda3 sudo cryptsetup luksOpen /dev/sda3 cryptcherries
-
警告:您会注意到
luksFormat
步骤非常快速地完成,因为它无法安全地擦除底层块设备。除非您只是尝试并且不关心针对各种类型的取证攻击的安全性,否则在创建新的LUKS容器之前正确初始化它是至关重要的。将零写入映射容器将导致将强随机数据写入底层块设备。这可能需要一段时间,因此最好使用pv
命令来监控进度: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
)。 -
完成图形安装程序后,选择”continue testing”并打开终端。
-
找到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
-
在chrooted环境中创建一个名为
/etc/crypttab
的文件以包含此行,将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配置的更新。重新启动并测试正常模式和恢复模式。