如何将 Qemu guest console=tty0 重定向到主机 stdin/stdout?

如何将 Qemu guest console=tty0 重定向到主机 stdin/stdout?

我有一个具有以下配置选项的 Linux 内核:

CONFIG_CMDLINE_BOOL=y
CONFIG_CMDLINE="console=tty0 init=/init"
CONFIG_CMDLINE_OVERRIDE=y

我用这样的方式执行 Qemu:

qemu-system-x86_64 -nographic -kernel my-vmlinuz

这(正确地)显示没有输出,因为-nographic隐式地将来宾ttyS0(而不是tty0)附加到主机stdin/ stdout。我如何告诉 Qemu 将 guest 附加tty0到主机stdin/ stdout

参考:

答案1

我认为你不能。虚拟终端(tty1等)是在 VGA 文本模式之上实现的,它基本上为系统提供了一个内存映射的字符数组(+ 属性)。然后内核根据需要写入该数组。然而,文件流stdout本质上是线性的,因此它们并不完全兼容。

然而,您可以做的是使用qemu -curses来查看来宾的文本模式 VGA 输出;或者,输入console=ttyS0内核命令行,让来宾使用串行端口作为控制台。 (您可能还需要配置grub才能使用串行端口。)

答案2

我相信以下内容会对您有用:

CONFIG_CMDLINE="console=tty0 console=ttyS0,9600n8 init=/init"

这来自tldp 的远程串行控制台 HOWTO

也可以看看这个问题

相关内容