alsa, взаимодействие с драйвером звуковой карты
Шолом, православные.
Здесь я впервые, пришел за советом. В этих ваших линуксах плыву, так что не ругайтесь сильно. Вопросов будет много и охватывать они будут много чего, если tl;dr - уж извиняйте.
Не могли бы вы пояснить, что представляет из себя алса, как это чудо работает, как работает и опознается драйвер звуковой карты, как с ним работает алса? Подробностей особо не надо, просто поправьте меня, где ошибаюсь, да помогите склеить отдельно понятые части.
В моем понимании, есть звуковая карта, находящаяся на шине pci.
1) К ее регистрам можно получить доступ как к диапазону памяти, задав соответствующие бар-регистры (=смещение диапазона регистров контроллера) в конфигурационном пространстве pci.
2) При старте системы биос проверяет наличие абонентов на шине (Кстати, как? Перебор всех возможных адресов в конфигспейсе на наличие в них записей? Перечитывание спецификации pci мне в этом поможет - сто лет назад с ней ознакамливался), считывает все vid, did, и какие там еще информационные поля есть. На основе этих полей и каких-то предустановленных в биос таблиц определяются устройства, их формальные названия, задаются смещения для адресации регистров, выставляются режимы работы базового оборудования (контроллеры южного моста: диски гибкие и не очень, старинная видеокарточка; северного моста: контроллер памяти, управление питанием/частотой, графическая подсистема).
3) На настроенном оборудовании выполняется загрузка ядра в память - раскрутка системы. Ядро выполняет донастройку, все работает.
Сильно ошибся? Примерно так для меня выглядит раскрутка системы с нуля.
Хотелось бы заострить внимание на пункте 3). Сразу скажу изначальную проблему: после замены материнской платы (и камня) система завелась, но звуковая карта не подтянулась, и, насколько я могу видеть, все остальные устройства определены как-то тоже не так, за исключением сети. Тот аудио девайс, что есть - какой-то наворот видеокарточки, раньше он тоже был.
Сейчас я ожидал увидеть
00:1f.3 Realtek ALC887
или что-нибудь вроде того - исходя из доки на материнскую плату.
( читать дальше... )
Соответственно, пытаюсь разобраться, почему в интернете советуют переустанавливать/конфигурировать alsa (второе по жиденьким мануалам для моего случая, кстати, не помогло, а первое я что-то пока не могу понять, как сделать).
Итак, теперь самое для меня тумманое - подробный пункт 3). Для простоты буду говорить только о подсистеме аудио.
На определенном этапе в память будет загружен определенный набор драйверов (linux/drivers/ ??? почему-то
( читать дальше... )
интеловские драйвера, похоже, лежат в гпу. Где находятся риалтековские - я так и не нашел. Насколько могу судить по их сайту, драйвера они включают в alsa).
Если драйвера, как в моем случае, включены в состав alsa, а он, в свою очередь, включен в состав ядра - то они тоже окажутся в памяти. Далее, ядро каким-то образом (кстати, каким?) определяет, какой драйвер должен использоваться для имеющегося оборудования, использует в дальнейшем только его. При запуске драйвера выполняется инициализация, вторичная настройка оборудования в соответствии с возможностями драйвера и звуковой подсистемы (а значит, она должна быть загружена раньше, чем драйвер?). Не очень понимаю, какую роль во всем этом играет файловая операция probe (ldd3 и интернет ясности не внесли, я что-то фундаментальное для этого никак не могу уловить, видимо).
Дальше alsa предоставляет какой-то унифицированный интерфейс для звуковой системы надлежащего уровня, или самодостаточно обрабатывает вызовы от приложений, если они работают с alsa напрямую.
Вот тут у меня много непонимания и косяков, подскажите/поправьте, пожалуйста, очень нужно для выстроения стройной картинки в голове.
Как же так тогда получается, что устройство у меня определяется неверно? Неужели драйверов для него нету в имеющейся сборке alsa? Хотя в моей текущей системе - Ubuntu 14.04 LTS - все должно работать из коробки, согласно англоязычном форумам. Могла ли замена материнской платы сбить какую-то конфигурацию alsa?
Что еще не очень понятно, почему-то realtek отсутствует в списке поддерживаемых alsa'ой, хотя это, наверное, один из самых распространенных вендоров интегрированных звуковух:
http://www.alsa-project.org/main/index.php/Matrix:Main
Буду благодарен за любые советы, ответы, замечания и исправления.
PS. В конечном итоге мне бы хотелось заставить звук работать как можно меньшими телодвижениями благодаря появлению понимания, как это все работает. В идеале - поправить какой-нибудь конфиг. Чуть хуже - пересобрать всю alsa. Совсем ужас - всю систему (лол)
PPS. linux device drivers 3rd ed пролистан n лет назад. Мозги не вправил.
PPPS. Что-то тэг (br) работает как-то не так