如何将/home 文件夹移动到 luks 加密的外部驱动器?

如何将/home 文件夹移动到 luks 加密的外部驱动器?

当前系统将采用全盘加密,我想将/home文件夹移动/映射到同样使用 LUKS 加密格式化的外部硬盘驱动器。这可能吗?

Linux 更新总是破坏我的所有内容。我认为这可能与 FDE 有关。我只想能够将我的/home数据保存、加密并放在另一个硬盘上。

sudo lsblk

(在这种情况下,sda1 将是 /home 所在的外部加密驱动器)

名称 MAJ:MIN RM 大小 RO 类型 安装点
sda 8:0 0 931.5G 0 磁盘  
└─sda1 8:1 0 931.5G 0部分  
  └─luks-39afxxxxxxxxxxxxxxxxxxxx 252:3 0 931.5G 0 crypt /media/user/My_external_drive
sdb 8:16 0 931.5G 0 磁盘  
─sdb1 8:17 0 487M 0 部分 /boot
─sdb2 8:18 0 1K 0 部分  
└─sdb5 8:21 0 931G 0部分  
  └─sda5_crypt 252:0 0 931G 0 加密
    ─xubuntu--vg-root 252:1 0 919.1G 0 lvm /
    └─xubuntu--vg-swap_1 252:2 0 11.9G 0 lvm [交换]
sr0 11:0 1 1024M 0 rom   

猫/etc/fstab

# 安装期间 /boot 位于 /dev/sda1 上
UUID=f2c4a3ef-xxxx-xxxx-xxxx-xxxx /boot ext2 默认值 0 2
/dev/mapper/xubuntu--vg-swap_1 无 交换 sw 0 0

sudo cat /etc/crypttab

sda5_crypt UUID=4426b1a1-xxxx-xxxx-xxxx-xxxx none luks,丢弃

命令 blkid

/dev/mapper/sda5_crypt:UUID="NKYcrR-xxxx-xxxx-xxxx-xxx-xxxx-xxxx" TYPE="LVM2_member"
/dev/mapper/xubuntu--vg-root:UUID="fffe201d-xxxxxxxxxxx" TYPE="ext4"
/dev/sda1:UUID="39af7a74-xxxx" TYPE="crypto_LUKS" PARTUUID="04f839ad-xxxxxxxxxxxxxxxxxxxxxxx"
/dev/sdb1:UUID="f2c4a3ef-xxxx" TYPE="ext2" PARTUUID="df4931bf-01"
/dev/sdb5:UUID="4426b1a1-xxxxxx" TYPE="crypto_LUKS" PARTUUID="df4931bf-05"
/dev/mapper/xubuntu--vg-swap_1: UUID="2abaef03-xxxxxx" TYPE="swap"

***我想将外部 luks 加密驱动器用作 /home****

/dev/mapper/luks-39axxxxxxxxxx:LABEL="My_external_drive" UUID="d7f7xxxxxxxxxxxxxxxxxxx" TYPE="ext4"

答案1

迁移 /home 和其他明显问题

首先,您的根分区似乎/dev/mapper/xubuntu--vg-root未在 中配置/etc/fstab。这需要修复。其次,您的/boot分区相当小。请认真删除旧内核,否则一旦/boot分区填满到 100%,您将无法安装更新。创建更大的启动分区并将主分区放在单独的驱动器上,可以通过在安装过程中手动分区轻松完成。请参阅如何操作我的帖子在这里如果您有兴趣,但它仅适用于新安装。

我应该能够帮助您进行迁移并将您的根分区恢复到/etc/fstab。由于您已表示您已更改了其中一个或多个文件,因此我假设您已经知道如何以 root 身份或使用 sudo 编辑文件。您需要以这种方式进行下面提到的任何文件更改。

抓取系统映像:
我们将进行一些重大的系统更改。如果您现在有一个“正常运行”的系统,您应该使用类似克隆兹拉抓取系统映像进行恢复,以防万一出现问题!虽然这不是绝对必要的,但我强烈建议它!

修复/etc/fstab
编辑/etc/fstab并在顶部添加一行如下:
/dev/mapper/xubuntu--vg-root / ext4 errors=remount-ro 0 1
如果没有该行,您的计算机将无法启动。

迁移/home
这有几个部分。您必须将所有文档移动到外部驱动器。您必须更新文件,/etc/crypttab以便系统可以在启动期间解密外部驱动器。这意味着您必须输入密码来解密内部磁盘,然后您必须输入另一个密码来解密外部磁盘。有几种方法可以只提供一个密码来解锁两个磁盘,但我不会在这里讨论这个问题。如果您想了解更多信息,请阅读这里这里。您还必须进行更新/etc/fstab,以便您的系统知道如何挂载您的主目录。最后,您需要更新您的 initramfs。

  1. 将主目录的内容复制到外部驱动器。在终端中,运行以下命令,根据需要更改外部驱动器的路径。每个命令都可能需要几分钟才能运行。
    • 创建哈希值,以便稍后验证复制文件的完整性。这不是绝对必要的,但能够确认复制过程中没有损坏任何内容是很好的。
      sudo find /home -type f -exec md5sum '{}' >> $HOME/checksums.md5 \;
    • 将主目录中的所有内容复制到外部驱动器
      sudo cp -ar /home/. /media/$USER/My_external_drive
    • 如果您创建了所有文件的校验和,请继续检查它们。如果您已登录帐户,请注意,在创建校验和和检查复制文件之间,某些文件可能会自然发生变化。如果出现任何故障,请确保它们不是重要文件。
      cd /media/$USER/My_external_drive
      sudo md5sum -c checksums.md5 | grep "FAILED"
    • 您还需要删除所有内容,/home以便将其用作挂载点,但我们不想从本地 xubuntu 安装中执行此操作。我们将等到我们准备好重新启动并使用实时 CD/USB 时再执行此操作。
  2. 更新/etc/crypttab
    打开/etc/crypttab进行编辑并添加以下行,将 x 替换为外部驱动器上 LUKS 分区的 UUID 的实际值。
    luks_home UUID=39af7a74-xxxx none luks,discard
  3. 更新/etc/fstab以包含新/home分区:
    打开/etc/fstab进行编辑并将以下行添加到末尾
    /dev/mapper/luks_home /home ext4 defaults 0 2
  4. 更新你的 initramfs
    sudo update-initramfs -k all -u

检查事项:
你的/etc/fstab文件现在看起来应该是这样的:

/dev/mapper/xubuntu--vg-root / ext4 错误=remount-ro 0 1
# 安装期间 /boot 位于 /dev/sda1 上
UUID=f2c4a3ef-longstringofnumbers /boot ext2 默认值 0 2
/dev/mapper/xubuntu--vg-swap_1 无 交换 sw 0 0
/dev/mapper/luks_home /home ext4 默认值 0 2

你的/etc/crypttab文件现在看起来应该是这样的:

sda5_crypt UUID=4426b1a1-longstringofnumbers none luks,丢弃
luks_home UUID=39af7a74-xxxx 无 luks,丢弃

如果发现文件有任何问题/etc/crypttab并进行了更改,请务必update-initramfs从第 4 点再次运行命令。

重新启动进入实时操作系统
确定已复制所有需要的内容后,就可以删除所有内容,/home以便将其用作挂载点。获取实时 CD/USB,然后从中启动。

  • 启动后,您需要解密并安装内部磁盘上的 LUKS 分区。运行以下命令执行此操作,并在提示时输入加密密码

dev = $(sudo lsblk | grep -B1“ sda5_crypt”| grep -oP“ sd [az] \ d \ b”| awk'{print“ / dev /” $ 1}')sudo cryptsetup luksOpen $ dev internal_crypt sudo mount / dev / mapper / xubuntu--vg-root / mnt

  • 现在你的旧主分区应该位于 /mnt/home。让我们删除里面的所有内容
    sudo rm -fr /mnt/home/*

重新启动进入本地安装:
此时,您可以重新启动了。清空旧主目录后,关闭实时操作系统并重新启动系统。您的系统现在应该要求输入两个密码,一个用于解密内部驱动器,一个用于解密外部驱动器。假设您正确输入了这两个密码,您的系统应该可以启动,并且您的主目录应该位于您的外部驱动器上。

验证外部驱动器是否正在用作/home
如果所有内容都与你留在主目录中的位置基本一致,那么一切就都好了。你可以mount | grep "/home"在终端窗口中输入。它应该显示你的外部驱动器上的 LUKS 分区已安装在/home

相关内容