QEMU-KVM Linux 命令行虚拟化

mal*_*c47 7 linux arch-linux qemu kvm-virtualization

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

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

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

mal*_*c47 5

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

fbcon=map:99
Run Code Online (Sandbox Code Playgroud)

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

有关更多信息,请参阅fbcon.txt