não pode executar "glxgears" no root no contêiner lxc 2.0

0

Eu estou executando lxc2.0 container (privileged) no Ubuntu 16.0.4LTS 32-bit.

Dentro do contêiner, instalei mesa-utils que tem o glxgears app.

meu arquivo de configuração do contêiner /var/lib/lxc/mk7i_container/config is:

 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

Para efetuar login no contêiner como usuário 'Ubuntu', estou usando o seguinte comando:

sudo lxc-console -n mk7i_container

Após o login, defino a variável DISPLAY env como:

export DISPLAY=":0.0"

E execute glxgears e ele é executado corretamente. Eu posso ver o Xwindow com engrenagens movendo-se nele.

No entanto, depois disso eu entro no modo raiz via comando sudo su . E tente executar o glxgears, mas recebo o seguinte erro:

No protocol specified
Error: couldn't open display :0.0

Não tenho certeza porque esse erro está chegando. Se o usuário ubuntu executar x aplicativos bem, eu esperava que o root fizesse o mesmo.

Alguém sabe o que há de errado aqui?

    
por Monku 19.09.2016 / 18:26

1 resposta

0

Consegui corrigi-lo e executar glxgears no modo raiz. O problema foi com o xauth.

O sistema host já tinha xauth . A idéia é usar a chave do usuário já confiável, que no meu caso era manik no sistema host.

O comando xauth list me deu a seguinte saída:

manik/unix:0  MIT-MAGIC-COOKIE-1  a4f6256398303725763c5595f404afbb

Eu vou usar a chave em hexadecimal (a maior parte da entrada acima) na minha conta de usuário root dentro do container.

Eu instalei o pacote xauth no contêiner:

sudo apt-get install xauth

Dentro do prompt de usuário root no contêiner:

export DISPLAY=":0"
xauth add $DISPLAY . a4f6256398303725763c5595f404afbb

E agora glxgears funciona bem no modo raiz.

    
por Monku 19.09.2016 / 21:37