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

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

我似乎记得能够仅使用终端仿真器输出来启动 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 个空格吗?很烦人。:)

答案1

老问题了,但它可能仍然引起人们的兴趣。

简短回答:

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

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

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

长答案:检查这个博客, 这很棒。

答案2

安装新加坡证券交易所-- ISTR 最新的 Qemu 版本在使用时会自动使用它-nographic

答案3

您可以更新 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

相关内容