Я использую Pulseaudio для обмена аудио между рабочим столом и Raspberry Pi.
Однако для Pulseaudio нужен dbus, а для dbus - сеанс X. Без графического сеанса Pulseaudio может работать только в системном режиме, который официально не рекомендуется.
Помимо Raspberry Pi, стоимость сеанса X очень высока, поэтому я бы хотел избавиться от него самым эффективным (менее затратным) способом.
Как я могу начать самый маленький сеанс X для Pulseaudio?
x11
pulseaudio
kursus
источник
источник
Ответы:
Вы можете использовать Xvfb , который является X-сервером с виртуальным кадровым буфером, то есть X-сервером, который отображается только в памяти и не подключается к какому-либо оборудованию. Вам не нужно запускать какой-либо клиент, который вам не нужен, на этом сервере, в частности, нет рабочего стола или оконного менеджера.
После этого:
Вам нужно немного подождать после запуска,
Xvfb
чтобы дисплей был доступен. Вы можете использоватьxinit
для запуска X-сервера, а затем запускать клиенты, когда он будет готов. Поместите команды, которые вы хотите выполнить, в скрипт (обратите внимание, что при выходе из скрипта X-сервер завершается):Запустите виртуальный X-сервер с
Если вы хотите запустить его во время загрузки, вы можете запустить его из cron. Запустите
crontab -e
(как ваш пользователь, а не как root) и добавьте строкуЕсли вы хотите убить этот сеанс, убейте
xinit
процесс.источник
@reboot
. Кроме того, все в порядке, после запуска Xvfb должна быть задержка, и xinit решает эту проблему. Смотрите мое редактирование.Вчера у меня возникла та же проблема: при использовании Pulse Audio для Rasberrypi 0 Вт с DBus в безголовой среде, создавайте с помощью yocto без x11 и без systemd, вам нужно запустить и экспортировать dbus перед запуском pulseaudio.
В etc / pulse / client.conf включите allow-autospawn-for-root = yes
Запустите,
pulseaudio -v
чтобы проверить, есть ли другая проблема в вашей конфигурации. Не используйте--system
переключатель, потому что он не будет правильным.источник
Существует более элегантный способ предотвратить достижение сценария EOF, чем использование
sleep 99999999
!Используйте
sleep infinity
вместо этого. Он делает то, что говорит ...источник