QEMU-KVM 命令行上的 Linux 虚拟化

QEMU-KVM 命令行上的 Linux 虚拟化

我最近发现它qemu-kvm有一个非常有前途的-curses选项,它不需要启动 X 窗口,而是显示一个来自客户的漂亮 ncurses 输出,适合从命令行(或者更令人满意的是,在屏幕会话中,甚至通过 ssh)管理 Linux 客户机。

所以我尝试了一下,发现我的 Arch Linux 客户机进入了“图形模式”,导致该功能无效。据我所知,问题在于客户机内核初始化了一个帧缓冲区,以允许高于 80x60 的字符分辨率(以及漂亮的图形)。因此,我开始寻找一种方法来阻止客户机内核启动帧缓冲区。我尝试了各种内核参数,,,,nomodeset(随后选择了而不是模式),但无济于事:每次都报告客户机处于“图形模式”(在fb=false初始启动菜单之后),我无法从主机上的命令行终端与客户机交互。vga=0x0FFvga=askVGAVESAqemu-kvm -curses

有没有简单的方法可以让客户机内核保持与启动时相同的模式(无帧缓冲区),而无需更改内核构建参数?如果没有,我应该更改哪些内核构建选项来编译不支持帧缓冲区的内核?有没有更好的方法可以在纯文本模式下从主机上的终端获取 VM 登录(例如,适合在主机上的屏幕会话中运行),而无需在客户机上运行 sshd?

答案1

因此,需要禁用的底层模块是fbcon,但是 Arch 的内核不会将其编译为模块,因此将其列入黑名单。可能仍然可以识别和禁用fbcon启动的特定驱动程序,但未列出此类驱动程序lsmod,因此qemu-kvm将 的驱动程序编译到 Arch 中。要禁用fbcon自身,您必须使用它自己的奇怪启动选项语法:

fbcon=map:99

其中99只是一些任意大的数字,大于系统上的帧缓冲设备的数量(通常为 1-2)。

控制文件了解更多信息。

答案2

vga16fb.modeset=0以前在 Ubuntu 中对我来说很管用。在 Ubuntu 中,将所有帧缓冲区模块(包括 vga16fb)列入黑名单也有效。

答案3

尝试像这样运行它:

TERM=dumb qemu-kvm -curses ...

相关内容