使用qemu使用自定义内核启动OpenSUSE(或任何其他操作系统)?

时间:2013-10-05 19:03:43

标签: linux unix linux-kernel operating-system qemu

Duplicate; 找不到答案,所以在这里发帖。

我希望将OpenSUSE作为guest来运行,并在我的主机上运行自定义内核映像。我在尝试:

$ qemu-system-x86_64 -hda opensuse.img -m 512 -kernel ~/kernel/linux-git/arch/x86_64/boot/bzImage -initrd ~/kernel/linux-git/arch/x86_64/boot/initrd.img -boot c

但它会引导到BusyBox。使用uname -a显示Linux(无)。此外,使用-append "root=/dev/sda"(如上面的链接所示)似乎不起作用。如何告诉内核映像使用OpenSUSE启动?

我在opensuse.img中安装了OpenSUSE,并且:

$ qemu-system-x86_64 -hda opensuse.img -m 512 -boot c

用库存内核启动它。

2 个答案:

答案 0 :(得分:0)

大多数虚拟机都是从磁盘映像或ISO文件启动的,但KVM可以直接将Linux内核加载到跳过引导加载程序的内存中。这意味着您不需要包含内核和引导文件的映像文件。相反,您可以像这样直接运行内核:

qemu-kvm -kernel arch / x86 / boot / bzImage -initrd initramfs.gz -append“console = ttyS0”-nographic

这些标志直接从主机文件系统加载内核和initramfs,而无需生成磁盘映像或配置引导加载程序。

可选的-initrd标志为内核加载initramfs以用作根文件系统。

-append标志添加内核参数,可用于启用串行控制台。

-nographic选项将虚拟机限制为仅一个串行控制台,因此将所有测试内核输出保留在终端而不是图形窗口中。

请查看以下链接。它有更多的信息[感谢Guy写了所有] http://blog.vmsplice.net/2011/02/near-instant-kernel-development-cycle.html

答案 1 :(得分:0)

通常用于像树莓派或任何棋盘一样的手臂架构。

使用自定义内核启动

qemu-system-arm -kernel kernel-qemu -cpu arm1176 -m 256 -M versatilepb -no-reboot -serial stdio -append "root=/dev/sda2 panic=1" -hda 2013-05-25-wheezy-raspbian.img

其中-hda你的suse.img在这里你必须找到你的rootfs存在你可以检查的分区

fdisk -l你的形象

如果只有一个分区然后传递/ dev / sda或者它在第二个/ dev / sda2

我认为这里不需要initrd映像。通常它会挂载主rootfs所以当你启动它的主rootfs时就没有必要了。

试试这个 qemu-system-x86_64 -hda opensuse.img -m 512 -kernel ~/kernel/linux-git/arch/x86_64/boot/bzImage -append "root=/dev/sda" -boot c

注意检查rootfs存在于哪个分区,然后传递/ dev / sda *

我不确定你只是尝试上面一个。你也提到uname -a

给出linux none这是bcoz在配置内核时你必须提到名称,否则它将默认为无