O PulseAudio não inicia no modo de sistema no CentOS 7

0

Resumindo, estou tentando configurar o PulseAudio para atuar como uma interface de loopback para um fluxo de música local. No entanto, estou chegando a um ponto de ruptura na configuração.

Pelo que entendi, você não pode iniciar pulseaudio em "modo não-sistema" sem ter um servidor X em execução, mas visto que o servidor está sem cabeça, isso não é uma opção. Então comecei a escrever um script systemd para iniciar o daemon como uma instância de todo o sistema. No entanto, isso falha por alguma razão inexplicável.

Se eu executar o comando que no script systemd, o pulso de todo o sistema é iniciado muito bem! No entanto, se eu o executar dentro do script de início (por exemplo, com systemctl start pulseaudio), ele falhará com Failed to create '/var/run/pulse': Permission denied . Eu não posso para a vida de mim descobrir como isso funcionaria para o mesmo usuário em maneiras diferentes. Eu também tentei substituir o script de início por um ls /var/run/pulse . Quando o script é configurado para ser executado como "pulso", ele não imprime nada no diário. No entanto, se eu envolver toda a chamada em sudo -u pulse , ela imprime o conteúdo de /var/run/pulse . Quando eu enrolo o comando de inicialização de pulso em sudo -u root , ele simplesmente falha com o mesmo erro.

[root@ian-primary ian]# ls -al /var/run/pulse
total 4
drwx------.  3 pulse pulse  80 Nov  5 23:10 .
drwxr-xr-x. 29 root  root  840 Nov  5 23:03 ..
drwxr-xr-x.  3 pulse pulse  60 Nov  5 23:04 .config
-rw-------.  1 pulse pulse  16 Nov  5 23:04 .esd_auth

[root@ian-primary ian]# sudo -u pulse ls -al /var/run/pulse
total 4
drwx------.  3 pulse pulse  80 Nov  5 23:10 .
drwxr-xr-x. 29 root  root  840 Nov  5 23:03 ..
drwxr-xr-x.  3 pulse pulse  60 Nov  5 23:04 .config
-rw-------.  1 pulse pulse  16 Nov  5 23:04 .esd_auth

Nov 06 13:56:02 ian-primary systemd[1]: Starting PulseAudio system server...
Nov 06 13:56:02 ian-primary pulseaudio[23251]: W: [pulseaudio] main.c: Running in system mode, but --disallow-exit not set.
Nov 06 13:56:02 ian-primary pulseaudio[23251]: W: [pulseaudio] main.c: Running in system mode, but --disallow-module-loading not set.
Nov 06 13:56:02 ian-primary pulseaudio[23251]: N: [pulseaudio] main.c: Running in system mode, forcibly disabling SHM mode.
Nov 06 13:56:02 ian-primary pulseaudio[23251]: N: [pulseaudio] main.c: Running in system mode, forcibly disabling exit idle time.
Nov 06 13:56:02 ian-primary pulseaudio[23253]: Timer slack is set to 50 us.
Nov 06 13:56:02 ian-primary pulseaudio[23253]: setpriority() worked.
Nov 06 13:56:02 ian-primary pulseaudio[23253]: Successfully gained nice level -11.
Nov 06 13:56:02 ian-primary pulseaudio[23253]: Found user 'pulse' (UID 171) and group 'pulse' (GID 171).
Nov 06 13:56:02 ian-primary pulseaudio[23253]: Home directory of user 'pulse' is not '/var/run/pulse', ignoring.
Nov 06 13:56:02 ian-primary pulseaudio[23251]: E: [pulseaudio] main.c: Daemon startup failed.
Nov 06 13:56:02 ian-primary pulseaudio[23253]: Failed to create '/var/run/pulse': Permission denied
Nov 06 13:56:02 ian-primary systemd[1]: pulseaudio.service: main process exited, code=exited, status=1/FAILURE
Nov 06 13:56:02 ian-primary systemd[1]: Failed to start PulseAudio system server.
Nov 06 13:56:02 ian-primary systemd[1]: Unit pulseaudio.service entered failed state.
Nov 06 13:56:02 ian-primary systemd[1]: pulseaudio.service failed.

[root@ian-primary ian]# /bin/pulseaudio -vvv --daemonize --system --realtime
W: [pulseaudio] main.c: Running in system mode, but --disallow-exit not set.
W: [pulseaudio] main.c: Running in system mode, but --disallow-module-loading not set.
N: [pulseaudio] main.c: Running in system mode, forcibly disabling SHM mode.
N: [pulseaudio] main.c: Running in system mode, forcibly disabling exit idle time.
I: [pulseaudio] main.c: Daemon startup successful.

[root@ian-primary ian]# cat /etc/systemd/system/pulseaudio.service
[Unit]
Description=PulseAudio system server

[Service]
Type=notify
Environment=PULSE_RUNTIME_PATH=/run/pulse

# ExecStart=/bin/printenv
# export PULSE_RUNTIME_PATH="/run/pulse"
ExecStart=/bin/pulseaudio -vvv --daemonize --system --realtime

[Install]
WantedBy=multi-user.target
    
por duper51 06.11.2018 / 22:01

1 resposta

0

Isso não explica realmente a mensagem Failed to create '/var/run/pulse': Permission denied , mas há um problema aparente em sua configuração, que é que você está executando o PulseAudio com --daemonize da unidade de serviço systemd, enquanto o systemd realmente espera que ele seja executado primeiro plano. Você deve mudar isso para --daemonize=no .

Você também pode querer listar explicitamente --disallow-exit e --disallow-module-loading como sugerido nas mensagens de log.

O PulseAudio também está reclamando que o diretório pessoal do usuário pulse não é /var/run/pulse , como parece esperar, você pode querer atualizar a conta do sistema para refletir isso.

Para mais pesquisas, você pode querer olhar para este artigo para mais detalhes e instruções sobre a execução de uma instância de todo o sistema do PulseAudio, e também esta página do wiki do PulseAudio (incluindo algumas referências sobre por que você não deseja executar o PulseAudio como um serviço de todo o sistema. )

    
por 07.11.2018 / 01:57