GUI dentro de contêineres LXC 2.0 / LXD

1

O objetivo é contêiner alguns aplicativos GUI (Kodi e Retroplayer sendo os principais) e lançá-los a partir do host. Devido à natureza dos aplicativos, eu precisaria de suporte de áudio e aceleração de GPU, sem atraso ou latência adicional.

Eu esperava contêinerizar todo o ambiente de desktop e manter o host nú sem um ambiente de área de trabalho, mas não tenho certeza se isso é possível.

Alguém pode me apontar na direção da documentação sobre como configurar um contêiner LXC 2.0 com aceleração de áudio e intelpio.

Eu sei que é possível pelo menos conter os aplicativos gui e lançá-los no ambiente de área de trabalho dos hosts, já que vi exemplos em que as pessoas conseguiram isso. Mas só pode encontrar documentação para o LXC 1.0, o que obviamente não funciona para o 2.0.

    
por Jonsonfrank 11.02.2017 / 14:15

1 resposta

0

Ainda não tenho certeza sobre como contêiner completamente um gerenciador de exibição em um servidor sem cabeçalho.

Para executar aplicativos gui com áudio em contêineres, este tutorial funcionou para mim. A seguir, um resumo das etapas. Note que estou usando o LXD 3.5 (snap) em um Ubuntu 18.04.1.

1. Salve o seguinte em um arquivo de texto chamado lxdguiprofile.txt :

config:
  environment.DISPLAY: :0
  raw.idmap: both 1000 1000
  user.user-data: |
    #cloud-config
    runcmd:
      - 'sed -i "s/; enable-shm = yes/enable-shm = no/g" /etc/pulse/client.conf'
      - 'echo export PULSE_SERVER=unix:/tmp/.pulse-native | tee --append /home/ubuntu/.profile'
    packages:
      - x11-apps
      - mesa-utils
      - pulseaudio
description: GUI LXD profile
devices:
  PASocket:
    path: /tmp/.pulse-native
    source: /run/user/1000/pulse/native
    type: disk
  X0:
    path: /tmp/.X11-unix/X0
    source: /tmp/.X11-unix/X0
    type: disk
  mygpu:
    type: gpu
name: gui
used_by:

2. Adicione o perfil à sua instância do LXD:

lxc profile create gui
cat lxdguiprofile.txt | lxc profile edit gui

3. Aplique o perfil a um contêiner:

lxc profile add "$container" gui
lxc restart "$container"

Deve ser isso! Para testar seu gui, execute os seguintes comandos:

# Login to the ubuntu user in the container.
lxc exec "$container" -- su ubuntu -l 

# This should show an animation of gears if all is well.
glxgears

# This command shows the audio setup info.
pactl info 

Observe que, na minha configuração, o GUI só funciona no usuário ubuntu padrão dentro do contêiner. Não sei por que, mas as etapas provavelmente podem ser ajustadas para permitir que outros usuários de contêiner acessem o gui. Eu também tive problemas ao executar aplicativos acelerados por hardware, como o WineHQ ou o Steam.

    
por Mohamed Laradji 11.10.2018 / 21:32