如何在 Red Hat / Fedora Core 中挂载 root aufs?

如何在 Red Hat / Fedora Core 中挂载 root aufs?

我正在尝试设置一台运行 Red Hat EL(实际上是 Scientific Linux,但有相同区别)的虚拟机,其中根文件系统受到保护且不可写入。我想使用联合挂载来实现这一点奥夫斯也就是说,可写的文件系统(在不同的虚拟硬盘上)覆盖在根文件系统上。

有没有关于这个的 HOWTO?我已经安装了 aufs 模块,并且能够挂载联合文件系统,但诀窍是针对根文件系统执行此操作。

我见过为 Debian/Ubuntu 风格发行版编写的 initramfs 脚本 help.ubuntu.com/community/aufsRootFileSystemOnUsbFlash,它在 /init 脚本中执行此类操作:在挂载真实根之前,受保护的根会以只读方式挂载在某处,覆盖文件系统会以读写方式挂载在其他地方,创建并挂载联合文件系统,然后联合挂载成为真实根。因此,原始受保护的根文件系统永远不会以读写方式挂载。

我想知道如何在 Red Hat 发行版的 nash /init 脚本中执行此操作。

更具体的问题:nash 命令“setuproot”和“switchroot”到底起什么作用?nash(8) 的手册页用一个参数记录 switchroot,但我的 /init 脚本在调用它时没有任何参数。

(动机:虚拟机将受到软件故障注入;我想保护根文件系统免受故障系统的影响,以便我可以快速将虚拟机重新启动到无故障状态。)

谢谢!!

PS:是的,我可以下载一些 LiveCD 并查看它在那里是如何完成的,但我认为应该有人写一个我的 Google 搜索技能尚未发现的 HOWTO。

答案1

initrd 包含一个 gzip 压缩的 cpio 转储,在 init 期间将其放入 ramdisk 中。Setuproot 加载任何必要的模块(包含在 initrd 中),通常用于 LVM 之类的东西,填充 /dev(initrd 包含有限的 /dev)。Switchroot 将 cpio 存档转移到真正的根文件系统。

纳什是极其有限。每个二进制文件都必须是静态的,编写脚本几乎是不可能的,等等。 可能会有帮助(构建脚本在他的 SVN 仓库中)。

相关内容