28

我正在尝试使用 qemu 调试 linux 内核的启动顺序,我正在运行的命令是:

  qemu -serial stdio -kernel <path to kernel> -hda <path to rootfs> -append "root=/dev/sda terminal = ttyS0"

在引导期间,所有内核消息都会打印到 QEMU 窗口。只有在启动完成后,我才会将提示返回到运行 QEMU 的终端。

现在我可以开始使用我正在运行的内核终端并在终端中看到输出,而不是在 QEMU 窗口中。

如何将包括引导消息在内的所有消息发送到我的终端而不是 QEMU 窗口(因为我无法在该窗口中向上滚动..)?

4

3 回答 3

43
  1. 移除-serial stdio参数
  2. 添加-nographic参数
  3. 并将内核参数更改terminal = ttyS0console=ttyS0. 这应该可以解决问题。

qemu -nographic -kernel ./bzImage -hda ./image.hda -append root=/dev/sda console=ttyS0

您可能想检查我用于内核开发的脚本:https ://github.com/arapov/wrap-qemukvm (它不是很“生产”,但您可以在qemu cli那里找到有用的参数)

于 2013-10-24T14:53:45.353 回答
11

将此Redirect Qemu 控制台引用到文件或主机终端? 获取 qemu 和终端上的日志 .use "console=ttyAMA0,115200 console=tty highres=off console=ttyS0"

于 2013-10-24T17:26:57.920 回答
2

将 Qemu 输出重定向到终端可能会导致一些问题(我个人不喜欢它)。您可以使用诸如-noframe(这将创建新窗口但不会创建任何窗口框架)之类的选项或-curses在终端上体验 qemu 输出。

于 2013-10-24T12:10:30.727 回答