一般ユーザーとして実行されるsystemdシステムサービスからALSAにアクセスします。

一般ユーザーとして実行されるsystemdシステムサービスからALSAにアクセスします。

ネットワーキングとサウンド(ALSA)の両方を使用するサービスがあり、それを使用してシステムシステムサービスを作成しようとしています。ユーザーサービスとして機能しますが、システムサービスとして機能させることはできません。

dbus-run-session[16623]: ALSA lib pulse.c:242:(pulse_connect) PulseAudio: Unable to connect:
dbus-run-session[16623]: Alsa error PCM open ALSA function 'snd_pcm_open' failed with error 'ECONNREFUSED: Connection refused'
dbus-run-session[16623]: Could not start audio: Alsa error: PCM open failed

これが私が今まで持っているものです。これはテンプレートセルで、パラメータは私のユーザー名です。サンドボックス設定をコメントアウトします。

# /etc/systemd/system/[email protected]
[Unit]
Description=A spotify playing daemon
Documentation=https://github.com/Spotifyd/spotifyd
Wants=sound.target
After=sound.target
Wants=network-online.target
After=network-online.target

[Service]
User=%i

Type=exec
ExecStart=/usr/bin/dbus-run-session /usr/local/bin/spotifyd --no-daemon

Restart=always
RestartSec=12

ProtectSystem=full
#ProtectSystem=strict

#ProtectHome=tmpfs
#TemporaryFileSystem=/home/%i
#BindPaths=/home/%i/.config/pulse
#BindReadOnlyPaths=/home/%i/.local/share/

#ProtectHome=read-only
#ReadWritePaths=/home/%i/.config/pulse
#ReadOnlyPaths=/home/%i/.local/share/

#PrivateTmp=true
#NoNewPrivileges=true

[Install]
WantedBy=default.target

コメント:

  • このデーモンはパルスオーディオをサポートするようにコンパイルされておらず、ALSAのみをサポートしています。これが重要かどうかはわかりません。
  • dbus-run-sessionそれ以外の場合はd-bus名を登録するため、起動時に失敗します。
  • オンラインのネットワークに頼ることができるので、ユーザーサービスではなくシステムサービスを好みます。
  • 私のユーザーと一緒にサービスを実行していますが、d-bus / MPRISが機能している限り、新しいユーザーになることもできます。
  • PulseAudio/ALSAをシステムサービスとして実行したくありません。
  • グループ=オーディオが機能しません

それでは、オーディオ設定に何が問題なのでしょうか?システムサービスを通常のアカウントに切り替えると、ユーザーサービスと同じ結果が得られます。

ベストアンサー1

システムサービスを通常のアカウントに切り替えると、ユーザーサービスと同じ結果が得られます。

共有されていないものがありますが、環境はそうです。

これは ALSA に正常にアクセスするために必要です。 (源泉:https://askubuntu.com/questions/70560/why-am-i-getting-this-connection-to-pulseaudio-failed-error)

Environment=XDG_RUNTIME_DIR=/run/user/1000

これにより、ユーザーサービスとして実行する必要があることに気づきました。システムサービスとユーザーセッションのライフサイクルが一致しません。

おすすめ記事