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