Systemd и alsactl (работает не так, как надо)

На самом деле это единственный раздел про unix на этом форуме

Модераторы: /dev/random, Модераторы разделов

Ответить
Аватара пользователя
AlexYeCu
Сообщения: 1136
ОС: fedora

Systemd и alsactl

Сообщение AlexYeCu »

Fedora 19. Имеющийся механизм не устраивает, соотв. alsa-store.serice, alsa-restore-service и alsa-state-service отправлены в disabled.
Чтобы alsa выставляла нужный мне уровень звука, написан свой unit (точнее, раньше тупо вызывался /sbin/alsactl restore из /etc/rc.d/rc.local, но сейчас этот фокус не прокатывает).
Вот unit:

Код: Выделить всё

[Unit]
Description=Run my stuff
DefaultDependencies=no
After=sysinit.target

[Service]
Type=oneshot
ExecStart=/usr/sbin/alsactl restore

[Install]
WantedBy=base.target


Проблема в том, что он стартует, но в alsamixer оказывается такой урвоень звука, будто alsactl restore не вызывалась. Если же сервис рестартануть ручками — результат какой нужно. Т.е. очень похоже, что либо Type (пробовал simple и oneshot), либо очерёдность загрузки не такая как надо. Собственно, кто понимает, в чём дело?

P.S.: Модераторы, если не угадал с разделом — перенесите тему. А то я всё думал, в «администрирование» её запихнуть, в «шапки» или сюда.
Спасибо сказали:
liaonau
Сообщения: 390
ОС: gentoo

Re: Systemd и alsactl

Сообщение liaonau »

Не понятно зачем писать свой юнит. Ведь стандартный alsa-restore.service в общем-то так и выглядит.

Код: Выделить всё

[Unit]
Description=Restore Sound Card State
ConditionPathExists=!/etc/alsa/state-daemon.conf
DefaultDependencies=no
After=alsa-state.service
Before=shutdown.target
Conflicts=shutdown.target

[Service]
Type=oneshot
ExecStart=-/usr/sbin/alsactl restore
StandardOutput=syslog

А разве в fedora не используется pulseaudio? По идее pulseadio уровень звука запомнит и выставит потом.
Спасибо сказали:
Аватара пользователя
AlexYeCu
Сообщения: 1136
ОС: fedora

Re: Systemd и alsactl

Сообщение AlexYeCu »

liaonau писал(а):
10.11.2013 22:48
Не понятно зачем писать свой юнит. Ведь стандартный alsa-restore.service в общем-то так и выглядит.


Он выглядит не так. Там три юнита, работающих вместе. Они (в теории) запоминают состояние alsamixer на момент выхода из системы и восстанавливают его при старте. Проблема в том, что там настройки хранятся не в предусмотренном разработчиками alsactl месте, а где-то ещё. Мне же запоминать ничего не надо, а надо восстанавливать заданное вручную состояние. Вариант с запуском только alsa-restore.service этого результата добиться не позволяет.

А разве в fedora не используется pulseaudio? По идее pulseadio уровень звука запомнит и выставит потом.


Если Fedora или любой иной дистрибутив использую я, то pulseaudio оттуда выпиливается нафиг. Ибо полурабочий хлам, требующий долгой настройки ради результата, который alsa предоставляет "из коробки".
Спасибо сказали:
Ответить