0

重复; 找不到答案,所以在这里发布。

我想使用我的主机上的自定义内核映像以访客身份运行 OpenSUSE。我正在努力:

$ 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

用股票内核启动它。

4

2 回答 2

0

通常用于 raspberry pi 或任何板等 arm 架构。

使用您的自定义内核启动

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

where -hda your suse.img here 你必须找到你的 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 noneThis is bcoz 在配置你的内核时你必须提到名字,否则它将默认为无

于 2013-10-06T15:30:07.347 回答
0

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

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

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

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

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

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

看看下面的链接。它有更多信息 [感谢编写所有这些的人] http://blog.vmsplice.net/2011/02/near-instant-kernel-development-cycle.html

于 2013-10-05T20:11:41.423 回答