将根分区克隆到 dm-crypt 加密分区上

将根分区克隆到 dm-crypt 加密分区上

我在 25.93GB/62.43GB 分区上安装了 Gentoo Linux /dev/sda4。磁盘上的其他分区有 150MB/boot/dev/sda1未使用空间,另外两个分区上有 56,66GB 的未使用空间。

我计划使用 加密未使用的空间dm-crypt,将其格式化为 ext4,然后将我的安装迁移到其上,以破坏旧分区。我的问题是:

  • 这有可能吗?或者是否需要进行许多调整才能在加密卷上运行安装/dev/sda2

  • 这是一种有效的方法吗?考虑到我的 25.9GB Gentoo,如果我只是加密整个磁盘并再次安装 Gentoo(和所有软件包),对我来说是否会少一些麻烦?

  • 我应该使用encfs还是ecryptfs代替dm-crypt这里?他们会提供同等的安全保障吗?

  • 我应该使用什么算法来加密分区?我的处理器没有 AES-NI。

  • 我应该使用什么来将加密分区与另一个分区同步?有类似的东西吗dcfldd


从迁移的分区写入编辑:

  • 删除未使用的分区并制作新的未格式化分区后/dev/sda2,我运行:

    cryptsetup luksFormat /dev/sda2
    cryptsetup luksOpen /dev/sda2 encrypt
    pv /dev/zero > /dev/mapper/encrypt
    

    pv这里用于监视写零的进度,之后我将加密分区格式化为ext4 mkfs.ext4 /dev/mapper/encrypt

  • 为了同步分区,我rsync在从实时 USB 启动 PC 后使用了 YoMismo 的建议。但它不允许我进入chroot,我必须重新启动我的旧分区,然后chroot从那里开始。我在这个过程中运行:

    mkdir /tmp/old_partition /tmp/new_encrypt
    mount /dev/sda4 /tmp/old_partition
    mount /dev/mapper/encrypt /tmp/new_encrypt
    cd /tmp/new_encrypt
    rsync -av /tmp/old_partition/* .
    

    重新启动旧分区后/dev/sda4,打开/dev/sda2并安装虚拟内核文件系统:

  • 我做了一个/etc/crypttabroot UUID=<uuid of /dev/sda2> none luks

  • 我更改/etc/fstab为告诉我的根分区是UUID=<uuid of mapper>.
  • 我改变了/boot/grub/grub.conf:我root=<root>在行尾删除了kernel,并设置了一个加密设备crypt_root=UUID=<uuid> root=/dev/mapper/root
  • genkernel --install --luks initramfs在 luks 的支持下跑去制作新的 initramfs 。

现在我可以启动并运行它,唯一剩下的就是将旧分区点燃。

答案1

1.- 是的,这是可能的,但你必须做一些调整。

2.- 你不能加密整个磁盘,如果你想让你的系统启动,至少启动分区必须不加密(有人必须要求解密密码 -initrd- 并且你需要它不加密)。

3.-encfs有一些缺陷,你可以阅读它们这里。我会使用 dm-crypt 来完成这项工作。

4.- 没办法,也许是双鱼?

5.- 我会使用 Live CD/USB 来完成这项工作。我不知道你留下的空间是否足以容纳其他分区上的数据,如果是(分区未满)我会:

  • 首先你需要决定你想要什么样的分区方案。我假设你只需要 /、/boot 和 swap。因此 /boot 不需要弄乱,我还将假设未使用分区中剩余的空间足以容纳您想要放置在加密分区中的数据(在本例中为 / )。
  • 使用 life CD 启动您的系统。
  • 假设您的目标分区是 /dev/sdc1 ,cryptsetup luksFormat /dev/sdc1系统会要求您输入加密密码。之后打开加密分区,cryptsetup luksOpen /dev/sdc1 Enc将所有零写入其中dd if=/dev/zero of=/dev/mapper/Enc并创建文件系统mkfs.ext4 /dev/mapper/Enc
  • 现在挂载您的分区,复制文件并将根目录更改为新分区。

mkdir /tmp/O /tmp/D

mount /dev/sda4 /tmp/O

mount /dev/mapper/Enc /tmp/D

cd /tmp/D;rsync -av /tmp/O/* .

mount --bind /dev dev

mount --bind /proc proc

mount --bind /proc/sys sys

mount --bind /sys sys

chroot /tmp/D

mount /dev/sda1 /boot

- 用于blkid识别分区 UUID 并使用该信息修改 grub 配置文件和 fstab(根分区设备应为 /dev/mapper/root_crypt)。修改 /etc/crypttab 以便在那里引用新的加密分区。创建一条像root_crypt UUID=your/encrypted/dev/uuid none luks.grub-update grub-install到 grub 必须所在的位置,update-initramfs以便在 initrd 中更新新的更改。

如果我没有错过任何内容,那么您现在应该准备好了,除非您担心交换分区,如果您担心并且希望能够从休眠中恢复,则必须按照前面的步骤加密交换分区,而mkswap不是mkfs.ext4。您还需要将交换分区添加到 /etc/crypttab 修改 fstab 中,以便 /dev/mapper/name_swap_you_created_in_etc_crypttab 是交换分区的设备,并且update-initramfs.

相关内容