Как стать автором
Поиск
Написать публикацию
Обновить

Тонкости компиляции внешних версий ALSA под Linux ядра.

Случилось недавно знаковое событие в мире потребительского звука под Linux — разработчики из ALSA исследовали предоставленый Creative код и написали-таки пусть нестабильный, пусть тестовый, но нативный и свободный от проприетарного кода честный модуль для звука Creative X-Fi под Linux.
(Доступный пока только в unstable ftp.kernel.org/pub/linux/kernel/people/tiwai/snapshot/alsa-driver-unstable-snapshot.tar.gz)
Мне, как счастливому обладателю дома такой карты (так вышло) это была как манна небесная, наконец-то нормальный ЗВУК дома, там где он нужен больше всего, вместо напаянной на плату шуршалки.
Исходники скачаны, поддержка ALSA в ядре выключена (это обязательное требование для сборки внешних драйверов ALSA), исходники собраны, модули инсталлированы.

при загрузке модуля snd.ko получаем:
snd: Unknown symbol unregister_sound_special
snd: Unknown symbol register_sound_special
Или, при попытке загрузить сам модуль snd-ctxfi.ko, эти ошибки первыми, плюс простыню ошибок уже неизвестных символов из snd.ko который не загрузился, что естественно.


Проблема была бы не проблемой и не заслуживала поста бы на хабре, еслиб про это хоть слово было в гугле написано. Но! Гугл от первой до 15-й страницы в поиске выдает массу таких вопросов и массу же совершенно ламерских рассуждений в стиле работы с windows типа «надо ждать фикса» или «поставьте новое ядро из инсталляционного пакета, возьмите модуль snd.ko от старого ядра который грузится и подсуньте его новому». И проблемы эти тянутся чуть ли не с 2007-го года судя по датам и поэтому даже не являются проблемами ctxfi, народ всё ждёт фиксов или новых версий которые работают.
Не буду разводить философию — сразу напишу в чем на самом деле дело:
Символы unregister_sound_special и register_sound_special в коде ALSA это символы модуля sound.ko, который является модулем OSS, старой звуковой системы Linux, всё ещё находящейся в ядре как альтернативная, и это символы совместимости ALSA с OSS.
Для того чтобы проблемы исчезли надо или включить в ядре поддержку OSS, без всяких модулей карт и прочего, просто чтобы модуль sound.ko зарегистрировал свои символы или собрать ALSA с опцией '--without-oss' просто выключив эту совместимость.
Для всех страдальцев натыкающихся на столь банальную ошибку и находящих в гугле только жуткие рассуждения на тему «надо ждать фиксов» хотелось-бы чтобы настоящее решение проблемы было хоть где-то опубликовано, проиндексировано, выдавалось в результатах поиска и хоть кому-то помогло.

Это кстати не первый случай когда я сталкиваюсь с откровенно ламерскими рассуждениями по довольно серъёзным проблемам в Линуксе (я имею ввиду как человек который ничего не понимает в этом вообще добрался до сборки модулей ядра и увидев проблемы unresolved symbols сразу решил по своему небогатому опыту что тут надо ждать патчей и стал другим такие советы на форумах давать), но таких случаев становится всё больше. Всё больше софта который я собираю и исследую, при возникновении проблем и поиске их в гугле выдает совершенно дикие форумы дистрибутивов переполненные мусором в обсуждении и реальную помощь или быстрое объяснение в чем дело можно найти на 5-х — 6-х страницах поиска.
С одной стороны это хорошо — Линукс популяризуется, с другой стороны этот процесс должен явно быть более укреплён, чтобы проникновение человека в глубины системы происходили соразмеренно с набором опыта.
Теги:
Хабы:
Данная статья не подлежит комментированию, поскольку её автор ещё не является полноправным участником сообщества. Вы сможете связаться с автором только после того, как он получит приглашение от кого-либо из участников сообщества. До этого момента его username будет скрыт псевдонимом.