在 RAM 中构建具有可写层的只读 Linux 系统

在 RAM 中构建具有可写层的只读 Linux 系统

我需要将 RHEL 6.6/7.0 启动为只读模式,并且仅在 RAM 中具有可写层。我相信这与 Live CD 的工作原理类似,文件系统是只读的,但其某些部分在加载到 RAM 后是可写的。在这里,写入文件系统的任何更改都会在重新启动时丢失(因为只有 RAM 在可写层中更新)。

在浏览网络时,我还没有找到在没有帮助工具的情况下配置我自己的“live CD”的指南,以便我可以在现有安装的系统中模拟此过程。

有谁知道我可以在哪里获得一些资源来构建我自己的 live CD 或制作仅在 RAM 中具有可写层的只读 Linux?

答案1

好的,所以我在 SD 卡上确实有一个工作只读系统,允许将读/写开关设置为只读模式。我要回答我自己的问题,因为我有一种感觉,我会再次在这里寻找步骤,希望这能帮助其他人。 在 Red Hat Enterprise Linux 6.6 系统

上将各个目录设置/etc/fstab为只读时,我发现了该文件/etc/sysconfig/readonly-root.这激起了我对该文件的用途以及与之相关的任何辅助信息的兴趣。简而言之,该文件包含一行“ READONLY=no”。更改此行会自动将大部分根文件系统加载为只读,同时保留对各个目录的必要写入操作(目录和文件作为 tmpfs 加载)。我必须做的唯一更改是通过目录将/home/root和其他一些目录设置为可写/etc/rwtab.d,并修改 /etc/fstab 以将根文件系统加载为只读(将 root 的“ defaults”更改为“ ro”)。一旦我READONLY=yes在文件中设置了“” /etc/sysconfig/readonly-root,并通过设置了必要的可写目录/etc/rwtab.d以及fstab更改,我就能够让系统以只读方式加载,但将可写目录加载到RAM中。

有关更多信息,这些是我使用的资源:

另外,我在 Red Hat Enterprise Linux 7.0 上进行了快速验证,该文件仍然存在并且可以工作。我的测试环境是虚拟机中的CentOS 6.6和7.0以及VME单板计算机上的RHEL 6.6和7.0。

注意:一旦根为只读,则无法对根系统进行任何更改。例如,您无法使用 yum 安装软件包并让它们在重新启动后保留。因此,为了打破只读根,我添加了一条删除 rhgb 和 Quiet 的 grub 行(这仅用于调试启动问题,如果需要,您可以保留它们),并添加“ init=/bin/bash”。这使我可以进入终端。到达终端后,我输入“ mount - / -oremount,rw”以使系统可写。一旦可写,我修改(使用vim/etc/sysconfig/readonly-root为“ READONLY=no”并重新启动系统。这使我可以通过关闭只读来对系统进行维护。如果你和我一样使用的是SD卡,那么需要将SD卡上的读/写开关设置为可写。

答案2

是的,这就像 Live CD 的作用。这是使用一种特殊的文件系统驱动程序来完成的,该驱动程序旨在将多个文件系统相互叠加 - 在本例中,是带有 RAM 磁盘的只读文件系统。

覆盖文件系统有很多不同的选择 - 尝试搜索 UnionFS、aufs 和 overlayfs 以了解您的选择是什么,以及它们之间的权衡是什么。

答案3

为了跟进 Kinetic Arc 提供的答案,在后续重新启动时修改系统的更简单方法是在内核命令行中添加“noreadonly”。如果您不希望经常这样做,那么只需捕获 grub 并手动添加它可能就足够了。在开发只读系统时,我们在 grub.conf 中添加了一个条目,并稍微增加了超时时间。一旦系统映像的开发完成,我们就会在分发映像之前取出该条目。

相关内容