将 FDE 安装迁移到未加密分区

将 FDE 安装迁移到未加密分区

我最近安装了 Ubuntu 12.10,它需要密码才能启动(我使用加密文件系统安装它)。

我是否必须重新安装才能更改为标准未加密文件系统?

答案1

如果 Ubuntu 在启动时要求输入加密密码(即在显示登录屏幕之前的文本控制台上),则表明使用了全盘加密方法。(有多种方法可以做到这一点,但我将保持答案的通用性。)加密由文件系统和物理硬盘之间的额外软件层处理,而不是文件系统本身。

没有简单的方法或工具可以撤消此操作。只要了解一些有关 Linux 系统工作原理的知识,就可以做到这一点。您必须将整个文件系统(或所有文件)移动到另一个分区(具有足够的可用空间)或外部硬盘。然后,删除加密容器,并重新创建不加密的文件系统。最后,确保引导加载程序正确识别新文件系统,然后mount -a再重新启动。

如果可能的话,最好避免这个耗时且容易出错的过程。只需重新安装即可。对于新用户来说,这是最快和最安全的选择。

PS:您很有可能可以更改加密密码,可能是空字符串。然后解密只需按 Enter 键。也许您可以更进一步,抑制(现在无用的)密码提示。但是,这不会禁用加密。数据仍将被加密,尽管加密将毫无用处,因为密钥很容易被猜出。

答案2

下面是我有效的解决方案。请记住,我不是 Linux 专家,所以这可能不是最好的解决方案。无论如何都找不到更好的解决方案。

将 FDE 安装迁移到未加密分区

笔记: 每当我说的时候,我的意思是

/dev/sda1 - boot partition
/dev/sda5 - encrypted partition
/dev/sda3 - clean non-encrypted EXT4 partition
/dev/sda2 - my newly created swap partition

从加密的根文件系统复制数据

从实时 CD 启动。我使用的是 Ubuntu 13.10 32 位桌面 ISO。

挂载你的分区:

sudo cryptsetup luksOpen /dev/sda5 crypt1

将源数据复制到目标分区并将 dd PID 保存到 pid 变量:

sudo dd if=/dev/ubuntu-vg/root of=/dev/sda3 bs=1M & pid=$!

这将使用 USR1 信号和 dd 结果状态对每个第二个 dd 进程进行 ping 操作:

while sudo kill -USR $pid; do sleep 1; done

监测 DD 的替代方案

如果你不喜欢上面的“while 方法”,你可以使用 watch。打开不同的终端窗口并获取 PID:

pgrep -l '^dd$' | awk '{ print $1 }'

替换为您的进程 ID:

watch kill -USR1 <pid>

您应该每 2 秒在 dd 终端中看到一次输出。

配置新的根文件系统和分区

完成后,您可以挂载未加密的分区以查看是否正常:

sudo mount /dev/sda3 /mnt

之后卸载你的分区:

sudo umount /dev/sda3

释放 crypt 分区:

sudo cryptsetup luksClose /dev/sda5

运行 gparted。删除您的 LUKS 分区(扩展分区和逻辑分区)。调整 /dev/sda3 的大小并向左移动。创建交换分区。

注意:将 /dev/sda3 移到左边可能需要很长时间。对我来说,在 120GB 分区和 SSD 驱动器上花了 30 分钟。如果您有 500GB 以上的硬盘,请做好等待几个小时的准备。您可能希望在分区之前创建交换,而不是移动 /dev/sda3。

在交换分区上创建一个新的交换文件系统:

sudo mkswap /dev/sda2 

并将 UUID 存储在某处。

获取根分区 UUID:

sudo blkid /dev/sda3

编辑 fstab:

sudo nano /etc/fstab

删除或注释掉 overlayfs 和 tmpfs 行。

添加行替换 blkid 结果:

UUID=<uuid_root> /  ext4 errors=remount-ro 0 1
UUID=<uuid_swap> none swap sw 0 0

删除文件:

rm /etc/crypttab

更新您的 initramfs 以避免出现“cryptsetup:evms_activate 不可用”等错误:

sudo -i
mount /dev/sda3 /mnt
mount -t proc none /mnt/proc
mount -o bind /sys /mnt/sys
mount -o bind /dev /mnt/dev
mount /dev/sda1 /mnt/boot
chroot /mnt /bin/bash
apt-get remove --purge cryptsetup
update-initramfs -u -k all

最后的说明和故障排除

对我来说,这种方法很管用,但是按照上述步骤操作可能对你不起作用。在我弄清楚 update-initramfs 方法之前,我多次重新安装内核,也修改了 grub。但是你的情况应该不会如此。请记住,上述说明可能会删除你的数据,因此请小心谨慎,不要备份继续进行。

以防万一您遇到内核问题(chrooted 和 /boot 挂载):

uname -r
sudo apt-get install --reinstall linux-image-3.X.Y-ZZ-generic

当然,用 uname 中的内核日期替换 linux-image-3.XY-ZZ。

或 GRUB (在 chroot 之外):

sudo add-apt-repository ppa:yannubuntu/boot-repair && sudo apt-get update
sudo apt-get install -y boot-repair && (boot-repair &)

更多细节:https://help.ubuntu.com/community/Boot-Repair

祝你好运

答案3

如果可以保留加密,但要关闭密码提示,一个更简单的方法是设置一个简单的密码,如“密码”,然后将该简单密码以明文形式保存在 initramfs 中。禁用 LUKS 加密密码

本质上,添加一个钩子脚本,该脚本又将“keyscript”添加到 initramfs。通常这些脚本用于通过 Bletooth、从 USB 棒等获取密码,但在这种情况下,只需让它打印简单的密码即可。

答案4

@pattivacek 的简短回答对我来说很管用。为了摆脱开始屏幕上的“输入您的密码”部分 - 我刚刚添加了

apt purge cryptsetup

在那之后。

相关内容