如何在 casper mount 之后使 initrd 中的文件可见?

如何在 casper mount 之后使 initrd 中的文件可见?

casper mount 后整个 / 会被替换,因此 /init 或 initrd 中的其他脚本生成的文件会消失。如何才能让这些文件在登录实时系统后可见?

如果需要的话我可以编辑 initrd 中的任何文件

答案1

我不知道在实际根文件系统挂载后,有什么方法可以访问 initramfs 根文件系统。你尝试访问的 initramfs 中是否有生成的特定文件?由于你提到卡斯帕我假设您正在启动 live-cd 映像。

如果您可以访问控制台,则可以在挂载实际根文件系统之前暂停启动过程。例如,添加内核参数break=bottom将在挂载实际根文件系统之前暂停启动过程,并在 initramfs 环境中打开救援 shell。

如果您对某些特定文件感兴趣,则(默认情况下)的内容/run/initramfs将在 initramfs 环境和引导环境之间保留。某些日志文件会写入那里。您可能能够添加一个钩子来将文件复制到那里。(编辑我认为整个/run文件系统都保留了下来)

编辑- 我找到了 Rob Landley 的几篇文章,它们为这个过程增添了更多色彩。它们都表明 initramfs 根目录的内容确实被破坏/删除了。

switch_root 所做的是从 rootfs 中删除所有文件(以释放内存),然后 chroot 到一个新的文件系统并在新的文件系统中执行一个新的 init 进程。

initramfs 是 rootfs:您既不能使用 pivot_root rootfs,也不能卸载它。相反,删除 rootfs 中的所有内容以释放空间(find -xdev / -exec rm '{}' ';'),使用新根覆盖 rootfs(cd /newmount; mount --move . /; chroot .),将 stdin/stdout/stderr 附加到新的 /dev/console,然后执行新的 init

由于 initramfs 是 ramfs,删除其内容会释放其使用的内存。

链接

相关内容