kvm + spice 提供了不错的 vm 图形桌面环境体验, 并且 spice 在 linux 和 windows 下都有 remote-viewer 客户端, 体验都不错。 kvm 宿主机上也可以直接使用 virt-viewer 或 remote-viewer 访问 vm 桌面, 但在宿主机上再运行一套桌面环境代价较大, 并且需要先登录宿主机桌面环境, 再运行 virt-viewer 访问 vm 桌面, 需要两次操作比较烦人。 能不能宿主机上不要桌面环境, 直接访问 vm 桌面呢? 简单想法就是省略 gnome-session 等这些东西, 宿主机上只需要一个最简的 xserver 环境, 其上直接全屏运行 virt-viewer。

ubuntu 16.04 桌面环境由 lightdm 提供, 其负责启动 Xorg (即 xserver) , 整合桌面环境等内容。 一种想法是想修改 lightdm 的配置, 使其不要启动桌面环境直接启动 virt-viewer。 由于对 lightdm 并不熟悉, 直接尝试修改 lightdm-gtk-greeter 发现并不行。 另一种想法是查看 lightdm 怎么如何 Xorg, 自己尝试执行命令完成相关操作。

查看 Xorg 运行参数:

$ ps -C Xorg -fww
UID        PID  PPID  C STIME TTY          TIME CMD
root      1519  1511  3 12:29 tty7     00:05:52 /usr/lib/xorg/Xorg -core :0 -seat seat0 -auth /var/run/lightdm/root/:0 -nolisten tcp vt7 -novtswitch

尝试执行:

sudo Xorg :0 -seat seat0 vt7 -novtswitch

启动 xserver 成功。尝试执行:

DISPLAY=:0 mate-terminal

启动成功, 但是显示非常丑陋, 而且貌似功能有问题, 没有全屏等功能。

想了一下应该时还需要 x-window-manager。 我在 ubuntu 16.04 mate 桌面使用的是 compiz, 看一下其运行参数:

$ ps -C compiz -fww
UID        PID  PPID  C STIME TTY          TIME CMD
hanyong   2772  2340 13 12:31 ?        00:20:59 compiz

不需要启动参数。尝试执行 (注意这里不需要 root 权限):

DISPLAY=:0 compiz

再执行 mate-terminal, 果然显示好了很多, 也支持 F11 全屏显示了。

google 了一下有许多可选择的 x-window-manager, 参考: https://en.wikipedia.org/wiki/Comparison_of_X_window_managers 。 尝试了一下 i3-wm (参考: http://i3wm.org/) 和 xfwm4 (参考: https://en.wikipedia.org/wiki/Xfce#Xfwm), 安装包都很小并且直接执行即可。 ubuntu 自带的 compiz, mutter 和新安装的 i3-wm 都工作正常, xfwm4 貌似有问题。 看起来 mutter 显示比较好, 启动后即切换 xserver 背景为蓝色并显示鼠标。 但 compiz 用得较熟悉, 可考虑沿用 compiz

之后在宿主机执行 virt-viewer 即可友好的访问 vm 图形桌面了。