从现有安装生成 QEMU 可启动内核

从现有安装生成 QEMU 可启动内核

我一直在尝试设置 QEMU 以仅提供控制台输出。到目前为止,我已经成功地使用了以下参数:qemu-system -curses -hda debian.img,其中 debian.img 是一个有效的 Debian 安装。没有使用其他与启动相关的参数。然而,(N)Curses 似乎有很多错误并且速度很慢,至少在 macOS 主机下是这样。

我发现有一种更好的方法来实现控制台、非 GUI 输出到启动 qemu 的终端,方法是使用-serial stdio -append "console=ttyAMA0"而不是-curses.-kernel但是,此选项要求您使用参数指定内核。有没有办法从我现有的 Debian 安装中提取可启动内核并将其提供给 qemu?我已经尝试从 复制 vmlinux /boot,并且也遵循本指南从操作系统中提取内核,但它们无法使用我现有的 debian.img 文件在 QEMU 下启动。我相信我可能还必须将 initrd.img 从我的操作系统提供给 qemu。

现在,是否可以继续使用现有的 debian.img 文件及其上完全正常工作的操作系统,同时使用该-kernel参数将(提取的)内核从该映像(或其他地方,如果需要)传递到 qemu? (对于 initrd.img 文件也是同样的问题) debian.img 文件上的来宾操作系统是 Debian Jessy。

答案1

如果您使用直接内核引导(通过QEMU 选项),您几乎肯定也-kernel想提供。它们可以从正在运行的模拟系统的目录-initrd中复制,或者您可以使用和使映像文件的分区可安装(并确保在再次启动模拟系统之前卸载它们)。一般来说,您还必须或类似。/bootlosetupkpartx-append "root=/dev/sda2 console=ttyAMA0"

另一种方法是将必要的内核参数附加到映像中的引导加载程序配置中。它不太灵活,但也许您实际上并不需要-append.您可能需要运行update-grub或类似的命令才能将console参数嵌入到实际的启动菜单中。在启动的系统中运行一下cat /proc/cmdline,看看是否真的生效了。

在任何一种情况下您都需要,但是一旦您不再需要图形窗口-serial stdio就将其替换。-nographic

相关内容