Saya menggunakan Pulseaudio untuk berbagi audio antara desktop dan Raspberry Pi.
Namun, Pulseaudio membutuhkan dbus, dan dbus membutuhkan sesi X. Tanpa sesi grafis, Pulseaudio hanya dapat berjalan dalam mode sistem, yang secara resmi tidak direkomendasikan.
Selain pada Raspberry Pi, biaya sesi X sangat tinggi, jadi saya ingin menghilangkannya dengan cara yang paling efisien (lebih murah).
Bagaimana saya bisa memulai sesi X terkecil untuk ditendang Pulseaudio?
x11
pulseaudio
kursus
sumber
sumber
Jawaban:
Anda dapat menggunakan Xvfb , yang merupakan server X dengan framebuffer virtual, yaitu server X yang hanya menampilkan di memori dan tidak terhubung ke perangkat keras apa pun. Anda tidak perlu menjalankan klien yang tidak Anda inginkan di server itu, dan khususnya tidak ada lingkungan desktop atau window manager.
Sesudah ini:
Anda perlu menunggu sedikit setelah memulai
Xvfb
agar tampilan tersedia. Anda dapat menggunakanxinit
untuk memulai server X dan kemudian memulai klien ketika sudah siap. Masukkan perintah yang ingin Anda jalankan dalam skrip (perhatikan bahwa ketika skrip keluar, server X keluar):Mulai server X virtual dengan
Jika Anda ingin menjalankannya saat boot, Anda dapat memulainya dari cron. Lari
crontab -e
(sebagai pengguna Anda, bukan sebagai root) dan tambahkan barisJika Anda ingin mengakhiri sesi ini, matikan
xinit
prosesnya.sumber
@reboot
. Juga jika benar, perlu ada penundaan setelah memulai Xvfb, dan xinit memecahkan masalah ini. Lihat hasil edit saya.Saya memiliki masalah yang sama kemarin, menggunakan audio Pulse untuk raspberrypi 0 W dengan DBus di lingkungan tanpa kepala buat dengan yocto tanpa x11 dan tanpa systemd, Anda perlu menjalankan dan mengekspor dbus sebelum menjalankan pulseaudio.
Di etc / pulse / client.conf, aktifkan allow-autospawn-for-root = yes
Jalankan
pulseaudio -v
untuk memeriksa apakah ada masalah lain di konfigurasi Anda. Jangan gunakan--system
sakelar karena itu tidak benar.sumber
Ada cara yang lebih elegan untuk mencegah skrip mencapai EOF daripada menggunakan
sleep 99999999
!Gunakan
sleep infinity
sebagai gantinya. Itu melakukan apa yang dikatakannya ...sumber