在 64 位机器上创建 32 位 initramfs

在 64 位机器上创建 32 位 initramfs

我使用的是 64 位内核,并且想在 QEMU 中运行 32 位内核。一旦我有了压缩的内核映像,我尝试使用创建 initramfs 映像mkinitcpio,但这仅创建了一个具有 64 位代码的映像(mkinitcpio使用的 busybox 是 64 位的,其他可执行文件也是如此)。

我可以使用该gen_init_cpio程序(它是内核的一部分)并以其他方式获取 32 位可执行文件,但我更愿意避免这种情况并让程序决定内核在 rootfs 中需要什么。

有没有办法在运行 64 位内核时获取 32 位 initramfs 映像?

答案1

64 位系统不会生成 32 位 initramfs,因为它不需要它。所以你必须在 chroot 中安装 32 位发行版。

但这也可能不起作用,因为大多数 initramfs 生成器(包括mkinitcpio)都会进行模块自动检测。 initramfs 将仅包含您的特定硬件和设置所需的模块,它在其他任何地方都不起作用。最后,对于大多数 initramfs 生成器,您必须在启动的 VM 本身内运行它。

您可以禁用模块自动检测,但这样 initramfs 就会变得很大。一种折衷方案是在配置文件中手动指定所需的模块。

相关内容