一般来说,我希望启动 Linux 机器,以便持久存储不可变。当机器断电时,对文件系统所做的任何更改都会丢失。
这是针对硬件旨在运行单个应用程序的系统,并且(一旦通过初始配置)系统将始终以完全相同的配置启动,并且不保留上次运行的状态。
读完足够多的内容后,可以预期这是一个覆盖文件系统 (overlayfs),下层是 (完全配置的) 持久存储,上层是 tmpfs 或 ramdisk。 (看起来 tmpfs 更有可能。) 毫无问题地配置了一个 overlayfs,其中根目录 (/) 为下层,tmpfs 为上层 (并可正常工作)。
诀窍是在启动过程的早期覆盖根目录。
这里的复杂之处在于 Redhat 对 dracut 和 systemd 进行了一些重新发明,因此网络上的大多数答案并不完全适用。(Centos 源自 Redhat,或者现在有点相反——Fedora 也是如此。)Redhat 中的 initramfs 处理与其他所有人都有点不同。
希望得到一个答案,但为下一个人发布问题。:)
systemd 中似乎有支持。内核命令行上的参数“systemd.volatile=yes”似乎有可能(尽管第一次尝试启动失败)。Centos 8 附带 systemd 239,所以... 不太受支持?
也许可以使用 systemd-nspawn 在具有覆盖根的容器中启动应用程序,但目前还没有走这条路。最好在启动时进行覆盖。
寻找启动时根覆盖的最干净的方法。