我在 Ubuntu 16.0.4LTS 32 位上运行 lxc2.0 容器(特权)。
在容器内我安装mesa-utils
有该glxgears
应用程序。
我的容器配置文件/var/lib/lxc/mk7i_container/config
是:
Template used to create this container: /usr/share/lxc/templates/lxc-download
# Parameters passed to the template: --no-validate
# For additional config options, please look at lxc.container.conf(5)
# Uncomment the following line to support nesting containers:
#lxc.include = /usr/share/lxc/config/nesting.conf
# (Be aware this has security implications)
# Distribution configuration
lxc.include = /usr/share/lxc/config/ubuntu.common.conf
lxc.arch = x86
lxc.cgroup.devices.allow = c 1:1 rwm
lxc.cgroup.devices.allow = c 130:* rwm
lxc.cgroup.devices.allow = c 124:* rwm
lxc.cgroup.devices.allow = c 122:* rwm
lxc.cgroup.devices.allow = c 123:* rwm
lxc.cgroup.devices.allow = c 126:* rwm
lxc.cgroup.devices.allow = c 127:0 rwm
lxc.cgroup.devices.allow = c 120:0 rwm
# Container specific configuration
lxc.rootfs = /var/lib/lxc/mk7i_container/rootfs
lxc.rootfs.backend = dir
lxc.utsname = mk7i_container
# Network configuration
lxc.network.type = veth
lxc.network.link = lxcbr0
lxc.network.flags = up
lxc.network.hwaddr = 00:16:3e:c8:fd:1e
#mounts for XServer DISPLAY
lxc.mount.entry = /dev/dri dev/dri none bind,optional,create=dir
lxc.mount.entry = /tmp/.X11-unix tmp/.X11-unix none bind,optional,create=dir
lxc.mount.entry = /dev/video0 dev/video0 none bind,optional,create=file
要以用户“Ubuntu”身份登录容器,我使用以下命令:
sudo lxc-console -n mk7i_container
登录后,我将DISPLAY
环境变量设置为:
export DISPLAY=":0.0"
运行glxgears
后一切正常。我可以看到 Xwindow 中有齿轮在移动。
但是,之后我通过sudo su
命令进入 root 模式。并尝试运行 glxgears,但出现以下错误:
No protocol specified
Error: couldn't open display :0.0
不确定为什么会出现此错误。如果用户ubuntu
能够正常运行 x 个应用程序,我预计 root 也能这样做。
有人知道这里出了什么问题吗?
答案1
我已修复此问题并glxgears
以 root 模式运行。问题出在 xauth 上。
主机系统已经有了xauth
。我们的想法是使用已经信任的用户的密钥,在我的情况下,该密钥manik
在主机系统上。
使用命令xauth list
给了我以下输出:
manik/unix:0 MIT-MAGIC-COOKIE-1 a4f6256398303725763c5595f404afbb
我将在容器内的根用户帐户中使用十六进制的密钥(上面最右边的条目)。
我在容器中安装了 xauth 包:
sudo apt-get install xauth
root
容器中的用户提示符内部:
export DISPLAY=":0"
xauth add $DISPLAY . a4f6256398303725763c5595f404afbb
现在glxgears
在根模式下运行良好。