我可以以 root 身份加载和挂载第二个 initramfs 来替换原来加载的 CentOS 7 LiveCD 吗?

我可以以 root 身份加载和挂载第二个 initramfs 来替换原来加载的 CentOS 7 LiveCD 吗?

如果这个问题需要重新措辞,请告诉我;我一直在阅读有关 Linux 和 Systemd 的最低负载级别。

我目前正在处理 grubx64.efi 中的一个限制 - 它无法分配 1.2 GB 的初始 RAM 磁盘,即我公司的 LiveCD 的大小。

我的解决方案是先加载一个较小的 LiveCD ramdisk,一个大约 300 MB 的自定义 initrd,然后在该自定义 initrd 中将其设置为加载 1.2 GB 的“真实”LiveCD,将其安装为根文件系统,然后删除旧的。

我一直在研究 Systemd 和 Linux 启动过程的工作原理,试图弄清楚如何在 CentOS 7 中执行此转换,但要调用的确切命令和进行编辑的位置对我来说并不明显。

这可以手动完成吗?

答案1

在与 Grub 邮件列表反复沟通后,我发现可以使用内核参数从远程服务器挂载 squashfs 映像。

我设置了旧版和 EFI PXE,以使用 CentOS 7.4 ISO(内核 3.10.0-693)的 PXEBOOT 目录中的内核和 initrd。它们加起来大约有 60 MB 左右。

然后,我将想要实际使用的根文件系统中的 squashfs.img 文件放在同一台服务器上可通过 http 访问的目录中。

然后,我使用 2 个内核参数(邮件列表向我展示)让 CentOS 内核将 squashfs 映像挂载为根文件系统;内核足够聪明,知道这live:意味着什么,并在 RAM 中创建一个临时(非常脆弱 - 还没有弄清楚那部分;1 GB 的写入会导致它变为只读)文件系统,用于进行基本的读/写操作。我将这些参数添加到 PXE 菜单项:

rootfstype=auto root=live:http://path/to/squashfs.img

就是这样。这就是我所缺少的魔力。

相关内容