如何直接在控制台中启动qemu(在curses或SDL中*不*)


18

我似乎还记得在禁用图形窗口的情况下仅能通过终端仿真器输出来启动qemu的情况。在这里,我并不是说使用ncurses接口,那不是很好,但是我希望输出直接流入我的终端,以使剪切和粘贴更加容易。

我试过了:

qemu -nographic binary.img # simply no display
qemu -curses binary.img # nice text output, but not directly flowing in the terminal
qemu -noframe -curses binary.img # same as above
qemu -nographic -curses binary.img

我想可以接受的解决方法是,我可以调整curses控制台的大小以适合我使用的终端。现在很烦人,因为它不适合终端大小...

qemu -curses  binary.img



           SeaBIOS (version 1.7.0-20120603_194846-gandalf)



           iPXE (http://ipxe.org) 00:03.0 C900 PCI2.10 PnP PMM+07FC86A0+07F886A0 C900


           Booting from Hard Disk...
           [...]

注意显示如何缩进12个空格?烦死了 :)


使用80柱接线柱?
迈克尔·汉普顿

我本可以发誓有办法让这种情况正常进行,也许我不记得这件事了……
anarcat


Answers:


18

这是个老问题,但人们可能仍然会对它感兴趣。

短答案:

qemu -nographic -serial mon:stdio -append 'console=ttyS0' binary.img

ttyS0在大多数PC上有效。这在ARM系统上会有所不同。

然后,串行端口和QEMU在您的输出上复用。您可以使用来在它们之间切换ctrl-A + C + ENTER

长答案:请查看此博客,它很棒。


1
似乎对我来说没有序列工作。
Ciro Santilli新疆改造中心法轮功六四事件2015年

是的,在最新的qemu上似乎如此,了解您还可以在stdio上多路复用串行+ qemu控制台仍然很有趣
Fred

1
不幸的是,这不会重定向任何BIOS输出,包括实模式代码使用的int 0x10输出。只有在Linux内核启动足以打开串行端口后,您才开始获取输出。
大卫

@DavidGiven我想这是BIOS代码(是SeaBIOS,不是qemu正确的)实际上如何处理 0x10“输出”的问题。
DepressedDaniel

您还可以添加console=ttyS0GRUB_CMDLINE_LINUX_DEFAULTin /etc/grub(确保稍后再致电update-grub)以使其自动进行。
史蒂夫(Steve)

3

安装SGABIOS -ISTR,使用最新的Qemu版本时,它将自动使用它-nographic


奇怪的是,这似乎并没有打包在Debian中,所以我怀疑这是我使用的东西……
anarcat 2013年

1

您可以更新GRUB,以将所需的选项传递给内核。我正在使用Ubuntu 18.04,并且执行以下操作:

在来宾操作系统中更新grub:

  • sudoedit /etc/default/grub
  • 更改GRUB_CMDLINE_LINUX=""GRUB_CMDLINE_LINUX="console=tty0 console=ttyS0,9600n8"
  • sudo update-grub

使用以下方法重新启动来宾操作系统:

qemu-system-x86_64 \
  -drive file=ubuntu-18.04-live-server-amd64.img.qcow2,format=qcow2 \
  -nographic \
  -m 4G \
;

我建议也添加-nic user,hostfwd=tcp:127.0.0.1:2222-:22或类似选项,这将启用ssh连接,通过ssh -p 2222 localhost它可以提供比控制台更好的界面。

控制台选项是从tldp的远程串行HOWTO复制


问题不在于如何配置grub,而是更多的qemu。但我相信,正如第一个答案所说,那-nographic是正确的。感谢您的支持!:)
anarcat
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.