Qemu

在 64 位機器上創建 32 位 initramfs

  • July 8, 2017

我在 64 位核心上,想在 QEMU 中執行 32 位核心。獲得壓縮核心映像後,我嘗試使用創建 initramfs 映像,mkinitcpio但這僅創建了一個具有 64 位程式碼的映像(mkinitcpio使用的 busybox 是 64 位的,其他執行檔也是如此)。

我可以使用作為gen_init_cpio核心一部分的程序並以其他方式獲取 32 位執行檔,但我寧願避免這種情況,讓程序決定核心在 rootfs 中需要什麼。

在執行 64 位核心時,有什麼方法可以獲取 32 位 initramfs 映像?

64 位系統不會生成 32 位 initramfs,因為它不需要它。所以你必須在 chroot 中安裝 32 位發行版。

但這也可能不起作用,因為大多數 initramfs 生成器,包括mkinitcpio,都進行模組自動檢測。initramfs 將僅包含您的特定硬體和設置所需的模組,它不會在其他任何地方工作。最後,對於大多數 initramfs 生成器,您必須在已啟動的 VM 本身內執行它。

您可以禁用模組自動檢測,但 initramfs 會很大。一種折衷方案是在配置文件中手動指定所需的模組。

引用自:https://unix.stackexchange.com/questions/377226