[unix] Pulseaudio / dbus를위한 가짜 / 최소 X 세션 시작

Pulseaudio를 사용하여 데스크톱과 Raspberry Pi간에 오디오를 공유합니다.

그러나 Pulseaudio에는 dbus가 필요하고 dbus에는 X 세션이 필요합니다. 그래픽 세션이 없으면 Pulseaudio는 공식적으로 권장되지 않는 시스템 모드에서만 실행할 수 있습니다.

라즈베리 파이 외에도 X 세션의 비용이 극적으로 높기 때문에 가장 효율적인 (비용이 적게 드는) 방법으로 제거하고 싶습니다.

Pulseaudio가 시작되는 가장 작은 X 세션을 시작하려면 어떻게해야합니까?



답변

가상 프레임 버퍼가있는 X 서버, 즉 메모리에만 표시되고 하드웨어에 연결되지 않는 X 서버 인 Xvfb 를 사용할 수 있습니다 . 해당 서버에서 원하지 않는 클라이언트를 실행할 필요가 없으며 특히 데스크탑 환경이나 창 관리자가 필요하지 않습니다.

Xvfb :1 -screen 0 1x1x8 &

금후:

DISPLAY=:1 dbus-launch
DISPLAY=:1 pulseaudio --start

Xvfb디스플레이를 사용할 수 있으려면 시작 후 약간 기다려야 합니다. 당신이 사용할 수있는 xinitX 서버를 시작하고 준비가되면 다음 클라이언트를 시작합니다. 실행할 명령을 스크립트에 넣습니다 (스크립트가 종료되면 X 서버가 종료 됨).

#!/bin/sh
dbus-launch
pulseaudio --start
sleep 99999999

다음으로 가상 X 서버를 시작하십시오.

xinit /path/to/client.script -- /usr/bin/Xvfb :1 -screen 0 1x1x8

부팅시 실행하려면 cron에서 시작할 수 있습니다. crontab -e루트가 아닌 사용자로 실행 하고 행을 추가하십시오.

@reboot xinit /path/to/client.script -- Xvfb :1 -screen 0 1x1x8

이 세션을 종료하려면 xinit프로세스를 종료하십시오.


답변

어제 같은 문제가 발생했습니다. 헤드리스 환경에서 DBus와 함께 raspberrypi 0 W에 펄스 오디오를 사용하면 x11이없는 yocto로 생성되고 시스템이 없으므로 펄스 오디오를 실행하기 전에 dbus를 실행하고 내 보내야합니다.

if test -z "$DBUS_SESSION_BUS_ADDRESS" ; then
     echo "Starting dbus"
     export $(dbus-launch)
fi

etc / pulse / client.conf에서 allow-autospawn-for-root = yes를 활성화하십시오

pulseaudio -v설정에 다른 문제가 있는지 확인하기 위해 실행하십시오 . --system스위치가 올바르지 않으므로 스위치를 사용하지 마십시오 .

pulseaudio -D --disallow-exit


답변

스크립트를 사용하는 것보다 스크립트가 EOF에 도달하지 못하게하는 더 우아한 방법이 있습니다 sleep 99999999!

sleep infinity대신 사용하십시오 . 그것은 말한대로 …


답변