Как установить драйвера на Linux
Для того чтобы установленная операционная система могла корректно работать и взаимодействовать с комплектующими компьютера или другими внешними устройствами, подключенными к нему, должны быть установлены драйвера. В Windows с ними бывает много проблем, в особенности у людей слабо владеющими ПК, на деле в этом нет ничего трудного: достаточно узнать точное название модели и найти нужные файлы на официальном сайте производителя в разделе «Помощь». Но что насчёт дистрибутивов на базе GNU/Linux?
Как обстоит дело в Linux с ПО
Debian, Ubuntu их форки и другие дистрибутивы в большинстве случаев работают с открытыми драйверами, которые встроены в ядро Linux. Таким образом пользователь сможет в полной мере пользоваться как Live USB & CD, так и только что установленной системой. Ничего, кроме обновлений, устанавливать не приходится.
Конкретных производителей у свободного ПО обычно нет, разрабатывается оно или сообществом или командой некоммерческих программистов. К сожалению, оно почти всегда уступает проприетарному программному обеспечению в производительности, поэтому при работе с некоторыми программами или во время игр могут наблюдаться ощутимые неудобства.
Инсталляция проприетарных и свободных драйверов
Установка драйверов на Linux способна снизить нагрузку на компьютер и сделать работу систему плавнее и более оптимизированной. В особенности это подойдёт для игр и редакторов трёхмерной графики. Далеко не всегда на отдельно взятую машину можно установить проприетарный драйвер. Иногда таковых нет или оборудование в силу своей неактуальности прекращает поддерживаться. Тут два выхода: продолжать пользоваться открытым ПО или думать о переходе на более старый LTS дистрибутив, для которого производители ещё выпустили программное обеспечение.
Нередко на старых машинах с ОС Debian бывает так, что даже открытые драйвера не устанавливаются. Это обычно связано с устареванием железа или с отсутствием нужных компонентов репозитории.
Добавление несвободных компонентов в систему:
$ deb http://httpredir.debian.org/debian/ «Кодовое имя дистрибутива» main contrib non-free
$ sudo apt update
$ sudo apt upgrade
Установка несвободной прошивки, OpenGL и пакета поддержки графики:
$ sudo apt install firmware-linux-nonfree libgl1-mesa-dri xserver-xorg-video-ati
После этого нужно перезагрузить систему.
Также есть и свободный графический драйвер для AMD Radeon «AMDGPU». Его можно скачать с сайта производителя, выбрав нужный пакет.
Или установить из терминала. Сначала необходимо проверить систему на наличие данного пакета:
$ dpkg -l amdgpu-pro
Команды для обновления или чистой инсталляции:
$ wget -c —referer=’http://support.amd.com/ru-ru/download/desktop?os=Linux+x86′ https://www2.ati.com/drivers/linux/ubuntu/amdgpu-pro-16.60-379184.tar.xz
$ tar -Jxvf amdgpu-pro-16.60-379184.tar.xz
$ sudo usermod -a -G video $LOGNAME
Далее необходима перезагрузка.
Используя старое оборудование, следует поставить драйвера Linux, которые последними были выпущены. Скорее всего, это будет Ubuntu 14.04 или ещё более старая версия.
Nvidia
Установить драйвера в Linux для Nvidia легче. На официальном сайте есть целый запрос для компьютеров с различными архитектурами и моделями видеокарт.
Также можно провести инсталляцию из официального репозитория. Проверка на наличие версий драйверов:
$ sudo apt update && clear && apt-cache search nvidia-9 | grep ‘binary driver’
$ sudo apt install nvidia-«Версия пакета» nvidia-«Настройки»
Создание конфига xorg.conf:
Перезагрузка компьютера, после которого всё должно работать правильно.
Intel
У Intel нет проприетарного ПО, все драйверы имеют открытый исходный код и находятся внутри ядра Linux. То есть для пользователей ноутбуков и настольных ПК с процессором Intel и встроенным графическим ядром вообще не придётся думать о дополнительных настройках ОС.Также написано и на официальной странице: «Большинство Linux-дистрибутивов включают в себя графические драйверы Intel. Обратитесь к поставщику операционной системы и используйте их дистрибутив для доступа и поддержки драйверов». Другими словами производительность операционной системы на базе процессора Intel не зависит от несвободного ПО.
Старые комплектующие
К сожалению, производители рано или поздно прекращают поддержку старого оборудования. В таком случае остаётся или использовать поддерживаемую версию Windows, или оставаться на более поздних дистрибутивах Ubuntu или Debian, для которых также были выпущены пакеты поддержки.
Источник
Добавление драйвера устройства в Linux
Обычно в системах Unix и Linux установка драйверов для новых устройств не вызывает трудностей. Даже для неопытных пользователей этих систем. Но это в том случае, если производители устройства (и/или разработчики драйверов) позаботились об этом. И оснастили пакет драйвера специальными установочными и конфигурационными скриптами. А также протестировали всё это в нескольких системах. Однако бывают случаи, когда «удобной» возможности установить драйвер устройства нет, но есть исходные коды драйвера. В таком случае можно попытаться собрать драйвер самостоятельно. Конечно, это далеко не так просто, нужно поэкспериментировать. Но успешный результат возможен с высокой вероятностью. И главное, что для этого требуется — это знать и понимать общий порядок действий в случае ручной сборки драйвера. С такими задачами часто сталкиваются администраторы систем, обслуживающих технологические процессы на производствах, хостинг-площадки и т. д.
Способы установки драйверов
Для Linux-систем установка драйверов устройств происходит тремя основными способами:
- установка патча для определённых версий ядра;
- использование специальных сценариев для установки и конфигурации драйвера;
- с помощью загружаемого модуля ядра.
Надо признать, что для Linux ручная установка драйверов представляет собой довольно сложную и трудоёмкую работу. Поэтому разработчики стремятся всё чаще обеспечивать автоматическую установку и настройку для своих драйверов/устройств. Ведь они заинтересованы в максимально эффективном распространении своих разработок. По этой причине самым распространённым способом установки драйверов является использование сценариев установки. Для самых популярных типов устройств, например для видеокарт, аудиоустройств и даже для сетевого оборудования в настоящее время трудно найти драйверы без автоматической установки.Установка таких драйверов ничем не отличается от установки обычных пакетов. Вся инструкция описана в файле README, подробнее об установке из исходников читайте здесь.
Но есть оборудование (всевозможные адаптеры, преобразователи интерфейсов) и ситуации, для которых есть только исходные коды драйвера (часто не официальные) и необходимость интеграции его с ядром.
Если в качестве драйвера используются патчи ядра, то установить их (собственно и сам драйвер) можно выполнив следующие команды:
Расположение «каталог_исходных_кодов_ядра» зависит от системы, в CentOS это /usr/lib/modules/ /kernel, Например
В случае с ручной установкой, необходимо для начала интегрировать драйвер некоего устройства (исходные коды) в дерево каталогов исходных кодов ядра.
Ручная установка драйвера
Для примера, пусть требуется добавить в ядро драйвер некоего сетевого устройства netdevice. Драйвер этого устройства нужно (как уже известно) поместить в один из каталогов с исходными кодами ядра. А именно — в каталог drivers, внутри которого может быть следующее содержимое:
Драйверы чаще всего помещаются в подкаталоги scsi, char, block, net, а также sound и usb. Эти подкаталоги отражают схему размещения драйверов в зависимости от их типа: блочные — для дисков IDE, символьные — для последовательных портов например, для сетевых устройств, звуковых плат и USB-устройств — USB-адаптеры, USB-модемы и т. д. Другие подкаталоги служат для размещения драйверов других категорий, в частности для системных и разного рода шин (pci, pcie, nubus, zorro), а также для платформенно-зависимых драйверов — acorn, macintosh.
Таким образом, драйверы для сетевого устройства netdevice следует поместить в следующий каталог:
Исходные коды драйвера представляют собой набор файлов *.c, *.cpp и *.h, которые могут быть объединены в дерево каталогов, в зависимости от того, как составлен проект «исходников» драйвера.
Теперь необходимо включить исходные коды драйвера netdevice в процесс компиляции ядра. Для этого нужно отредактировать следующие файлы:
- /drivers/net/Makefile – для сборки самого драйвера;
- /drivers/net/Kconfig – для того, чтобы имя нового устройства было доступно для конфигурирования.
Файлы Makefile и Kconfig содержатся в каждом каталоге дерева каталогов с исходными кодами ядра Linux. Это необходимо для организации универсальной разработки и расширения функционала и возможностей ядра при его сборке из исходных кодов путём независимого дополнения новым кодом. В данном случае кодом драйвера для устройства netdevice.
В файл Makefile следует добавить следующий код:
Таким образом, при сборке ядра в его составе будет собран и сам драйвер netdevice. После дополнения файла Kconfig следующим кодом:
устройство netdevice будет доступно для использования конфигурационным макросом (необходимо на этапе конфигурирования сборки ядра). Здесь команда config использует ключевое слово NETDEVICE_DEV, которое обязательно должно совпадать с фразой, следующей после CONFIG, которое ранее было указано в файле Makefile.
Команда tristate указывает, что драйвер может быть собран как загружаемый модуль, если это поддерживается. Если нет, то вместо tristate следует указать bool – драйвер будет частью ядра. Фраза ‘Netdevice support’ будет отображаться в выводе конфигурационного скрипта на этапе конфигурирования сборки ядра. Это может быть любой текст, идентифицирующий устройство, для которого добавляется драйвер.
Использование нового драйвера
В современных версиях ядра Linux задействование новых драйверов существенно упрощено. В отличие версий, выпущенных раньше 2.6. Тогда это было настоящей головоломкой и требовало знаний в программировании. Но архитектурные изменения в модели драйверов и устройств, пришедшие в версии 2.6 позволяют теперь связывать драйверы с ядром на более высоком «общепользовательском» уровне. Для этого используется специальный конфигурационный макрос MODULE_DEVICE_TABLE. Он создаёт соответствия, которые позволяют утилите modprobe (и ей подобным) задействовать новые драйверы ядра.
Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.
Источник
Драйвер 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 : поддерживаемое оборудование
Источник