Eu uso o Pulseaudio para compartilhar áudio entre uma área de trabalho e um Raspberry Pi.
No entanto, o Pulseaudio precisa de dbus, e o dbus precisa de uma sessão X. Sem sessão gráfica, o Pulseaudio só pode ser executado no modo de sistema, que não é oficialmente recomendado.
Além de um Raspberry Pi, o custo de uma sessão X é muito alto, então eu gostaria de me livrar dela da maneira mais eficiente (menos cara).
Como posso iniciar a menor sessão X do Pulseaudio?
x11
pulseaudio
kursus
fonte
fonte
Respostas:
Você pode usar o Xvfb , que é um servidor X com um buffer de estrutura virtual, ou seja, um servidor X que é exibido apenas na memória e não se conecta a nenhum hardware. Você não precisa executar nenhum cliente que não queira nesse servidor e, em particular, nenhum ambiente de desktop ou gerenciador de janelas.
Depois disto:
Você precisa esperar um pouco depois de iniciar
Xvfb
para que a exibição esteja disponível. Você pode usarxinit
para iniciar um servidor X e, em seguida, iniciar clientes quando estiver pronto. Coloque os comandos que você deseja executar em um script (observe que, quando o script sai, o servidor X sai):Inicie o servidor X virtual com
Se você deseja executá-lo no momento da inicialização, é possível iniciá-lo a partir do cron. Execute
crontab -e
(como seu usuário, não como root) e adicione a linhaSe você deseja matar esta sessão, mate o
xinit
processo.fonte
@reboot
. Também alanc está certo, é preciso haver um atraso após iniciar o Xvfb, e o xinit resolve esse problema. Veja minha edição.Eu tive o mesmo problema ontem, usando o Pulse audio para raspberrypi 0 W com DBus em um ambiente sem cabeça, crie com o yocto sem x11 e sem systemd, você precisa executar e exportar o dbus antes de executar o pulseaudio.
No etc / pulse / client.conf, ative allow-autospawn-for-root = yes
Execute
pulseaudio -v
para verificar se há outro problema na sua configuração. Não use a--system
opção porque ela não estará correta.fonte
Existe uma maneira mais elegante de impedir que o script atinja o EOF do que usar
sleep 99999999
!Use em
sleep infinity
vez disso. Faz o que diz ...fonte