вівторок, 13 березня 2012 р.

Драйвер Linux для устройства

Многие новички интересуются как установить драйвер для железяки в Linux.
То есть проводят аналогию с MS Windows, в которой для оборудования требовались многочисленные Далее-Далее в дистрибутивах драйверов.

Дело в том, что в мире Windows принято устанавливать драйвера от производителя железяки и это кажется естественным и разумным. Но в мире Linux, исторически сложилась по другому приципу модель "драйверов".

Но сначала напомню, а что же такое драйвер.

Драйвер - это программа (некий программный код), который "обслуживает" железяку и служит "прослойкой" между железякой и операционной системой.

Эта модель эффективна, так как операционной системе не нужно знать, как общаться с миллионами устройств по всему миру. Операционная система будет общаться с драйвером по согласованным правилам, а уже драйвер будет общаться с железякой, для которой он и был написан.

А теперь историческая сводка, почему в Линуксе чуть другая система работы с драйверами.

Вы думаете, что когда Линукс делал свои первые шаги, все производители своих железяк бросились писать драйвера для Линукс? Нет. Этого не случилось. Многие не верили в будущий успех Linux на рынке Desktop систем и прямо заявляли, что не станут тратить время своих программистов на написание кода драйвера под Linux, который на рынке занимал маленький процент.

Поэтому драйвера писали энтузиасты, которые хотели видеть работающей в Линуксе ту или иную железяку. Иногда фирмы всё таки помогали так или иначе энтузиастам. Например, публиковали спецификации на свои устройства, чтобы программистам было проще понять логику работы железяки и не мучатся со сложной "обратной разработкой" (reverse engineering).

С ростом популярности Линукс, многие фирмы даже стали выделяли часть сотрудников, которые так или иначе занимались вопросом работоспособности устройства в Линуксе.

Но факт есть факт, исторически так получилось, что открытое сообщество, работающее над ядром линукс во главе с Линусом Торвальдсом, включало после проверки код драйвера в ядро linux. Так как устройствами в системе линукс занимается именно его ядро. То есть, постепенно всё больше и больше писалось драйверов и все они в своё время были включены в ядро. Поэтому, чем новее используемое вами ядро, тем выше шанс, что железяка "запустится".

Раньше традиционно все драйвера, а точнее их код, "размещался" в ядре. Позднее код драйверов стали выносить в отдельные "модули ядра" и загружать в основное ядро с помощью специального механизма.

Любой спросит, а можно ли драйвера устройства написанные для MS Windows, как-нибудь "прикрутить" в Linux. Проведу вам аналогию. Если операционную систему сравнить с "матерью", то у "мамы Windows" свои дети-программы, а следовательно и дети-драйвера. У "мамы Linux" свои.

Есть проекты типа NDISwrapper, которые пытаются использовать не родной код драйвера. В случае с NDISwrapper - это попытка использовать драйверы беспроводных устройств Wi-Fi, предназначенные для операционной системы Microsoft Windows в операционной системе Linux.

Но вы должны понимать, это не просто и лучший вариант всё таки родной драйвер.

Дак как же "поставить драйвер в Linux"?
Самое лучшее - проверить штатными средствами вашей системы, что определилось и что уже работает сразу "искаропки". Помните, что 99-ю процентами устройств в линуксе занимается ядро линукс.

В Ubuntu есть Менеджер драйверов (Драйверы Устройств), которые покажет те устройства, для которых есть проприетарные (закрытые) драйвера от производителя. Если производители не закрывали бы коды своих драйверов, как они делают это в MS Windows, то у вас не было бы никаких проблем и всё было оформлено заранее в виде соответствующих модулей ядра.

Не нужно ничего устанавливать вручную, если не понимаете, что делаете. Это чревато тем, что при вашем обновлении новыми ядрами - 99% что ваш вручную установленный драйвер "слетит". Новое ядро не будет уведомлено о ваших вручную сделанных изменениях-костылях и многое "рухнет". Например, вручную установленный непонятно откуда взятый драйвер видеокарты при обновлении ядра может "слететь" и следующая загрузка в ваше графическое окружение может закончиться неудачно.

Для искоренения этой ситуации во многих дистрибутивах линукс используется система DKMS, которая при выходе новых ядер перекомпилирует код драйверов.

Утомил?
Кратко! Обновляйтесь и не используйте старые версии вашего дистрибутива. Одно дело использовать стабильные долгоподдерживаемые релизы Ubuntu LTS, а другое дело просто сидеть на старом релизе, боясь обновлений.

Помните! Новее ядро - выше шанс, что железяка заработает.

При прочтении каких-либо советов из Интернета - будьте предельно аккуратны! Наши друзья это - репозитория и/или deb пакеты.
Не нужны всякие make install в современных системах Linux, основанных на идеи пакетного менеджмента, в таких как Ubuntu Linux.

Похожие материалы:
Установка программ в Ubuntu
Репозитории Ubuntu
Делаем отчёт по оборудованию в MS Windows - получаем результат о поддержке Линуксом Linux HCL : поддерживаемое оборудование

Немає коментарів:

Дописати коментар

HyperComments for Blogger

comments powered by HyperComments