segunda-feira, 14 de outubro de 2024

Webex com LXC

O Webex parou de funcionar no Ubuntu 22.04 quando eu atualizei o kernel e continuou dando problema quando fiz o upgrade para 24.04.

Ele inicia e até chega a rodar por uns minutos, mas acaba por encerrar sem dar nenhuma explicação. A comunicação não é mesmo o forte dele, porque ele não funciona no root, mas não indica nenhum motivo.

Sem muita esperança, resolvi experimentar rodar dentro de um contêiner LXC.

Vamos ao básico: instalar o LXD.


sudo snap install lxd
sudp lxd init

O init vai fazer um monte de perguntas. As respostas default servem.

Como vai ser preciso usar o X11 do hospedeiro, é preciso criar um profile. Primeiro, cria-se um arquivo gui.txt com essas configurações:


config:
  environment.DISPLAY: :0
  environment.PULSE_SERVER: unix:/home/ubuntu/pulse-native
  nvidia.driver.capabilities: all
  nvidia.runtime: "true"
  user.user-data: |
    #cloud-config
    runcmd: 
      - 'sed -i "s/; enable-shm = yes/enable-shm = no/g" /etc/pulse/client.conf'
    packages:
      - x11-apps
      - mesa-utils
      - pulseaudio
    write_files:
      - owner: root:root
        permissions: '0644'
        append: true
        content: |
          PULSE_SERVER=unix:/home/ubuntu/pulse-native
        path: /etc/environment
description: GUI LXD profile
devices:
  PASocket1:
    bind: container
    connect: unix:/run/user/1000/pulse/native
    listen: unix:/home/ubuntu/pulse-native
    security.gid: "1000"
    security.uid: "1000"
    uid: "1000"
    gid: "1000"
    mode: "0777"
    type: proxy
  X0:
    bind: container
    connect: unix:@/tmp/.X11-unix/X1
    listen: unix:@/tmp/.X11-unix/X0
    security.gid: "1000"
    security.uid: "1000"
    type: proxy
  mygpu:
    type: gpu
name: x11
used_by: []

Com isso, podemos criar um profile e, finalmente, um contêiner (como root):


lxc profile create gui
cat gui.txt | lxc profile edit gui
lxc launch --profile default --profile gui ubuntu:22.04 jammy

Jammy vai ser o nome do nosso contêiner. Pode ser que o launch falhe inicialmente, mas o start o coloca de pé novamente:


lxc start jammy

Agora temos que criar um user, copiar o Webex.deb para dentro do contêiner, instalar e, finalmente, rodar:


xhost +
sudo lxc file push Webex.deb jammy/
sudo lxc exec jammy bash
# dentro do contêiner
cd /
apt install /Webex.deb
adduser armando
su armando
# como armando
export DISPLAY=:0
/opt/Webex/bin/CiscoCollabHost %U

Como o usuário armando foi criado depois, precisamos pegar o seu id e editar algumas linhas no profile para que o áudio funcione. Como é o primeiro usuário criado, ele ficou com o id 1001.


name: gui
description: GUI LXD profile
config:
  environment.DISPLAY: :0
  environment.PULSE_SERVER: unix:/home/armando/pulse-native
  nvidia.driver.capabilities: all
  nvidia.runtime: "true"
  user.user-data: |
    #cloud-config
    runcmd:
      - 'sed -i "s/; enable-shm = yes/enable-shm = no/g" /etc/pulse/client.conf'
    packages:
      - x11-apps
      - mesa-utils
      - pulseaudio
    write_files:
      - owner: root:root
        permissions: '0644'
        append: true
        content: |
          PULSE_SERVER=unix:/home/armando/pulse-native
        path: /etc/environment
devices:
  PASocket1:
    bind: container
    connect: unix:/run/user/1000/pulse/native
    gid: "1001"
    listen: unix:/home/armando/pulse-native
    mode: "0777"
    security.gid: "1000"
    security.uid: "1000"
    type: proxy
    uid: "1001"
  X0:
    bind: container
    connect: unix:@/tmp/.X11-unix/X1
    listen: unix:@/tmp/.X11-unix/X0
    security.gid: "1000"
    security.uid: "1000"
    type: proxy
  mygpu:
    type: gpu
used_by:
- /1.0/instances/jammy


Após editar o profile, é preciso parar e iniciar novamente o contêiner.


sudo lxc profile edit gui
sudo lxc stop jammy
sudo lxc start jammy

E com isso pode-se quebrar um galho enquanto a Cisco não atualiza o software.

Nenhum comentário:

Postar um comentário