Вообще в /etc/init.d есть скрипт alsa-utils, он запускается из /etc/rcS.d и в нём
есть команда "alsactl restore $CARD", т.е. предполагается, что, если ранее
была выполнена команда "alsactl store #", то система сама восстановит настройки.
Откуда она берёт этот $CARD, я не выяснял, там вызывается ещё один скрипт
из alsa. Его можно вызвать и вручную, "/etc/init.d/alsa-utils #", где # - номер
звуковой карты.
Пётр.
S/PDIF отключен по умолчанию
yars, не помогло.
Peter, выполнял команду alsactl store 0 и перезагружался - S/PDIF замутен. Вручную (alsactl restore 0) включается.
Ну, раз так, то в ~.bashrc запишите. В логах, как я понимаю, чисто по поводу этого скрипта? Я, к сожалению, не в курсе, как настраивается запуск своих скриптов через upstart.
UPD: Ой, в Ubuntu же dash, а не bash.
Действительно, самое надёжное - через ~/.bashrc, хотя у меня команда
вставлена в /etc/rc.local. Сначала я как root когда-то вызвал "alsamixer -c 0",
потом "alsactl store 0", файл asound.state в /var/lib/alsa скопировал туда же
с именем asound_rear_mic.state, а в /etc/rc.local поместил команду
/usr/sbin/alsactl -f /var/lib/alsa/asound_rear_mic.state restore 0Пётр.
Peter, Чесно говоря до конца не понял. Вот это пляски. До 12.10 работали сразу все выходы без вмешательства.
Как конкретно в моём случае сделать?
Возвращаюсь к теме.
Поставил Kubuntu 13.10 и снова столкнулся с этой проблемой.
S/PDIF - MM. Ставлю 00. Делаю sudo alsactl store 0, перзагружаюсь, sudo alsactl restore 0 - восстанавливается.
Пробовал добалять sudo alsactl restore 0 в /etc/rc.local - не помогает.
/etc/rc.local - не помогает.
Обычно расположение это файла такое:
- /etc/rc.d/
- /etc/init.d/
Самое надёжное не то, что я раньше говорил, а надо поместить в ~/.config/autostart
desktop-файл, из которого вызывался бы скрипт с командой восстановления.
Т.е. сохранить настройки где-то у себя командой
/usr/sbin/alsactl -f my_asound.state store 0если карта 0,
а в скрипте то же самое, но с restore.
Пётр.
А еще правильнее почитать-таки документацию на upstart и таки раскопать куда и что должно прикручиваться.
/etc/rc.d/ у меня нет.
Есть:
/etc/rc0.d/
/etc/rc1.d/
/etc/rc2.d/
/etc/rc3.d/
/etc/rc4.d/
/etc/rc5.d/
/etc/rc6.d/
/etc/rcS.d/
О, только сейчас дошло. Что у вас есть в /etc/rc{2345S}.d?
yars, а /etc/rc.local тогда для чего? Сейчас он у меня такой:
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.
alsactl restore 0
exit 0Вот он в старые добрые времена и предназначался для запуска сервисов, для которых не позаботились сделать свой init-скрипт - все учесть невозможно, вот и придумали rc.local. А теперь ему на смену приходят (ну или пришли) OpenRC, upstart, init-ng, systemd и прочая.
Кстати, выполните:
cat -A /etc/rc.localphant0m, еще, в google говорят, что после изменений в rc-скриптах нужно делать sudo update-rc.d. Пробовали?
yars,
$ cat -A /etc/rc.local
#!/bin/sh -e$
#$
# rc.local$
#$
# This script is executed at the end of each multiuser runlevel.$
# Make sure that the script will "exit 0" on success or any other$
# value on error.$
#$
# In order to enable or disable this script just change the execution$
# bits.$
#$
# By default this script does nothing.$
alsactl restore 0$
exit 0$$ sudo update-rc.d
usage: update-rc.d [-n] [-f] <basename> remove
update-rc.d [-n] <basename> defaults [NN | SS KK]
update-rc.d [-n] <basename> start|stop NN runlvl [runlvl] [...] .
update-rc.d [-n] <basename> disable|enable [S|2|3|4|5]
-n: not really
-f: force
The disable|enable API is not stable and might change in the future.
Сделал по последнему совету Петра S/PDIF отключен по умолчанию
- работает.
Ок, но у вас в rc.local нету завершающего перевода строки, на этом многие скрипты спотыкаются. Откройте на редактирование от рута, в конце последней строки нажмите Enter, сохраните. Потом выполните:
sudo update-rc.d rc.local defaultsПосле этого все должно работать правильно.
yars, есть перевод строки. Это я так скопипастил.
Выполнил команду. Что означает такое сообщение?
$ sudo sudo update-rc.d rc.local defaults
update-rc.d: warning: default stop runlevel arguments (0 1 6) do not match rc.local Default-Stop values (none)
System start/stop links for /etc/init.d/rc.local already exist.
Что означает такое сообщение?
Если правильно понимаю, то на уровнях 0 1 6 (0 -выключение, 1 - single user, 6 - перезагрузка) rc.local выполняться не будет, что правильно.
Костыль от Петра работает. Но проблема уже 3 релиза длится. Как всегда в убунту не торопятся исправлять косяки.