Как установить драйвера на 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-1 | 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. В Windows, например, если скачал специальный драйвер/утилиту для материнки с официального сайта производителя, то можно получить целый пакет плюшек-настроек. Попробовать где-то что-то разонать, поставить например дополнительные вентиляторы в корпус и скорость их вращения можно будет регулировать и т.д. и т.п.
Но я не вижу никаких драйверов/утилит для подобных вещей под Линукс на сайте производителя. Нагуглил, что вроде Intel активно сотрудничает с разработчиками ядра Linux, тем не менее в их разделе ПО тоже не увидел специальных дров/утилит.
Вопрос такой: в настоящее время подобные плюшки и правда возможны только на винде, а в Linux-е можно только довольствоваться только «просто работой железа, без особых настроек — свистелок и перделок». Зачем? Как минимум интересно, а также интересует возможность использования nVidia SLI или Ati CrossFire на Linux.
Линуксоидам кривописаные вендорские программки не нужны. Есть поддержка в драйверах ядра, есть userspace утилиты по типу lm-sensors.
Иногда поддержки каких-то фичей нет и приходится страдать и программировать, но ты же за этим поставил себе линукс да?
Ну, в принципе, да. Ясно спасибо!
Я так понял, ядро Linux БУДЕТ видеть необходимые фичи материнки, просто не всегда к ним есть «интерфейс», который в случае чего нужно писать самому, так?
На самом деле, все наоборот. В Linux полно возможностей тюнить железо, и все это в апстриме ядра и унифицировано, в отличие от кривых поделок от производителей железа, которые тебе приходится искать и ставить отдельно. Но проблема(проблема ли?) в том, что управление этими возможностями — из cli, с помощью спец.утилит типа lm_sensors, с помощью sysfs.
Производители железок не упоминают об этом в документации, а писатели обзоров железа редко рассматривают Linux как платформу.
Практика показывает, что lm sensors имеют хреновую поддержку свежих чипов super-io, а вендоры в каждую новую матиринку стремятся обязательно воткнуть что-то новое. Поэтому если твоя материнка достаточно старая, есть вероятность что ты сможешь легко управлять вентиляторами, снимать показания оборотов, температуры и т.п. Если же у тебя что-то новое — облом.
Ещё для любителей такой магии есть make menuconfig и sysctl, а также всякие hdparm и прочие *ctl. Гуй никто не пишет потому, что это не забота end юзера обычно, а кто лезет крутить эти ручки, вполне в состоянии справится с консолью.
Лэнэкс вообще не для конченных юзеров, тут специфичного гуя нет, юзай соснольку, дешево и сердито.
Суть в том, что управления вентиляторами можно сделать многими способами(конечно большинство производителей один и тот же референсный дизайн мучают, но добавляют туда разной херни).
И есть вообще ACPI и прочие разные стандарты, чтобы всё это абстрагировать от системы и использовать где хочешь.
Проблема в том, что производители материнок проверяют, что всё работает только на винде, поддержка всего остального — это лишние траты. А полных спек никто не даст, потому что они сами дизайн купили у одних, биос им написали другие, дрова под винду третьи.
Поэтому надо требовать от них поддержку линукса или бойкотировать. А вообще запусти например powertop и увидишь, как немного питание потюнить.
Поэтому надо требовать от них поддержку линукса или бойкотировать.
Всегда умиляюсь с мамкиных борцунов с системой. Бойкотирование — бесполезно, с учетом процента рынка. Они даже не заметят вашего бойкота.
Но проблема(проблема ли?) в том, что управление этими возможностями — из cli
Это не проблема, а фича. Человеку, не осилившему прочитать мануал, не стоит крутить настройки.
Разогнать можно (и нужно) из настроек BIOS.
поставить например дополнительные вентиляторы в корпус и скорость их вращения можно будет регулировать и т.д.
fancontrol или крути руками через /sys/class/hwmon
возможность использования nVidia SLI или Ati CrossFire на Linux
Еще тогда вопрос на тему нескольких видеокарт одновременно: при правильном подключении и настройке задачи будут делиться между видеокартами автоматически? Или это будет работать, только если сама программа поддерживает эту технологию (была написана, используя соответствующий API. Если честно я не видел в OpenGL, чтобы что-то намекало на несколько видеокарт с точки зрения команд)?
Если честно я не видел в OpenGL, чтобы что-то намекало на несколько видеокарт с точки зрения команд)?
Самое простое решение, например: делать рендеринг четных кадров на первой карте, нечётных — на второй.
это будет работать, только если сама программа поддерживает эту технологию
Так а через что обращаться к конкретной из установленных видеокарт?
при правильном подключении и настройке задачи будут делиться между видеокартами автоматически?
Теоретически — да. На деле и для D3D и для OpenGL это не работает без ручной допилки драйверов производителем.
Если честно я не видел в OpenGL, чтобы что-то намекало на несколько видеокарт с точки зрения команд)?
Там и нет ничего такого, реализация SLI/CFX на 100% в юзерспейсном драйвере от производителя. Само приложение может и не знать, что оно рендерится на двух картах вместо одной.
Ну а так у Nvidia и AMD есть расширения для профессиональной графики позволяющие взаимодействовать с более чем одной видеокартой, но они для других целей.
Бойкотирование — бесполезно, с учетом процента рынка. Они даже не заметят вашего бойкота.
Смысл бойкотирования не в том, чтобы «наказать плохих производетелей».
Нет ничего плохого в том, чтобы отдавать деньги только производителям которые лучше поддерживают платформу.
Как минимум интересно, а также интересует возможность использования nVidia SLI или Ati CrossFire на Linux.
Любые dual-GPU на любой платформе это полное говно ибо: 1 — В куче игр оно вообще не поддерживается и не будет. 2 — Может сломаться поддержка при обновлении игры или драйверов. 3 — Во многих играх добавляет неиллюзорный input lag. 4 — Нужен более дорогой БП, правильная материнка. 5 — Охлаждать сложнее, если у тебя не водянка. Ибо с вероятностью 90% одна карта будет выдувать в другую.
Короче это такой нишевый продукт для оверсракеров которым некуда выкинуть бабла. Для всех остальных одна более мощная карта в 3 раза лучше работает, чем две менее мощных.
Насчет графики для игр спорное преимущество — понятно. Меня скорее интересует несколько карт для GPGPU, например для OpenCL.Карты мощны.На одной бы например полностью рендерить, а вторая пусть исключительно обработкой физики занята.
OpenCL мало отношения имеет к OpenGL и умеет много разных карт (даже от разных вендоров) из коробки.
Источник