Linux driver что это

Обновлено: 03.07.2024

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

Где не стоит искать и брать драйвера для Linux.

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

Внимание: берите пакеты только с сайта разработчика ( если это Open Source) или с сайта производителя устройства. Ни каких файлообменников, особенно платных.

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

Драйвера для Linux есть, но их надо првильно искать!

И так, вы поставили Linux,но у вас что-то не работает. Не стоит паниковать, все будет хорошо. Великий и могучи Интернет нам поможет, там полно драйверов и описаний. Но вот найти все это не так просто. Запрос в поисковой системе вида : Драйвера для Linux , как правило ни к чему не приводит. Для начала необходимо собрать информацию о нашем устройстве. Надписи на коробке и плате могут быть полезными, но не всегда. Торговая марка устройства часто ни чего ни говорит о том какой Linux драйвер нужен для его работы. Гораздо надежнее опираться на вывод специальных утилит опрашивающих оборудование. Мне приходилось использовать две: lsusb - для опроса USB устройств, lspci - для опроса PCI устройств, включая PCI-Express. Как правило в системе они уже установлены. Но вы можете установить самостоятельно пакеты usbutils и pciutil , соответственно. Команды необходимо запускать с правами администратора ( root ). Пример запуска команды lspci:

Пример вывода команды lsusb:

В выводе этих команд ищем строку соответствующую нашему устройству. Как правило это не составляет труда. Можно сориентироваться по названию устройства или названию чипа. Или по тому какая строка появляется при подключении USB устройства. Или методом исключения. Вот эту строку и нужно вводить в поисковую систему, Google или Yandex. Google предложит вам англоязычные сайты, и если вы способный понимать, что там написано, Google конечно предпочтительнее. Иначе используйте Yandex. Например для поиска информации по Wi-Fi адаптеру из примера нужно ввести в поиск: ID 0bda:8198 Realtek Semiconductor Corp. RTL8187B Wireless Adapter. Если по все строке не чего не нашлось, то нужно попробовать поискать по идентификатору устройства. Наша цель поиска в поиске источника драйвера и краткого алгоритма его установки. Но главное конечно сам Linux драйвер.

Обзор способов установки драйверов для Linux.

Установка из двоичного пакета становится все более распростроненной в Linux. Но это не всегда возможно, хотя и проходит в 99 случаев из 100. Даже если не нашли двоичного пакета не стоит растраиваться. Linux предоставляет гораздо больше возможностей , чем другие, устаревшие ОС.

Установка драйвера для Linux из исходного кода.

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

Установка драйвера звуковых карт .

В этом случае необходима поддержка alsa в ядре. Драйвер вашего устройства из состава ядра или из пакета :alsa-driver. Остановитесь на чем то одном. Необходимы пакеты alsa-utils , alsa-lib, драйверы устройства . Системный сервис alsa должен запускаться при старте системы. Используйте программу alsamixer для первоначального включения звука и опытов. Если у вас звуковая карта на основе snd-hda-intel, но при этом не работают наушники/микрофон. Необходимо передать модулю звуковой карты параметр, определяющий модель чипсета, а их для данного драйвера очень много. Чипсет можно узнать из соответствующей строки в alsamixer. Затем, сверившись с документацией ALSA ( /usr/src/linux/Documentation/sound/alsa/ALSA-Configuration.txt и /usr/src/linux/Documentation/sound/alsa/HD-Audio-Models.txt ), ввести следующую строку в /etc/modules.d/alsa:

Установка драйверов для видеокарт под Linux.

Для полноценной работы видеокарт в Linux необходима поддержка DRM. Поддержка DRM в Linux может быть включена или через ядро, или через библиотеку libdrm. Остановитесь на чем то одном. Необходимы пакеты : mesa , драйвер вашей видео карты из состава xorg или фирменный. Название загружаемого драйвера прописывается в файле /etc/X11/xorg.conf . Если этот файл удалить то видео система Linux ( сейчас это Xorg ) попытается настроиться автоматический. Если у вас что-то не получается с драйверами ATI в Linux , то попробуйте прочитать следующие рекомендации. Во-первых, выясните не только модель своей карты, но и её поколение по таблице в Википедии (R300, R600 и т.п.) Далее, существует два пакета с драйверами для ATI:

  • xf86-video-ati (они же «radeon») — открытые и активно разрабатываемые драйверы. Поддерживают KMS, Xrandr и Gallium
  • ati-drivers (fglrx) — закрытые драйверы от ATI/AMD. Наиболее полно поддерживают возможности оборудования, но имеют множество проблем, самой главной из которых сто́ит признать плохую поддержку новых версий ядра и xorg-server

Пройдёмся по основным поколениям карт ATI:

  • r100, r200 — не поддерживаются закрытыми драйверами с незапамятных времён; radeon же поддерживает их возможности в полном объёме;
  • r300-r500 — поддержка этих карт в fglrx прекращена в версии 9.3; в radeon поддерживаются хорошо;
  • r600, r700, r800 — именно на эти серии нацелены последние версии fglrx. В свободных драйверах реализована (и очень неплохо) поддержка двухмерного ускорения, Xrandr (работа с несколькими мониторами), Xvideo (ускорение вывода видео), поддержка трёхмерного ускорения в процессе разработки (для r800 необходима mesa 7.9);
  • r900 — пока поддерживается лишь в последних версиях fglrx и в radeon из git (по слухам, обоими неважно).

Открытые драйвера имеют меньше проблем, поэтому рекомендую их. В этом случае для r6xx-8xx необходимо установить пакет radeon-ucode с прошивками. В первоисточнике написано: "Если не вкомпилировать их в ядро, то DRM в ядре нужно собирать модулями." Как вкомпилировать прошивки в ядро я не представляю.

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

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

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

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

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

Если оборудование не работает в 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, подготовила все для их изучения на своем компьютере у себя в комнате общежития. Она вспомнила следующую фразу профессора Гопи, которую он сказал в классе: ". сегодняшний первый драйвер будет шаблоном для всех драйверов, которые вы напишете в Linux. Написание любого специализированного / расширенного драйвера - это вопрос лишь того, чем заполнить его конструктор и деструктор . "

Что это за наркоманская х-ня?! Ядро линукс для самых маленьких, в самом деле.

Автор (Anil Kumar Pugalia)


Кто бы обновил LDD3 для новых ядер :/


Мегакрутая и мегаполезная серия. Читать всем.

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


Там есть красиво книжечкой в пдф?


Это как первый шаг — если получится выводить hello world, дальше может затянуть.


Чем оно лучше LDD?

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

Ты ничего не понял.

Это порно рассказы для красноглазиков.

порно рассказы же.



Архитектура операционной системы (ОС) Linux устроена таким образом, что весь её потенциал и полноценная работа всецело поддерживаются файловой системой (ФС) даже, когда такая закономерность не очевидна. Одним из таких случаев является, взаимодействие системы с оборудованием. Хотя подобное явление кажется нестандартным. Однако для Linux это основная архитектурная особенность — взаимодействие системы с составляющими её компонентами, оборудованием (его драйверами) происходит посредством ФС. Ключевым объектом взаимодействия, являются специальные файлы для работы оборудования (или устройств) — файлы устройств.

Что такое драйверы и файлы устройств?

При помощи специального системного программного обеспечения (ПО). Система «знает» как получить аппаратные ресурсы оборудования, т. е. «железа». Таким ПО являются драйверы. Основная задача — управление устройствами по командам системы (и/или микропрограммы самого устройства), трансляция команд между девайсом и программным интерфейсом приложения (API) системы. Благодаря драйверам системное ядро может разрабатываться независимо от оборудования. Но при этом разработчикам оборудования следует следить за изменениями и особенностями системных платформ.

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

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

Взаимодействие системы с файлами устройств

Как уже было отмечено, Linux в каталоге /dev для устройств хранит соответствующие специальные файлы. Система связывает с каждым устройством специальные номера — старший, младший. С помощью этих номеров ядро определяет тип девайса, само устройство в системе, используя полученные данные, транслирует действия над файлом девайса в функции вызова этого устройства, задействовав соответствующий драйвер. Тип оборудования связан со старшим номером, конкретное девайса для данного типа (или драйвера) — с младшим, который еще называют номером модуля.

Файлы устройств подразделяются на два типа:

  • блочные — чтение/запись файла производится блоками, размеры которых обычно кратны 512 байтам;
  • символьные — чтение/запись осуществляется побайтово.

Для реализации взаимодействия с ядром, драйвера обычно используют стандартный интерфейс, которого достаточно для выполнения всех системных функций, самыми распространёнными являются: ioctl, probe, select, read, write, receive, close, stop, transmit и другие.

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

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

Когда драйверы (пользовательские) устанавливаются в ОС, обычно разработчиками предусматриваются скрипты, выполняющие все служебные действия установки и настройке ПО. Одним из таких действий является создание соответствующего файла устройства для устанавливаемого драйвера. В большинстве случаев пользователю по завершении работы скриптов установки больше ничего делать не нужно. Разве что перезапустить ОС.

Однако, когда например, драйвер собирается самостоятельно. Из исходных кодов или отсутствуют служебные скрипты, выполняющие автоматическую установку. Приходится добавлять файлы оборудования системы вручную. Используя команду mknod со следующим синтаксисом:

Здесь указывается тип девайса: b – блочное устройство, c – символьное. В качестве параметров старший и младший определяются старший и младший номера файла оборудования соответственно.

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

Многие новички интересуются как установить драйвер для железяки в 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 : поддерживаемое оборудование

Читайте также: