Линукс против новичков: разбираемся с драйверами
Рассказываем, почему проблема драйверов в Линуксе — всё ещё актуальная вещь, в какой момент может всё сломаться и что делать, если драйвер в Линуксе не работает.
3К открытий15К показов
Старожилы, которые работали с Unix-системами лет 10-15 назад, помнят, как часто на форумах возникали вопросы «как скачать драйвер для linux» или «не работает аудиовыход — как починить». Сейчас, пусть и реже, какой-нибудь драйвер нет-нет, да и отвалится. Основных причин, почему такое возникает, две:
- Все драйверы содержатся в ядре системы. Обновляется дистрибутив — ядро пересобирается, обновляются или удаляются старые драйверы, и устройство, прекрасно работающее долгие годы, просто «отваливается».
- Политика некоторых дистрибутивов достаточно жесткая: например, в ядре содержатся только драйвера со свободной лицензией. Поэтому с компонентами от AMD и Intel проблем не возникает, а вот для того, чтобы настроить видеокарту от NVidia, нужно заморочиться.
С мышками, клавиатурами и прочими мелочами, как правило, бед не случается. Управление этими устройствами происходит через стандартные интерфейсы. Туда же можно отнести флэш-накопители, устройства NVMe и даже контроллеры USB и SATA — для них нет специфичных Linux драйверов. Что нельзя сказать про wifi-адаптер: для каждого придётся вручную подбирать необходимое ПО.
https://tproger.ru/articles/v-chyom-linux-luchwe-windows
А это нормально, что ядро Линукса так сильно раздуто драйверами?
Да, всё окей. Большая часть кода драйверов в ядре была хорошо абстрагирована, поэтому добавление другого устройства может означать добавление всего нескольких строк кода. В Linux драйверы могут занимать не более нескольких десятков кБ для правильной работы контроллера.
Для примера, около 380 драйверов будут весить столько же, сколько .txt-файл с первым томом «Войны и мира», или как трехминутный качественный mp3-трек. При этом Unix-системы оставляют возможность перекомпилировать ядро, избавиться от ненужных модулей и сократить его вес почти в 10 раз. Но мы настоятельно не рекомендуем заниматься этим на рабочих машинах, особенно если о такой возможности вы только что узнали.
К тому же, образ Windows тоже содержит огромное количество предустановленных драйверов. Например, для того, чтобы live usb корректно работал на любой машине.
Что не стоит делать в Linux с драйверами
Последнее, к чему советуют прибегать — это скачивать драйверы с сайтов-производителей и вручную запускать их в Unix-системе. На это есть ряд причин, рассмотрим на примере установки драйверов NVidia в Linux:
- драйвер может перезаписать библиотеку с графическим интерфейсом Mesa GL, из-за чего перестанет работать открытый драйвер (если вы работаете со встроенной AMD и дискретной NVidia-картой, то система при обновлении не сможет распознать даже AMD);
- установленный с сайта драйвер не обновится с ядром, его нужно будет переустанавливать вручную;
- в случае, если у вас отвалятся оба драйвера, придётся накатывать обновления через CLI (терминал).
Так что в Linux драйверы видеокарты лучше ставить более изящным способом, через добавления в систему репозитория.
Что делать, если что-то не работает в Линукс?
1. Воспользуйтесь встроенным ПО
В Линуксе нет привычного для Windows-пользователей диспетчера устройств. Но можно воспользоваться аналогами, например, «Additional driver» в Ubunta или менеджером пакетов для GNOME в других дистрибутивах. На крайний случай скачать утилиту Inspector.
Посмотрите, какие драйверы уже установлены
Прежде чем устанавливать драйвер, не лишним будет проверить, находится ли он в системе вообще. В первую очередь проверьте список устройств, распознанных системой — это можно сделать вручную через терминал. Кстати, мы писали уже про полезные команды в Linux.
Если у вас есть название драйвера — то можно воспользоваться командой grep (она помогает фильтровать вывод по ключевому слову).
Например, вы можете ввести lspci | grep NVIDIA
, если хотите узнать, установлен ли драйвер NVidia.
Дальше можно посмотреть драйверы устройств, которые были распознаны ядром:
или, по аналогии,
Если команды dmesg
или lscpi
вывели нужный вам драйвер, значит, проблема не в нём. А вот если они ничего не дали, значит, драйвер не установлен или не распознаётся. Тут нужно проверить, есть ли драйвер в файловой системе:
и
Тут тоже можно использовать | grep SOME_DRIVER_KEYWORD
. Если драйвер распознается этими командами, но не lscpi
или dmesg
, это означает, что драйвер находится на диске, но не в ядре. В этом случае загрузите модуль с помощью команды modprobe:
Обратитесь к wiki
Если вам нужны проприетарные драйверы, перейдите в документацию вашего дистрибутива или на специальную wiki и найдите, для чего вам нужны драйверы (например, для "nvidia"). Скорее всего, правильному способу это сделать будет посвящена целая страница. Вот для примера вики по Astra Linux и установке NVidia-драйверов.
https://tproger.ru/books/linux
Заключение
Проблема с драйверами в Линуксе достаточно масштабная: при очередном обновление ядра устройства могут внезапно выйти из строя, начать греться или наоборот, лучше работать. Хорошая новость заключается в том, что по каждому популярному оборудованию можно найти репозитории с проприетарными драйверами, а также пошаговую инструкцию, как их накатить. Если вы всё же нацелены перейти на Linux и хотите выбрать хороший дистрибутив, то наш материал может помочь.
3К открытий15К показов