Установка драйвера linux


Установка драйверов в Linux - Losst

В Windows мы привыкли, что перед тем, как новое оборудование будет работать, для него необходимо установить драйвера. Не важно будет ли это USB устройство, веб-камера или видеокарта. Драйвера в Windows выпускаются производителями и распространяются через интернет или на диске в комплекте с оборудованием.

В Linux, драйвера тоже необходимы, но ситуация состоит с ними немного по-другому. Здесь все свободные драйвера Linux встроены в ядро и если ваше оборудование будет работать с этой операционной системой, то, скорее всего, оно будет работать из коробки. Свободные драйвера разрабатываются производителями оборудования или же независимыми разработчиками. Также производители могут не открывать код своих драйверов, тогда они считаются проприетарными и не включаются в ядро, а доустанавливаются вручную.

Давайте рассмотрим подробнее работу с драйверами linux и Windows.

Содержание статьи:

Как драйвера устройств работают в Windows

После установки Windows вам необходимо установить драйвера устройств, предоставляемые производителями - драйверы материнской платы, набора микросхем, драйверы видеокарты, звука, сети, wifi и многое другое.

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

Если оборудование не работает в WIndows, то обычно вы можете найти драйвер чтобы заставить его работать. Обычно достаточно подыскать подходящий драйвер на просторах сети.

Как работают драйвера Linux

В Linux ситуация с драйверами очень сильно отличается. Большинство драйверов для вашего оборудования распространяются в виде открытого программного обеспечения и интегрированы в дистрибутив Linux. Эти драйверы linux, как правило, являются частью ядра Linux, но здесь есть исключение - драйверы видеокарты являются частью программного обеспечения Xorg, а драйверы принтера включены в набор CUPS (система печати).

Это значит, что большинство доступных для linux драйверов уже установлены на вашем компьютере, включены вместе с ядром, в виде модулей ядра или вместе с графическим сервером или сервером печати. Установка драйверов Linux почти не нужна. Драйвера в Linux разработаны, в основном, энтузиастами, но иногда их выпускают сами производители оборудования, которые вносят свой вклад в развитие ядра Linux и других проектов, например, это Intel, AMD, а также другие, более мелкие производители.

Все драйвера установлены из коробки, а значит вам не придется искать драйвера для каждого устройства в вашей системе и вручную их устанавливать. Система автоматически определит ваше оборудование и сама загрузит нужные драйвера в linux. Но здесь есть одно исключение - это проприетарные драйвера ядра linux и прошивки.

Установка проприетарных драйверов Linux

Некоторые производители не хотят открывать исходный код своих драйверов, поэтому для поддержки оборудования выпускают проприетарные драйвера в Linux с закрытым исходным кодом. Большинство дистрибутивов Linux не включают такие драйвера в свой состав, а значит они не смогут их автоматически определить и загрузить.

Чаще всего нам приходится сталкиваться с проприетарными драйверами для видеокарт, например, для NVIDIA, которые обеспечивают лучшую производительность в играх на Linux. Конечно, есть драйверы ядра Linux с открытым исходным кодом, которые заставят вашу видеокарту работать, но они не могут обеспечить достаточный уровень производительности в 3D играх. Некоторые драйвера wifi по прежнему закрыты, поэтому ваше оборудование не будет работать пока вы их не установите.

Установка драйверов в Linux зависит от вашего дистрибутива. В Ubuntu и основанных на ней дистрибутивах есть специальный инструмент - Дополнительные драйверы.

Программа определит, какие проприетраные драйверы устройств Linux  можно установить и предложит скачать и установить их. В Linux Mint тоже есть инструмент менеджер драйверов, он работает аналогично инструменту в Ubuntu. Fedora - против проприетарных драйверов Linux и здесь нет никакого способа их установить. Во многих дистрибутивах проприетарные драйверы устройств linux можно найти в неофициальных репозиториях. Каждый дистрибутив решает эту проблему по-разному.

Установка прошивок в Linux

Не все могут делать драйвера с открытым кодом или проприетарные драйвера. Некоторым драйверам необходимы прошивки, чтобы правильно работать с устройствами. Например, прошивки нужны для работы некоторых модулей wifi или сетевых интерфейсов.

Чтобы установить прошивки в Linux необходимо скачать и установить пакет linux-firmware, это можно сделать с помощью следующей команды в Ubuntu:

sudo apt install linux-firmware

А в RPM дистрибутивах:

sudo yum install linux-firmware

Также возможно придется установить другие прошивки. Чтобы посмотреть подробнее, что нужно, и как установить, посмотрите лог ядра dmesg.

Как установить драйверы для принтера в Linux

Возможно, вам понадобится поставить драйвера linux для принтера. Однако при использовании инструмента для конфигурации принтеров - CUPS вы можете выбрать нужный драйвер из баз данных. Как правило, программа определяет производителя вашего принтера, а в списке вы можете выбрать точную модель принтера.

Вы также можете попытаться определить принтер по описанию PostScript или PPD файла. Эти файлы часто входят в состав драйвера принтера для Windows и вы можете найти PPD файл, который сделает работу вашего принтера лучше. Файл PPD можно выбрать в процессе работы CUPS.

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

Как заставить работать другое программное обеспечение

Иногда вам может понадобиться поставить драйвера linux для другого оборудования, которые не предоставляются автоматически. Например, NVIDIA предоставляет собственный инсталлятор для своего драйвера. Но тем не менее лучше использовать драйвера упакованные для вашего дистрибутива, они будут работать лучше.

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

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

Выводы

Вы не должны возиться с драйверами слишком много. Драйвера в Linux с открытым исходным кодом и они интегрированы в ядро. В большинстве случаев вам не нужно устанавливать их или изменять, система автоматически определит оборудование и загрузит автоматические драйверы. Когда вы установили Linux, ваше оборудование должно работать либо сразу, либо после установки нескольких проприетарных драйверов.

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

Добавление драйвера устройства в Linux

Обычно в системах Unix и Linux установка драйверов для новых устройств не вызывает трудностей. Даже для неопытных пользователей этих систем. Но это в том случае, если производители устройства (и/или разработчики драйверов) позаботились об этом. И оснастили пакет драйвера специальными установочными и конфигурационными скриптами. А также протестировали всё это в нескольких системах. Однако бывают случаи, когда «удобной» возможности установить драйвер устройства нет, но есть исходные коды драйвера. В таком случае можно попытаться собрать драйвер самостоятельно. Конечно, это далеко не так просто, нужно поэкспериментировать. Но успешный результат возможен с высокой вероятностью. И главное, что для этого требуется — это знать и понимать общий порядок действий в случае ручной сборки драйвера. С такими задачами часто сталкиваются администраторы систем, обслуживающих технологические процессы на производствах, хостинг-площадки и т. д.

Содержание

  1. Способы установки драйверов
  2. Ручная установка драйвера
  3. Использование нового драйвера

Способы установки драйверов

Для Linux-систем установка драйверов устройств происходит тремя основными способами:

  • установка патча для определённых версий ядра;
  • использование специальных сценариев для установки и конфигурации драйвера;
  • с помощью загружаемого модуля ядра.

Надо признать, что для Linux ручная установка драйверов представляет собой довольно сложную и трудоёмкую работу. Поэтому разработчики стремятся всё чаще обеспечивать автоматическую установку и настройку для своих драйверов/устройств. Ведь они заинтересованы в максимально эффективном распространении своих разработок. По этой причине самым распространённым способом установки драйверов является использование сценариев установки. Для самых популярных типов устройств, например для видеокарт, аудиоустройств и даже для сетевого оборудования в настоящее время трудно найти драйверы без автоматической установки.Установка таких драйверов ничем не отличается от установки обычных пакетов. Вся инструкция описана в файле README, подробнее об установке из исходников читайте здесь.

Но есть оборудование (всевозможные адаптеры, преобразователи интерфейсов) и ситуации, для которых есть только исходные коды драйвера (часто не официальные) и необходимость интеграции его с ядром.

Если в качестве драйвера используются патчи ядра, то установить их (собственно и сам драйвер) можно выполнив следующие команды:

$ cd каталог_исходных_кодов_ядра
 $ patch -p1 < файл_патча

Расположение «каталог_исходных_кодов_ядра» зависит от системы, в CentOS это /usr/lib/modules/<версия ядра>/kernel, Например

 /usr/lib/modules/3. 10.0-862.el7.x86_64/kernel

В случае с ручной установкой, необходимо для начала интегрировать драйвер некоего устройства (исходные коды) в дерево каталогов исходных кодов ядра.

Ручная установка драйвера

Для примера, пусть требуется добавить в ядро драйвер некоего сетевого устройства netdevice. Драйвер этого устройства нужно (как уже известно) поместить в один из каталогов с исходными кодами ядра. А именно — в каталог drivers, внутри которого может быть следующее содержимое:

$ ls -F каталог_исходных_кодов_ядра/drivers

Пример вывода

Драйверы чаще всего помещаются в подкаталоги scsi, char, block, net, а также sound и usb. Эти подкаталоги отражают схему размещения драйверов в зависимости от их типа: блочные — для дисков IDE, символьные — для последовательных портов например, для сетевых устройств, звуковых плат и USB-устройств — USB-адаптеры, USB-модемы и т. д. Другие подкаталоги служат для размещения драйверов других категорий, в частности для системных и разного рода шин (pci, pcie, nubus, zorro), а также для платформенно-зависимых драйверов — acorn, macintosh.

Таким образом, драйверы для сетевого устройства netdevice следует поместить в следующий каталог:

каталог_исходных_кодов_ядра/drivers/net/netdevice

Исходные коды драйвера представляют собой набор файлов *.c, *.cpp и *.h, которые могут быть объединены в дерево каталогов, в зависимости от того, как составлен проект «исходников» драйвера.

Теперь необходимо включить исходные коды драйвера netdevice в процесс компиляции ядра. Для этого нужно отредактировать следующие файлы:

  • /drivers/net/Makefile – для сборки самого драйвера;
  • /drivers/net/Kconfig – для того, чтобы имя нового устройства было доступно для конфигурирования.

Файлы Makefile и Kconfig содержатся в каждом каталоге дерева каталогов с исходными кодами ядра Linux. Это необходимо для организации универсальной разработки и расширения функционала и возможностей ядра при его сборке из исходных кодов путём независимого дополнения новым кодом. В данном случае кодом драйвера для устройства netdevice.

В файл Makefile следует добавить следующий код:

obj-$(CONFIG_NETDEVICE_DEV) += netdevice/

Таким образом, при сборке ядра в его составе будет собран и сам драйвер netdevice. После дополнения файла Kconfig следующим кодом:

config NETDEVICE_DEV
 tristate 'Netdevice support'

устройство netdevice будет доступно для использования конфигурационным макросом (необходимо на этапе конфигурирования сборки ядра). Здесь команда config использует ключевое слово NETDEVICE_DEV, которое обязательно должно совпадать с фразой, следующей после CONFIG, которое ранее было указано в файле Makefile.

Команда tristate указывает, что драйвер может быть собран как загружаемый модуль, если это поддерживается. Если нет, то вместо tristate следует указать bool – драйвер будет частью ядра. Фраза ‘Netdevice support’ будет отображаться в выводе конфигурационного скрипта на этапе конфигурирования сборки ядра. Это может быть любой текст, идентифицирующий устройство, для которого добавляется драйвер.

Использование нового драйвера

В современных версиях ядра Linux задействование новых драйверов существенно упрощено. В отличие версий, выпущенных раньше 2.6. Тогда это было настоящей головоломкой и требовало знаний в программировании. Но архитектурные изменения в модели драйверов и устройств, пришедшие в версии 2.6 позволяют теперь связывать драйверы с ядром на более высоком «общепользовательском» уровне. Для этого используется специальный конфигурационный макрос MODULE_DEVICE_TABLE. Он создаёт соответствия, которые позволяют утилите modprobe (и ей подобным) задействовать новые драйверы ядра.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Как установить драйвер устройства в Linux

Изображение:

Интернет-архив Книжные изображения. Изменено Opensource.com. СС BY-SA 4.0

Одной из самых сложных задач для людей, переходящих со знакомой системы Windows или MacOS на Linux, является установка и настройка драйвера. Это понятно, поскольку в Windows и MacOS есть механизмы, которые делают этот процесс удобным для пользователя. Например, когда вы подключаете новое оборудование, Windows автоматически обнаруживает его и показывает всплывающее окно с вопросом, хотите ли вы продолжить установку драйвера. Вы также можете загрузить драйвер из Интернета, а затем просто дважды щелкнуть его, чтобы запустить мастер, или импортировать драйвер через диспетчер устройств.

Этот процесс не так прост в операционной системе Linux. По одной причине, Linux — это операционная система с открытым исходным кодом, поэтому существуют сотни вариантов дистрибутива Linux. Это означает, что невозможно создать одно практическое руководство, которое работало бы для всех дистрибутивов Linux. Каждая операционная система Linux обрабатывает процесс установки драйвера по-своему.

Во-вторых, большинство драйверов Linux по умолчанию имеют открытый исходный код и интегрированы в систему, что делает установку любых драйверов, которые не включены, довольно сложной задачей, даже несмотря на то, что большинство аппаратных устройств могут быть обнаружены автоматически. В-третьих, политика лицензирования различается в разных дистрибутивах Linux. Например, Fedora запрещает включение проприетарных драйверов, юридически обремененных или нарушающих законы США. И Ubuntu просит пользователей избегать использования проприетарного или закрытого оборудования.

Чтобы узнать больше о том, как работают драйверы Linux, я рекомендую прочитать Введение в драйверы устройств в книге Драйверы устройств Linux .

Два подхода к поиску драйверов

1. Пользовательские интерфейсы

Если вы новичок в Linux и пришли из мира Windows или MacOS, вы будете рады узнать, что Linux предлагает способы узнать, доступен ли драйвер с помощью мастера. -подобные программы. Ubuntu предлагает опцию «Дополнительные драйверы». Другие дистрибутивы Linux предоставляют вспомогательные программы, такие как Package Manager для GNOME, которые вы можете проверить на наличие доступных драйверов.

2. Командная строка

Что делать, если вы не можете найти драйвер через приложение с удобным пользовательским интерфейсом? Или у вас есть доступ только через оболочку без какого-либо графического интерфейса? Возможно, вы даже решили расширить свои навыки с помощью консоли. У вас есть два варианта:

  1. Использовать репозиторий

    Это похоже на команду homebrew в MacOS.   Используя yum , dnf , apt-get и т. д., вы фактически добавляете репозиторий и обновляете кеш пакетов.

  1. Загрузите, скомпилируйте и соберите его самостоятельно

    Обычно это включает загрузку пакета непосредственно с веб-сайта или использование команды wget и запуск файла конфигурации и Makefile для его установки. Это выходит за рамки этой статьи, но вы сможете найти онлайн-руководства, если решите пойти по этому пути.

Проверьте, установлен ли уже драйвер

Прежде чем переходить к установке драйвера в Linux, давайте рассмотрим некоторые команды, которые определяют, доступен ли драйвер в вашей системе.

Команда lspci показывает подробную информацию обо всех шинах PCI и устройствах в системе:

 $ lscpci 

Или с grep :

 $ lscpci | grep SOME_DRIVER_KEYWORD 

Например, вы можете ввести lspci | grep SAMSUNG , если вы хотите узнать, установлен ли драйвер Samsung.

Команда dmesg показывает все драйверы устройств, распознаваемые ядром:

 $ dmesg 

Или с grep :

 $ dmesg | grep SOME_DRIVER_KEYWORD 

Любой распознанный драйвер будет отображаться в результатах.

Если команды dmesg или lscpi ничего не распознают, попробуйте эти две команды, чтобы узнать, загружен ли хотя бы драйвер на диск:

 $ /sbin/lsmod 

и

 $ find /lib /modules 

Совет: Как и в случае с lspci или dmesg , добавьте | grep для любой команды выше, чтобы отфильтровать результаты.

Если драйвер распознается этими командами, но не lscpi или dmesg , это означает, что драйвер находится на диске, но не в ядре. В этом случае загрузите модуль с помощью команды modprobe :

 $ sudo modprobe MODULE_NAME 

Запустите эту команду как sudo , так как этот модуль должен быть установлен как пользователь root.

Добавить репозиторий и установить

Существуют различные способы добавления репозитория через yum , dnf и apt-get ; описание их всех выходит за рамки данной статьи. Для простоты в этом примере будет использоваться apt-get , но идея аналогична для других опций.

1. Удалите существующий репозиторий, если он существует.

 $ sudo apt-get purge NAME_OF_DRIVER* 

где NAME_OF_DRIVER — вероятное имя вашего драйвера. Вы также можете добавить соответствие шаблону к своему регулярному выражению для дальнейшей фильтрации.

2. Добавить в репост репозиторий, который должен быть указан в руководстве по драйверам.

 $ sudo add-apt-repository REPOLIST_OF_DRIVER 

где REPOLIST_OF_DRIVER следует указать из документации драйвера (например, epel-list ).

3. Обновите список репозиториев.

 $ sudo apt-get update 

4. Установите пакет.

 $ sudo apt-get install NAME_OF_DRIVER 

5. Проверьте установку.

Запустите команду lscpi (см. выше), чтобы убедиться, что драйвер успешно установлен.

  • Linux.die.net: apt-get(8) справочная страница Linux
  • Установите драйверы NVidia на CentOS
  • Как установить драйверы NVidia в Linux
  • Как установить драйверы NVidia на Ubuntu

Эта работа находится под лицензией Creative Commons Attribution-Share Alike 4.0 International License.

Как установить драйвер устройства в Linux

Опубликовано: 16 мая 2019 г. | | на Брайант Сон (Судоер, Red Hat)

Одной из самых сложных задач для людей, переходящих со знакомой системы Windows или MacOS на Linux, является установка и настройка драйвера. Это понятно, поскольку в Windows и MacOS есть механизмы, которые делают этот процесс удобным для пользователя. Например, когда вы подключаете новое оборудование, Windows автоматически обнаруживает его и показывает всплывающее окно с вопросом, хотите ли вы продолжить установку драйвера. Вы также можете загрузить драйвер из Интернета, а затем просто дважды щелкнуть его, чтобы запустить мастер, или импортировать драйвер через диспетчер устройств.

Этот процесс не так прост в операционной системе Linux. По одной причине, Linux — это операционная система с открытым исходным кодом, поэтому существуют сотни вариантов дистрибутива Linux. Это означает, что невозможно создать одно практическое руководство, которое работало бы для всех дистрибутивов Linux. Каждая операционная система Linux обрабатывает процесс установки драйвера по-своему.

Во-вторых, большинство драйверов Linux по умолчанию имеют открытый исходный код и интегрированы в систему, что делает установку любых драйверов, которые не включены, довольно сложной задачей, даже несмотря на то, что большинство аппаратных устройств могут быть обнаружены автоматически. В-третьих, политика лицензирования различается в разных дистрибутивах Linux. Например, Fedora запрещает включение проприетарных драйверов, юридически обремененных или нарушающих законы США. И Ubuntu просит пользователей избегать использования проприетарного или закрытого оборудования.

Чтобы узнать больше о том, как работают драйверы Linux, я рекомендую прочитать Введение в драйверы устройств в книге Драйверы устройств Linux .

Два подхода к поиску драйверов

1. Пользовательские интерфейсы

Если вы новичок в Linux и пришли из мира Windows или MacOS, вы будете рады узнать, что Linux предлагает способы узнать, доступен ли драйвер с помощью мастера. -подобные программы. Ubuntu предлагает опцию «Дополнительные драйверы». Другие дистрибутивы Linux предоставляют вспомогательные программы, такие как Package Manager для GNOME, которые вы можете проверить на наличие доступных драйверов.

2. Командная строка

Что делать, если вы не можете найти драйвер через приложение с удобным пользовательским интерфейсом? Или у вас есть доступ только через оболочку без какого-либо графического интерфейса? Возможно, вы даже решили расширить свои навыки с помощью консоли. У вас есть два варианта:

  1. Использовать репозиторий
    Это похоже на команду homebrew в MacOS.   Используя yum , dnf , apt-get и т. д., вы фактически добавляете репозиторий и обновляете кеш пакетов.
  1. Загрузите, скомпилируйте и соберите его самостоятельно
    Обычно это включает загрузку пакета непосредственно с веб-сайта или использование команды wget и запуск файла конфигурации и Makefile для его установки. Это выходит за рамки этой статьи, но вы сможете найти онлайн-руководства, если решите пойти по этому пути.

Проверьте, установлен ли уже драйвер

Прежде чем переходить к установке драйвера в Linux, давайте рассмотрим некоторые команды, которые определяют, доступен ли драйвер в вашей системе.

Команда lspci показывает подробную информацию обо всех шинах PCI и устройствах в системе:

 $ lscpci 

Или с grep :

 $ lscpci | grep SOME_DRIVER_KEYWORD 

Например, вы можете ввести lspci | grep SAMSUNG , если вы хотите узнать, установлен ли драйвер Samsung.

Команда dmesg показывает все драйверы устройств, распознаваемые ядром:

 $ dmesg 

Или с grep :

 $ dmesg | grep SOME_DRIVER_KEYWORD 

Любой распознанный драйвер будет отображаться в результатах.

Если команды dmesg или lscpi ничего не распознают, попробуйте эти две команды, чтобы узнать, загружен ли хотя бы драйвер на диск:

 $ /sbin/lsmod 

и

 $ find /lib /modules 

Совет: Как и в случае с lspci или dmesg , добавьте | grep для любой команды выше, чтобы отфильтровать результаты.

Если драйвер распознается этими командами, но не lscpi или dmesg , это означает, что драйвер находится на диске, но не в ядре. В этом случае загрузите модуль с помощью команды modprobe :

 $ sudo modprobe MODULE_NAME 

Запустите эту команду как sudo , так как этот модуль должен быть установлен как пользователь root.

Добавить репозиторий и установить

Существуют различные способы добавления репозитория через yum , dnf и apt-get ; описание их всех выходит за рамки данной статьи. Для простоты в этом примере будет использоваться apt-get , но идея аналогична для других опций.

1. Удалите существующий репозиторий, если он существует.

 $ sudo apt-get purge NAME_OF_DRIVER* 

где NAME_OF_DRIVER — вероятное имя вашего драйвера. Вы также можете добавить соответствие шаблону к своему регулярному выражению для дальнейшей фильтрации.

2. Добавить в репост репозиторий, который должен быть указан в руководстве по драйверам.

 $ sudo add-apt-repository REPOLIST_OF_DRIVER 

где REPOLIST_OF_DRIVER следует указать из документации драйвера (например, epel-list ).

3.


Learn more

Только новые статьи

Введите свой e-mail

Видео-курс

Blender для новичков

Ваше имя:Ваш E-Mail: