Драйвера для Linux

linux

Как называются драйвера для Linux ?

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

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

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

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

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

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

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

calculate mikuz # lspci
00:00.0 Host bridge: ATI Technologies Inc RS690 Host Bridge
00:01.0 PCI bridge: ATI Technologies Inc RS690 PCI to PCI Bridge (Internal gfx)
00:04.0 PCI bridge: ATI Technologies Inc Device 7914
00:05.0 PCI bridge: ATI Technologies Inc RS690 PCI to PCI Bridge (PCI Express Port 1)
00:12.0 SATA controller: ATI Technologies Inc SB600 Non-Raid-5 SATA
00:13.0 USB Controller: ATI Technologies Inc SB600 USB (OHCI0)
00:13.1 USB Controller: ATI Technologies Inc SB600 USB (OHCI1)
00:13.2 USB Controller: ATI Technologies Inc SB600 USB (OHCI2)
00:13.3 USB Controller: ATI Technologies Inc SB600 USB (OHCI3)
00:13.4 USB Controller: ATI Technologies Inc SB600 USB (OHCI4)
00:13.5 USB Controller: ATI Technologies Inc SB600 USB Controller (EHCI)
00:14.0 SMBus: ATI Technologies Inc SBx00 SMBus Controller (rev 14)
00:14.1 IDE interface: ATI Technologies Inc SB600 IDE
00:14.2 Audio device: ATI Technologies Inc SBx00 Azalia (Intel HDA)
00:14.3 ISA bridge: ATI Technologies Inc SB600 PCI to LPC Bridge
00:14.4 PCI bridge: ATI Technologies Inc SBx00 PCI to PCI Bridge
00:18.0 Host bridge: Advanced Micro Devices [AMD] K8 [Athlon64/Opteron] 
HyperTransport Technology Configuration
00:18.1 Host bridge: Advanced Micro Devices [AMD] K8 [Athlon64/Opteron] Address Map
00:18.2 Host bridge: Advanced Micro Devices [AMD] K8 [Athlon64/Opteron] DRAM Controller
00:18.3 Host bridge: Advanced Micro Devices [AMD] K8 [Athlon64/Opteron] Miscellaneous Control
01:05.0 VGA compatible controller: ATI Technologies Inc RS690M [Radeon X1200 Series]
03:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8101E/RTL8102E PCI 
Express Fast Ethernet controller (rev 02

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

Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 003 Device 002: ID 15ca:00c3 Textech International Ltd. Mini Optical Mouse
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 001 Device 006: ID 19d2:0016 ONDA Communication S.p.A.
Bus 001 Device 003: ID 0bda:8198 Realtek Semiconductor Corp. RTL8187B Wireless Adapter
Bus 001 Device 004: ID 04f2:b070 Chicony Electronics Co., Ltd
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 006 Device 001: ID 1d6b:0001 Linux Foundation 1.1 r

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

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

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

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

Часто драйвер можно установит без перекомпиляции ядра, но част кода ядра загрузить все равно придется, также необходим компилятор gcc-c++ ну может еще что по мелочи,но я не сталкивался или не помню. И так средствами вашего дистрибутива устанавливаем пакет с именем типа kernel-hiders или kernel-source ( уточнить по вариантам ) версия пакета должна соответствовать версии ядра. Ссылка /usr/src/linux должна указывать на каталог с исходниками или хидер файлами. Если в ходе установки модуля ядра вы получаете сообщение о невозможности обнаружить хидер файлы, значит одно из этих условий не выполняется. В идеале для того чтобы установить драйвер нужно в каталоге с исходниками просто выполнить команды : ./configure ; make . И от имени root : make install . Или от имени root запустить скрипт установки. Многие устройства поддерживаются как драйверами в составе ядра , так и отдельными пакетами драйверов. Если включена поддержка в ядре, то нельзя ставить дополнительные пакеты драйверов. Устройство работать не будет.Но идеал в этой жизни очень редок. По этому рассмотрим некоторые проблемы.В подавляющем большинстве случаев информация приведенная дальше вам не пригодится. Но 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:

options hda-sound-intel model=3stack

Где 3stack — строчка, выцепленная из файла документации для конкретного чипа. Перед тем, как править /etc/modules.d/alsa желательно убедиться в правильности выбранной модели. Сделать это легко — нужно просто выгрузить драйвер  и загрузить его по новой, указав модель:

user@host$sudo modprobe -r hda-sound-intel
user@host$ sudo modprobe hda-sound-intel model=${выбранная_модель}

Установка драйверов для видеокарт под 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 в ядре нужно собирать модулями.» Как вкомпилировать прошивки в ядро я не представляю

Добавить комментарий