Bug 25537

Summary: completely breaks sound on kernels without CONFIG_SOUND_OSS_CORE
Product: Sisyphus Reporter: Sergey Vlasov <vsu>
Component: osspAssignee: Nobody's working on this, feel free to take it <nobody>
Status: CLOSED FIXED QA Contact: qa-sisyphus
Severity: critical    
Priority: P3    
Version: unstable   
Hardware: all   
OS: Linux   

Description Sergey Vlasov 2011-04-30 19:58:28 MSK
На ядрах с выключенным CONFIG_SOUND_OSS_CORE (например, 2.6.38-std-def-alt3) при установленном пакете ossp не загружаются звуковые модули из-за ошибки при загрузке модуля soundcore:

  soundcore: Unknown parameter `preclaim_oss'

(далее в dmesg куча ошибок Unknown symbol по всей цепочке модулей).

Причина в том, что в /etc/modprobe.d/osspd содержится строка:

  options soundcore preclaim_oss=0

Однако параметр preclaim_oss у модуля soundcore присутствует только в том случае, если поддержка OSS в ядре включена (CONFIG_SOUND_OSS_CORE=y, сам по себе этот параметр не присутствует в меню конфигурации ядра, включается только через CONFIG_SOUND_PRIME).  В текущей конфигурации ядра std-def поддержка OSS выключена полностью, в результате параметр preclaim_oss не определяется.  С другой стороны, в Сизифе также присутствует ядро el-smp, в котором поддержка OSS включена, и CONFIG_SOUND_OSS_CORE_PRECLAIM=y - для работы на таком ядре как раз потребуется параметр preclaim_oss=0.

Для совместимости со всеми вариантами конфигурации ядер можно попробовать заменить "options soundcore preclaim_oss=0" на что-то типа

install soundcore modprobe --ignore-install -q soundcore preclaim_oss=0 || modprobe --ignore-install -q soundcore

Правда, ошибка "soundcore: Unknown parameter `preclaim_oss'" при этом всё равно будет появляться в dmesg.

Заодно стоит переименовать /etc/modprobe.d/osspd в /etc/modprobe.d/osspd.conf для совместимости с более свежими версиями module-init-tools.
Comment 1 Sergey Vlasov 2011-04-30 21:03:13 MSK
(В ответ на комментарий №0)
> install soundcore modprobe --ignore-install -q soundcore preclaim_oss=0 ||
> modprobe --ignore-install -q soundcore

Это не работает - надо явно писать /sbin/modprobe, иначе запущенные вручную тесты проходят, а вот при запуске из udevd /sbin не попадает в $PATH.

install soundcore /sbin/modprobe --ignore-install -q soundcore preclaim_oss=0 || /sbin/modprobe --ignore-install -q soundcore

> Правда, ошибка "soundcore: Unknown parameter `preclaim_oss'" при этом
> всё равно будет появляться в dmesg.

Можно починить и это - вот рабочий вариант:

install soundcore /sbin/modinfo -F parmtype soundcore | /bin/grep -q '^preclaim_oss:' && /sbin/modprobe --ignore-install soundcore preclaim_oss=0 || /sbin/modprobe --ignore-install soundcore

(modinfo -F parm тут тоже не работает).
Comment 2 Repository Robot 2011-04-30 23:16:02 MSK
ossp-1.3.2-alt4 -> sisyphus:

* Sat Apr 30 2011 Denis Smirnov <mithraen@altlinux> 1.3.2-alt4
- fix modprobe (ALT #25537) thanks to vsu@
- start from root (starting with _osspd user not work correctly now)
- update from upstream

* Fri Apr 29 2011 Denis Smirnov <mithraen@altlinux> 1.3.2-alt3
- fix initscript
Comment 3 Denis Smirnov 2011-05-06 23:46:53 MSK
Все нормально, можно закрыть багу?