如何在 LXC 容器内高效运行 X 应用程序?
ssh -Y guest
太慢了 - 没有图形加速ssh -Y
- 一切都必须使用传统的 X11 协议通过虚拟网络传输。
能够在主机和来宾应用程序之间复制粘贴是可取的,但不是必需的。运行两台 X 服务器(一台用于主机,一台用于来宾)(就我的目的而言)是必不可少的。
我无法在来宾中运行本机 Xorg,因为它抱怨/dev/tty0
丢失,而且我也无法mknod
在来宾中运行该设备,因为我的权限被拒绝,即使以 root 身份执行也是如此。
答案1
答案2
笔记: 这个方法有点hack。它也不支持主机和来宾之间的复制和粘贴 - 并且完全没有安全感!
- 添加
/tmp
为来宾配置中的附加文件系统,该配置将传递到/tmp
主机上。 - 确保您的 X 服务器未配置为接受任何类型的网络连接,因为下一步将禁用 X 安全性。
xhost +
在终端窗口中键入。- 启动 LXC 来宾
- 以您想要的普通用户身份登录来宾(即不是 root),然后输入
DISPLAY=:0 Xephyr :2 -screen 1024x768 -dpi 96 &
DISPLAY=:2 /etc/X11/xinit/Xsession
在来宾内部(2
如果您使用它连接到多个 LXC VM,请将两个 s 替换为要使用的屏幕编号。)调整分辨率 ( -screen
) 和 DPI ( -dpi
) 参数以适应。
其作用是建立到来宾中运行的 Xephyr 嵌套 X 服务器(使用 UNIX 域套接字和 MIT-SHM 扩展)的“代理”连接,以及从 Xephyr 到主机 X 服务器(使用 UNIX 域套接字)的另一个连接,但据我所知,由于 LXC 的设计,不能使用 MIT-SHM)。这似乎是 LXC 来宾可能实现的最快配置,至少对于我的硬件 (nvidia) 的开源驱动程序而言是这样。