LINUX.ORG.RU

История изменений

Исправление intelfx, (текущая версия) :

А в чём, собственно, проблема?

Вариантов глобально два:

  • запускать через общесистемный инстанс systemd (PID 1, /etc/systemd/system, systemctl) с помощью юнита вида
    [Service]
    User=...
    Group=...
    ExecStart=...
    
    [Install]
    WantedBy=multi-user.target
    
  • запускать через per-user systemd ($HOME/.config/systemd/user, systemctl --user) с помощью юнита вида
    [Service]
    ExecStart=...
    
    [Install]
    WantedBy=default.target
    

Дальше начинаются тонкости. Во-первых, по умолчанию пользовательский инстанс systemd запускается с первым логином пользователя и завершается с последним разлогином (соответственно, запускаются и прибиваются все запущенные из-под него демоны). Чтобы он запускался при старте системы и жил до шатдауна, нужно сделать loginctl enable-linger <имя-пользователя>.

Во-вторых, если ты используешь PulseAudio, нужно сделать ещё некоторые вещи и учесть, что:

  • По умолчанию PulseAudio запускается для каждого пользователя свой;
  • Во всех дистрибутивах, кроме арча, он запускается вместе с иксами через xinitrc, а в арче — через пользовательский инстанс systemd;
  • Если для какого-то пользователя нет ни одной активной сессии (== текущего логина), PulseAudio не будет ничего воспроизводить, если только пользователь не добавлен в группу audio.

Следствие из первого пункта: вероятно, имеет смысл вручную перенастроить систему на запуск единой копии PulseAudio (systemwide mode).

Следствие из второго пункта: mpd нужно запускать строго после пульсы, т. е. в арче для запуска mpd нужно использовать systemd --user, а не в арче — только PulseAudio systemwide mode. Иначе пульса запустится автоматически с mpd (autospawn), но процесс пульсы окажется в той же цгруппе, что и mpd, и когда ты захочешь (например) перезапустить mpd — у тебя внезапно отвалится звук.

Следствие из третьего пункта: тебе нужно добавить юзера в группу audio или использовать PulseAudio systemwide mode.

Исходная версия intelfx, :

А в чём, собственно, проблема?

Вариантов глобально два:

  • запускать через общесистемный инстанс systemd (PID 1, /etc/systemd/system, systemctl) с помощью юнита вида
    [Service]
    User=...
    Group=...
    ExecStart=...
    
    [Install]
    WantedBy=multi-user.target
    
  • запускать через per-user systemd ($HOME/.config/systemd/user, systemctl --user) с помощью юнита вида
    [Service]
    ExecStart=...
    
    [Install]
    WantedBy=default.target
    

Дальше начинаются тонкости. Во-первых, по умолчанию пользовательский инстанс systemd запускается с первым логином пользователя и завершается с последним разлогином (соответственно, запускаются и прибиваются все запущенные из-под него демоны). Чтобы он запускался при старте системы и жил до шатдауна, нужно сделать loginctl enable-linger <имя-пользователя>.

Во-вторых, если ты используешь PulseAudio, нужно сделать ещё некоторые вещи и учесть, что:

[*] По умолчанию PulseAudio запускается для каждого пользователя свой;
[*] Во всех дистрибутивах, кроме арча, он запускается вместе с иксами через xinitrc, а в арче -- через пользовательский инстанс systemd;
[*] Если для какого-то пользователя нет ни одной активной сессии (== текущего логина), PulseAudio не будет ничего воспроизводить, если только пользователь не добавлен в группу audio.

Следствие из первого пункта: вероятно, имеет смысл вручную перенастроить систему на запуск единой копии PulseAudio (systemwide mode).

Следствие из второго пункта: mpd нужно запускать строго после пульсы, т. е. в арче для запуска mpd нужно использовать systemd --user, а не в арче — только PulseAudio systemwide mode. Иначе пульса запустится автоматически с mpd (autospawn), но процесс пульсы окажется в той же цгруппе, что и mpd, и когда ты захочешь (например) перезапустить mpd — у тебя внезапно отвалится звук.

Следствие из третьего пункта: тебе нужно добавить юзера в группу audio или использовать PulseAudio systemwide mode.