将 /lib 目录从 initramfs 更改为已挂载分区的 /lib

将 /lib 目录从 initramfs 更改为已挂载分区的 /lib

我想将从 initramfs 加载的 /lib 更改为已挂载分区的 /lib,理想情况下无需 rm initramfs 的 /lib,然后符号链接到新的 /lib。
这种方法的问题是,一旦我删除原始 /lib,/bin 中的二进制文件(特别是 busybox)就没有库可引用,因此后续链接将失败。
我需要符号链接新的 /lib 的原因是,我需要加载额外的模块,这些模块太大而无法包含在 initramfs 中(因为它会使整个内核膨胀)

是否有任何工具可以帮助我通过一次操作将 /lib 目录更改为符号链接?

或者有没有其他方法可以使我的二进制文件能够访问其他 lib 目录而不覆盖原始 /lib?

答案1

initrd 的大小限制并不多(我偶尔会往里面放 50 MB 的额外内容)。我相信 initrd 存储在转换完成后会被释放。所以……我想到了一些事情。您可以等到真正的 /lib 可用后再插入您的特殊用途模块(您可能想到了这一点)。

另一个选项是,根据内核命令行参数选择性地加载特殊用途模块。这样,您可以创建一个 grub 菜单,无论是否使用特殊模块都可以提供引导。

相关内容