Bug 25537 - completely breaks sound on kernels without CONFIG_SOUND_OSS_CORE
: completely breaks sound on kernels without CONFIG_SOUND_OSS_CORE
Status: CLOSED FIXED
: Sisyphus
(All bugs in Sisyphus/ossp)
: unstable
: all Linux
: P3 critical
Assigned To:
:
:
:
:
:
  Show dependency tree
 
Reported: 2011-04-30 19:58 by
Modified: 2011-05-06 23:46 (History)


Attachments


Note

You need to log in before you can comment on or make changes to this bug.


Description From 2011-04-30 19:58:28
На ядрах с выключенным 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 From 2011-04-30 21:03:13 -------
(В ответ на комментарий №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 From 2011-04-30 23:16:02 -------
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 From 2011-05-06 23:46:53 -------
Все нормально, можно закрыть багу?