Я понимаю, что драйверы скомпилированы в ядре, но почему API так тесно связан с ядром?
Можно ли установить драйверы таким образом, чтобы мне не приходилось переустанавливать драйверы каждый раз, когда происходит обновление?
Тот факт, что я могу снова использовать драйвер и скомпилировать его, означает, что Водитель действителен. Тогда зачем мне это делать вручную?
Ссылка на драйвер, который я использую
Его собственный драйвер дисплея AMD Catalyst ™ 13.1 для Linux x86
AMD Radeon HD 7700 Series
В настоящее время работает
Linux 3.5.0-25-generic #39-Ubuntu SMP x86_64 x86_64 x86_64 GNU/Linux
Исходя из личного опыта, новое ядро помещает в совершенно новый каталог драйверов / модулей и не пытается выяснить, какие драйверы / модули можно скопировать из старых каталогов в новые.
Возможно, вы могли бы скопировать старый драйвер / модуль в новый каталог, но не существует (насколько мне известно) хорошего способа автоматического определения совместимости версий ядра для драйвера.
Я думаю, что может возможно создать пакет, в котором есть скрипты, которые автоматически запускаются при изменениях в ядре, чтобы перестраивать драйверы, так что вам не нужно, но это не похоже на то, что происходит для конкретных драйверов, которые вы используете.
И это не редкость, потому что очень сложно писать сценарии установки / обновления для каждой комбинации операционной системы / видеодрайвера и тестировать их.
Любые драйверы, не являющиеся частью основного дерева ядра (которое, конечно, включает в себя проприетарные драйверы), должны быть перестроены для новых версий ядра, так как внутренние интерфейсы ядра могли измениться. Драйверы тесно связаны с ядром, потому что они работают в пространстве ядра и используют внутренние интерфейсы ядра. Приложения представляют собой другую игру и используют интерфейс syscall, который является интерфейсом пользователя и ядра, и этот интерфейс чрезвычайно стабилен.
Грег Кроа-Хартман опубликовал отличную статью на эту тему здесь .