我试图用qemu调试linux内核的启动顺序, 我正在运行的命令是:
qemu -serial stdio -kernel <path to kernel> -hda <path to rootfs> -append "root=/dev/sda terminal = ttyS0"
在引导期间,所有内核消息都将打印到QEMU窗口。 只有当引导完成后,我才会将提示返回到终端,我在QEMU中运行。
现在我可以开始使用我正在运行的内核终端并在终端中查看输出,而不是在QEMU窗口中。
如何将所有消息(包括引导消息)发送到终端而不是QEMU窗口(因为我无法在该窗口中向上滚动..)?
答案 0 :(得分:35)
-serial stdio
参数-nographic
参数terminal = ttyS0
更改为console=ttyS0
。这应该可以解决问题。 qemu -nographic -kernel ./bzImage -hda ./image.hda -append root=/dev/sda console=ttyS0
您可能需要检查我用于内核开发的脚本:https://github.com/arapov/wrap-qemukvm(它不是非常“生产”,但您可以在那里找到有用的qemu
cli
参数)
答案 1 :(得分:10)
参考此Redirect Qemu console to a file or the host terminal?
获取qemu和终端上的日志.use
"console=ttyAMA0,115200 console=tty highres=off console=ttyS0"
答案 2 :(得分:3)
将Qemu输出重定向到终端可能会导致一些问题(我个人不喜欢它)。您可以使用-noframe
之类的选项(这将创建新窗口,但不会创建任何窗口框架)或-curses
来体验终端上的qemu输出。