Baa*_*rud 4 command-line virtual-machine terminal virtualization
是否有任何基于终端(即非 GUI)的虚拟计算机程序?我一直在使用 VirtualBox 和 QEMU 之类的程序,但它们显然是基于 GUI 的……
我希望有一个虚拟 PC 程序,我可以在其中做任何事情 - 创建一个新的虚拟机,创建它的磁盘,安装操作系统(假设基于文本的安装程序可用)并在终端上启动虚拟机(从而用VM 的启动消息、登录提示和 shell)——来自虚拟终端/xterm-window/ssh/screen-session,而不是在 X 下的窗口中。
我问的原因是我在工作中经常使用ssh连接到我的家用电脑,而X或VNC的网络速度太慢。我仍然想修补虚拟机......
在qemu/ 中kvm,如果将视频卡连接到 VM 并且不将其公开为 SPICE/VNC,则只会获得 GUI。
例如,您可以执行 (zsh语法, with grub2):
grub-mkimage -O i386-pc -c =(print -l serial 'terminal_input serial' \
'terminal_output serial'
) -o grub.img configfile biosdisk part_msdos part_gpt ext2 \
linux test serial halt minicmd cat
Run Code Online (Sandbox Code Playgroud)
并使用以下命令启动您的 VM:
kvm -kernel grub.img -hda yourdisk.img -nographic
Run Code Online (Sandbox Code Playgroud)
根据grub提示,从磁盘中加载内核,传递console=ttyS0...选项或您正在启动的系统上的等效选项,以使控制台处于串行状态。记住还要在串行线上添加一个 getty。
假设您在 VM 中运行 Linux,然后您可以更新其 grub 配置以在串行上显示并使用串行控制台引导内核,然后您可以直接引导映像磁盘而无需该 grub.img。
要访问 qemu“监视器”,请键入Ctrl-Ac(您可以在其中添加/删除设备...)。
您可以将serial端口作为 unix 域或 TCP 套接字,而不是stdio您喜欢的方式。qemu“监视器”界面也是如此。
现在,只要您有sgabios.bin固件,并且您的 VM 不使用图形(只是 VGA BIOS 文本输出),您也可以只使用该-curses选项:
kvm -hda yourdisk -curses
Run Code Online (Sandbox Code Playgroud)
VGA 控制台随即显示在您的终端中。如果您需要访问 qemu 监视器,请按Alt-2。