![如何在 Arch Linux 上加密实时 rootfs](https://linux22.com/image/1485638/%E5%A6%82%E4%BD%95%E5%9C%A8%20Arch%20Linux%20%E4%B8%8A%E5%8A%A0%E5%AF%86%E5%AE%9E%E6%97%B6%20rootfs.png)
我在 VPS 上运行 Linux Arch 系统。rootfs 安装在 LVM 分区上。我想在这个分区上覆盖一个加密容器,然后在其上重新安装 rootfs,并通过 ssh 在启动时启用 ssh 解锁。我很乐意丢弃现有 rootfs 的所有内容并从头开始创建一个新的 rootfs。
我正在尝试按如下方式进行:
- 在 /tmp/newroot 中创建一个新的临时 rootfs
- chroot 到它
- 此时我想完全停止仍然挂在旧根目录(位于 lvm 分区上)的所有服务(其中一个是 sshd 本身),并从新根目录重新启动它们
- 在 lvm 分区上创建加密分区
- 在其上安装 arch Linux 并适当修改 intrafms
对于 1 和 2,我使用 archlinux 中提供的 bootstrap 映像维基百科. 4 和 5 有据可查(例如这里)。
我被困在第 3 步。在我 chroot 之后,使用定影器我可以看到有很多进程仍然挂在 lvm 分区上,这不允许我在其上覆盖加密容器,而且我不确定如何停止它们并从新的根目录重新启动其中一些进程。杀从原始根目录执行会停止它们,但在我这样做之前!我应该从新根目录重新启动其中一些(例如 sshd),否则我会把自己切断。我尝试从新根目录启动它们systemd,但它不起作用,因为它检测到我们处于 chroot 模式。我尝试通过命令行启动它们,没有生成任何错误,但是当我使用以下方式搜索进程时附言,他们不在那里。
有什么建议吗?谢谢
答案1
如果步骤 4 和步骤 5 中出现任何问题,您的系统将无法启动。您的 VPS 是否保证 100% 可用性?
如果“实时”(或在线)重新加密不是必需的,cryptsetup-reencrypt
则可以处理离线重新加密。它所需要的只是扩展 LV。目前正在进行一项工作以允许实时重新加密,但这还不稳定。额外的空间要求将保留,因为没有多少文件系统允许在线收缩。
如果使用额外的磁盘空间是可接受的解决方案,您可以创建一个 LUKS 加密物理卷,将其添加到卷组并使用 pvmove 将 rootfs 从未加密的设备移开。
我认为没有一个简单的解决方案可以转移到加密 LV。