无法在 lxc 2.0 容器的根目录中运行“glxgears”

无法在 lxc 2.0 容器的根目录中运行“glxgears”

我在 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在根模式下运行良好。

相关内容