我有一个 ARM 服务器,我想用包含 LUKS 密钥文件的 USB 闪存驱动器启动(而不是从启动),需要该文件来解密我连接到该驱动器的硬盘驱动器。因此,为了运行 /etc/crypttab (解密驱动器),我需要先安装 USB 才能安装驱动器(fstab 在 crypttab 之后运行)。如何在 crypttab 启动之前挂载分区?在 systemd 和 Linux 4.4 上。
为了清楚起见:
- 首先,我希望将 USB 驱动器分区(假设为 /dev/sdb1)安装在 /mnt/usb (未加密)
- 然后,使用 crypttab 使用 /mnt/usb/mykeyfile 处的密钥文件解锁其中一个驱动器上的加密分区
- 然后,将文件系统挂载到 /mnt/crypt_fs
答案1
我的解决方案有点hacky,但它有效:我在 mqueue 之前创建了一个 systemd 服务(只是一个随机服务,允许我在 fstab .mount 单元之前使用 /dev/sd* ),它基本上做了 crypttab 会做的事情但以单一命令的形式。然而,systemd 不会等待我的服务完成,并且在它登录时,所以我只是制作了一个 shell 脚本,我将按需运行 boot [first] sleep 10 (或类似的东西)以确保解密已完成完成然后[第二]在现在映射的设备上安装子卷,然后[第三]启动需要使用 fstab HDD 的所有服务(pihole、apache、gitea 等)systemctl start myservice
,因此 100% 确定 HDD 是在服务器实例启动之前安装。再说一遍,有点 hacky,但我不太习惯 systemd,我使用 openrc 因为它是 gentoo 的默认设置,老实说我不太在意,无论如何它都会一直打开,反正也不需要重新启动系统。我稍后可能会清理它,但现在没关系。