Erro ao reproduzir um som usando o ALSA dentro do contêiner LXC

1

Estou usando o host Ubuntu 16.0.4 system para executar meu contêiner lxc. Desinstalei o pulseaudio porque queria usar o ALSA diretamente.

Depois de desinstalar o pulseaudio da máquina host, consegui reproduzir sons usando o comando como um abaixo (na máquina host):

aplay /usr/share/sounds/alsa/Rear_Right.wav

Dentro do lxc container , instalei alsa libs e alsa utils . Quando eu uso o mesmo comando acima no container, recebo os seguintes erros:

ALSA lib confmisc.c:768:(parse_card) cannot find card '0'
ALSA lib conf.c:4248:(_snd_config_evaluate) function snd_func_card_driver returned error: No such file or directory
ALSA lib confmisc.c:392:(snd_func_concat) error evaluating strings
ALSA lib conf.c:4248:(_snd_config_evaluate) function snd_func_concat returned error: No such file or directory
ALSA lib confmisc.c:1251:(snd_func_refer) error evaluating name
ALSA lib conf.c:4248:(_snd_config_evaluate) function snd_func_refer returned error: No such file or directory
ALSA lib conf.c:4727:(snd_config_expand) Evaluate error: No such file or directory
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM default
aplay: main:654: audio open error: No such file or directory

Os dispositivos de som dentro do contêiner são:

bash-4.2# ls -al /dev/snd/*
crw-rw---- 1 root   29 116,  5 Nov  1 17:21 /dev/snd/controlC0
crw-rw---- 1 root   29 116,  2 Nov  1 17:21 /dev/snd/controlC1
crw-rw---- 1 root   29 116, 10 Nov  1 17:21 /dev/snd/controlC2
crw-rw---- 1 root   29 116,  9 Nov  1 17:21 /dev/snd/hwC0D0
crw-rw---- 1 root   29 116, 13 Nov  1 17:21 /dev/snd/hwC2D0
crw-rw---- 1 root   29 116,  6 Nov  1 17:21 /dev/snd/pcmC0D3p
crw-rw---- 1 root   29 116,  7 Nov  1 17:21 /dev/snd/pcmC0D7p
crw-rw---- 1 root   29 116,  8 Nov  1 17:21 /dev/snd/pcmC0D8p
crw-rw---- 1 root   29 116,  4 Nov  1 17:21 /dev/snd/pcmC1D0c
crw-rw---- 1 root   29 116,  3 Nov  1 17:27 /dev/snd/pcmC1D0p
crw-rw---- 1 root   29 116, 11 Nov  1 17:21 /dev/snd/pcmC2D3p
crw-rw---- 1 root   29 116, 12 Nov  1 17:21 /dev/snd/pcmC2D7p
crw-rw---- 1 root   29 116,  1 Nov  1 17:21 /dev/snd/seq
crw-rw---- 1 root   29 116, 33 Nov  1 17:21 /dev/snd/timer

/dev/snd/by-id:
total 0
drwxr-xr-x 2 root root  60 Nov  1 17:21 .
drwxr-xr-x 4 root root 360 Nov  1 17:21 ..
lrwxrwxrwx 1 root root  12 Nov  1 17:21 usb-126c_4.1_amplifier-00 -> ../controlC1

/dev/snd/by-path:
total 0
drwxr-xr-x 2 root root 100 Nov  1 17:21 .
drwxr-xr-x 4 root root 360 Nov  1 17:21 ..
lrwxrwxrwx 1 root root  12 Nov  1 17:21 pci-0000:00:03.0 -> ../controlC0
lrwxrwxrwx 1 root root  12 Nov  1 17:21 pci-0000:00:14.0-usb-0:5:1.0 -> ../controlC1
lrwxrwxrwx 1 root root  12 Nov  1 17:21 pci-0000:01:00.1 -> ../controlC2
    
por Monku 02.11.2016 / 01:48

1 resposta

2

Consegui reproduzir sons finalmente dentro do contêiner lxc .

Primeiro, tenho que ter certeza de que o cgroup do dispositivo lxc está habilitado para dispositivos de som. Você pode fazer isso adicionando o seguinte no container config file:

#Sound device nodes
lxc.cgroup.devices.allow = c 116:* rwm

lxc.mount.entry = /dev/snd dev/snd none bind,optional,create=dir

Em seguida, como estou usando ALSA no sistema host para reproduzir sons e quero usar o alsa novamente dentro do lxc container , certifique-se de que o arquivo de configuração alsa seja copiado dentro do contêiner.

Eu copiei o arquivo de configuração alsa do host no local /etc/asound.conf dentro do contêiner lxc . A razão para fazer isso é porque o alsalib dentro do contêiner tem que ter a mesma configração para usar como máquina host.

Depois disso, consegui reproduzir sons dentro do contêiner. Eu testei isso executando o seguinte:

aplay /usr/share/sounds/alsa/Rear_Right.wav
    
por Monku 02.11.2016 / 19:26