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
用库存内核启动它。
答案 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在配置内核时你必须提到名称,否则它将默认为无