VirtualBox에서 가상 머신을 시작할 때 Pulseaudio가 충돌하는 것을 방지하는 방법은 무엇입니까?

VirtualBox에서 가상 머신을 시작할 때 Pulseaudio가 충돌하는 것을 방지하는 방법은 무엇입니까?

/!\아래 업데이트 2 - Pulseaudio는 범인이 아니며 libpam-systemd는 그렇지 않습니다./!\

gksu virtualbox %U을 사용하여 VirtualBox에서 가상 머신을 시작할 때마다 Pulseaudio가 항상 충돌한다는 것을 알았습니다 . 그런 다음 VirtualBox에서 즉시 다음 오류가 발생합니다.

No audio devices could be opened. Selecting the NULL audio backend
with the consequence that no sound is audible.

그리고

HostAudioNotResponding

또한 VMware Workstation에서는 다음 오류가 발생하여 소리를 들을 수 없다고 말합니다.

/dev/dsp를 찾을 수 없습니다.

해당 파일을 찾을 수도 없기 때문에 사실입니다.

그러나 syslog는 충돌에 대해 많은 정보를 제공하지 않습니다.

May 31 18:18:58 HostName pulseaudio[3466]: [autospawn] core-util.c: Failed to create secure directory (/run/user/1000/pulse): Permission denied
May 31 18:18:58 HostName pulseaudio[3466]: [autospawn] lock-autospawn.c: Cannot access autospawn lock.
May 31 18:18:58 HostName pulseaudio[3466]: [pulseaudio] main.c: Failed to acquire autospawn lock
May 31 18:18:59 HostName pulseaudio[3471]: [autospawn] core-util.c: Failed to create secure directory (/run/user/1000/pulse): Permission denied
May 31 18:18:59 HostName pulseaudio[3471]: [autospawn] lock-autospawn.c: Cannot access autospawn lock.
May 31 18:18:59 HostName pulseaudio[3471]: [pulseaudio] main.c: Failed to acquire autospawn lock
May 31 18:18:59 HostName pulseaudio[3473]: [autospawn] core-util.c: Failed to create secure directory (/run/user/1000/pulse): Permission denied
May 31 18:18:59 HostName pulseaudio[3473]: [autospawn] lock-autospawn.c: Cannot access autospawn lock.
May 31 18:18:59 HostName pulseaudio[3473]: [pulseaudio] main.c: Failed to acquire autospawn lock
May 31 18:18:59 HostName pulseaudio[3475]: [autospawn] core-util.c: Failed to create secure directory (/run/user/1000/pulse): Permission denied
May 31 18:18:59 HostName pulseaudio[3475]: [autospawn] lock-autospawn.c: Cannot access autospawn lock.
May 31 18:18:59 HostName pulseaudio[3475]: [pulseaudio] main.c: Failed to acquire autospawn lock
May 31 18:18:59 HostName pulseaudio[3478]: [autospawn] core-util.c: Failed to create secure directory (/run/user/1000/pulse): Permission denied
May 31 18:18:59 HostName pulseaudio[3478]: [autospawn] lock-autospawn.c: Cannot access autospawn lock.
May 31 18:18:59 HostName pulseaudio[3478]: [pulseaudio] main.c: Failed to acquire autospawn lock
May 31 18:19:00 HostName pulseaudio[3483]: [autospawn] core-util.c: Failed to create secure directory (/run/user/1000/pulse): Permission denied
May 31 18:19:00 HostName pulseaudio[3483]: [autospawn] lock-autospawn.c: Cannot access autospawn lock.
May 31 18:19:00 HostName pulseaudio[3483]: [pulseaudio] main.c: Failed to acquire autospawn lock
May 31 18:19:09 HostName pulseaudio[3488]: [autospawn] core-util.c: Failed to create secure directory (/run/user/1000/pulse): Permission denied
May 31 18:19:09 HostName pulseaudio[3488]: [autospawn] lock-autospawn.c: Cannot access autospawn lock.
May 31 18:19:09 HostName pulseaudio[3488]: [pulseaudio] main.c: Failed to acquire autospawn lock
May 31 18:19:09 HostName pulseaudio[3490]: [autospawn] core-util.c: Failed to create secure directory (/run/user/1000/pulse): Permission denied
May 31 18:19:09 HostName pulseaudio[3490]: [autospawn] lock-autospawn.c: Cannot access autospawn lock.
May 31 18:19:09 HostName pulseaudio[3490]: [pulseaudio] main.c: Failed to acquire autospawn lock
May 31 18:19:17 HostName pulseaudio[3496]: [autospawn] core-util.c: Failed to create secure directory (/run/user/1000/pulse): Permission denied
May 31 18:19:17 HostName pulseaudio[3496]: [autospawn] lock-autospawn.c: Cannot access autospawn lock.
May 31 18:19:17 HostName pulseaudio[3496]: [pulseaudio] main.c: Failed to acquire autospawn lock
May 31 18:19:18 HostName pulseaudio[3498]: [autospawn] core-util.c: Failed to create secure directory (/run/user/1000/pulse): Permission denied
May 31 18:19:18 HostName pulseaudio[3498]: [autospawn] lock-autospawn.c: Cannot access autospawn lock.
May 31 18:19:18 HostName pulseaudio[3498]: [pulseaudio] main.c: Failed to acquire autospawn lock
May 31 18:20:28 HostName pulseaudio[1847]: [pulseaudio] protocol-native.c: Denied access to client with invalid authorization data.

/run/user/1000/pulse/Pulseaudio는 루트 소유라는 악명 높은 버그가 있기 때문에 다시 시작할 수 없다고만 나와 있기 때문입니다 . 나는 간단히 다음과 같이 고쳤습니다.

chown standardUser /run/user/1000/pulse/ && chgrp standardUser /run/user/1000/pulse/

그러나 여전히 Pulseaudio를 충돌시킬 수 있는 징후는 없습니다.

그래서 질문은: Pulseaudio 충돌을 일으키는 원인과 이를 방지하는 방법은 무엇입니까?

모든 작업은 기본 KDE 데스크탑 환경으로 업데이트된 Debian 8.7에서 수행되었습니다.


업데이트 1:

많은 시도와 추측 끝에 /etc/pluse/default.pa 파일을 편집하여 몇 가지 개선 사항을 얻었습니다.

이러한 Pulseaudio 모듈을 활성화하면: - module-alsa-sink - module-oss device="/dev/dsp" sing_name=output source_name=input

이 옵션을 활성화하면 module-oss/dev/dsp 파일이 활성화됩니다. VMware Workstation에서 오류가 발생하는 것을 방지합니다.

모드 프로브 수행 중: snd-pcm-oss

그리고 다음 모듈을 비활성화합니다.

  • 모듈-esound-프로토콜-유닉스
  • 유휴 상태의 모듈 일시 중지

syslog에서 얻은 다음 버그를 제외하면 버그가 거의 없습니다(VirtualBox와 루트가 소유한 악명 높은 pulse 폴더는 여전히 있습니다).

May 31 22:09:11 HostName pulseaudio[3376]: Trying resume...
May 31 22:09:11 HostName pulseaudio[3376]: open '/dev/snd/pcmC0D0p' failed (-16)
May 31 22:09:11 HostName pulseaudio[3376]: Error opening PCM device front:0: Device or resource busy
May 31 22:09:11 HostName pulseaudio[3376]: Using generic matrix remapping

그리고 이것은 "pulseaudio -vvvv"를 수행하여 수동으로 Pulseaudio를 시작한 이후의 것입니다.

I: [pulseaudio] client.c: Created 1 "Native client (UNIX socket client)"
D: [pulseaudio] protocol-native.c: Protocol version: remote 29, local 29
I: [pulseaudio] protocol-native.c: Got credentials: uid=0 gid=0 success=0
W: [pulseaudio] protocol-native.c: Denied access to client with invalid authorization data.
I: [pulseaudio] client.c: Freed 1 "Native client (UNIX socket client)"
I: [pulseaudio] protocol-native.c: Connection died.

그런데 왜 "/dev/snd/pcmC0D0p" 오류가 발생하는지, 왜 권한 문제인지 이해할 수 없습니다.

syslog 및 Ultra Verbose 모드로 Pulseaudio를 실행하는 것 외에 Pulseaudio에 무슨 일이 일어나고 있는지 어떻게 추적할 수 있는지 모르겠습니다.

해당 충돌에 대해 더 많은 정보를 제공할 수 있는 방법이 있나요?


업데이트 2

업데이트 1에서 내가 만든 것 외에도:

/etc/pulse/default.pa가 추가되었습니다.

module-native-protocol-unix auth-anonymous=1
module-native-protocol-tcp auth-anonymous=1 auth-ip-acl=127.0.0.1

/etc/pulse/client.conf가 추가되었습니다.

default-server = 127.0.0.1

modprobe snd-pcm-oss여전히 필요합니다.

Pulseaudio와 관련된 모든 것이 작동했으며 심지어 vmware도 /dev/dsp를 얻지 못하는 것에 대해 불평하지 않았습니다( 에서만 작동함 modprobe snd-pcm-oss). Pulseaudio -vvvv 또는 /var/log/syslog/에서는 오류가 발견되지 않았습니다.

불행하게도 Pulseaudio가 완벽하게 작동하는 동안 소리가 여전히 누락되었습니다.

또한 시스템 모드에서 Pulseaudio를 실행하려고 했습니다. 하지만 상황은 나아지지 않았고 문제는 그대로였습니다.

따라서 주요 문제는 루트가 /run/user/1000/pulse를 소유하게 되는 것에 관한 것으로 보이며 실제 문제는 그 악명 높은 버그라는 것을 의미합니다.

약간의 조사 끝에 libpam-systemd가 그 원인이라는 것을 알았습니다. 이것은 Debian Testing(Stretch) 및 Experimental에 대해 보고된 Debian이 Systemd에서 가져온 알려진 버그입니다. 그러나 전혀 안정적이지는 않습니다.

https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=732209

http://forums.debian.net/viewtopic.php?f=10&t=110035

https://bugs.debian.org/cgi-bin/pkgreport.cgi?dist=unstable;package=libpam-systemd

두 번째 링크에 관해서는 "gksu gedit" 문제도 확인했는데, 이 문제에도 동일한 해결 방법을 적용했습니다.

적어도 Debian Stable 관리자가 libpam-systemd를 업데이트할 때까지는 문제가 해결되지 않은 것 같습니다.

다른 한편으로는 그들에게 버그 보고서를 보냈습니다. 또한 이 버그에 직면한 사람들에게도 이 버그를 다시 보고하여 진정한 확인을 받을 것을 권장합니다.

게다가 그동안 그 버그를 고칠 수 있는 방법을 아시는 분 계시다면 어떤 해결책이라도 기꺼이 들어드리겠습니다. 여기에는 libpam-systemd를 deb로 다시 컴파일하는 것도 포함됩니다(데비안 방식으로 제대로 수행하는 방법을 모르기 때문에). 어떤 힌트라도 환영합니다.

답변1

오류 에 대해 설명할 수 있습니다 /dev/snd/pcmC0D0p. 이것은 ALSA 장치입니다. Pulseaudio가 시작되면 찾을 수 있는 모든 ALSA 장치가 열리고, ALSA 하드웨어 장치는 공유될 수 없고 한 번만 열 수 있으므로 다음에 누군가 장치를 열려고 하면 "사용 중" 오류가 표시됩니다.

따라서 기본 환경에서 Pulseaudio를 실행하고 사운드 장치를 "통과"하도록 virtualbox를 구성한 경우 기본 Pulseaudio는 장치를 사용하므로 virtualbox는 사용할 수 없습니다.

virtualbux가 사운드 장치를 에뮬레이트하는 경우 이를 여는 virtualbox에서 실행 중인 다른 항목(예: 두 번째 Pulseaudio 인스턴스)이 있는 것입니다. lsof및 를 사용하여 ps어느 것을 알아보세요.

Modprobing은 snd-pcm-oss실제로 도움이 되지 않습니다. 이는 ALSA의 OSS 에뮬레이션 계층이며 , 다른 API의 /dev/dsp별칭일 뿐입니다 . 그리고 Pulseaudio에서 및 /dev/snd/pcmC0D0p를 모두 활성화하면 Pulseaudio는 두 가지 모두를 행복하게 열 것입니다. 물론 이것은 말도 안되는 일입니다. 따라서 OSS 항목을 다시 비활성화하면 해결책이 아닙니다.module-alsa-sinkmodule-oss

내 경험에 따르면 pulseaudio -vvvv실제로 무엇이 잘못되고 있는지에 대한 아이디어를 제공하기에 충분합니다. "분할 위반" 등과 같이 실제로 충돌이 발생하는 경우 가능하면 디버깅 기호가 있는 버전에서 strace를 사용하거나 로 시작하면 gdb실제로 무엇이 잘못되었는지 다시 한 번 알 수 있습니다.

귀하의 구성에 어딘가 문제가 있는 것 같지만 이를 파악할 수 있는 정보가 충분하지 않습니다.

관련 정보