Полная диагностика драйверов видеокарты в операционной системе Linux

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

Отсутствие корректно загруженного драйвера может привести к низкому FPS в играх, отсутствию аппаратного ускорения в браузере или невозможности выставить родное разрешение экрана. Ситуация усложняется тем, что ядро Linux может использовать базовые драйверы open-source (например, Nouveau или Mesa), которые обеспечивают работу, но не раскрывают потенциал NVIDIA или AMD Radeon. Именно поэтому ручная проверка состояния загрузки модулей ядра является обязательным этапом настройки.

Идентификация оборудования через lspci

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

Чтобы увидеть только графические контроллеры, введите в терминале следующую команду:

lspci | grep -i vga

В результате вы получите строку с названием производителя и модели вашей карты. Если в ответе вы видите "Intel Corporation" или "AMD", это хорошо. Если же система показывает "NVIDIA Corporation" без уточнения модели или с пометкой "Class 0300", это может указывать на проблемы с PCIe-шину или питанием, но чаще всего это просто стандартное отображение.

Для более детальной информации, включая текущее состояние устройства, используйте флаг -k. Эта опция показывает, какой именно ядерный модуль используется устройством и какие еще доступны. Это критически важно, так как позволяет увидеть, загружен ли проприетарный драйвер или система использует запасной вариант.

lspci -k | grep -A 2 -i vga

В выводе вы увидите строку "Kernel driver in use". Если там указано название, соответствующее вашей карте (например, nvidia, nvidiafb, amdgpu или i915), значит, драйвер активен. Если же указано "Kernel driver in use: nouveau" для карты NVIDIA, а вам нужны проприетарные драйверы, то проблема именно в загрузке проприетарного ПО. Отсутствие этой строки означает, что драйвер не загружен вовсе.

⚠️ Внимание: В некоторых дистрибутивах, таких как Ubuntu, при установке проприетарного драйвера NVIDIA система может по умолчанию не загрузить его при старте из-за конфликтов с Secure Boot. Проверьте настройки BIOS/UEFI, если команда показывает драйвер как "загруженный", но графическая среда работает нестабильно.

📊 Пользуетесь ли вы Linux как основной системой?
Да, для работы
Да, для игр
Только для тестов
Нет, использую Windows

Анализ загрузки модулей ядра

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

Введите команду

lsmod | grep -E 'nvidia|amdgpu|i915|nouveau'

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

Для карт NVIDIA важно проверять наличие нескольких модулей: nvidia, nvidia_uvm и nvidia_modeset. Отсутствие любого из них может привести к тому, что система будет работать, но не сможет использовать GPU для вычислений или вывода изображения в 3D-режиме. Убедитесь, что версии модулей не конфликтуют с версией ядра.

☑️ Проверка загрузки модулей

Выполнено: 0 / 4

Проверка поддержки OpenGL и рендеринга

Наличие загруженного модуля ядра — это полдела. Настоящая проверка заключается в том, может ли система использовать возможности OpenGL и Vulkan для рендеринга графики. Для этого понадобятся утилиты, которые запрашивают информацию непосредственно у графического стека.

Утилита glxinfo является стандартом де-факто для проверки OpenGL. Если она не установлена, ее можно найти в пакете mesa-utils. Запустите команду

glxinfo | grep "OpenGL renderer"

В идеале вы должны увидеть название вашей карты (например, "NVIDIA GeForce RTX 3080"). Если же там написано "llvmpipe", это означает, что рендеринг происходит через процессор (CPU), а видеокарта не задействована.

Для карт AMD и Intel также полезно проверить версию драйвера Mesa. Команда glxinfo | grep "OpenGL version" покажет версию спецификации OpenGL, которую поддерживает ваша система. Это важно для совместимости с современными играми и приложениями, требующими новых функций шейдинга.

Что означает llvmpipe?

llvmpipe — это программный рендерер, который использует центральный процессор для выполнения задач, предназначенных для видеокарты. Это происходит, когда драйвер видеокарты не загружен или некорректно настроен. Производительность в этом режиме крайне низкая, и игры могут не запуститься.

Диагностика через утилиту nvidia-smi

Если у вас установлена карта от NVIDIA, существует собственный мощный инструмент мониторинга — nvidia-smi (NVIDIA System Management Interface). Эта утилита является частью проприетарного драйвера и предоставляет детальную информацию о состоянии GPU.

Введите

nvidia-smi

Успешный вывод таблицы с информацией о температуре, загрузке, потреблении энергии и видеопамяти (VRAM) является окончательным подтверждением того, что драйвер установлен и работает корректно. Если вы получаете ошибку "command not found", значит, драйвер либо не установлен, либо не добавлен в системный путь.

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

Команда Ожидаемый результат при установке Значение ошибки
lspci -k Строка "Kernel driver in use: nvidia" Нет строки драйвера или "nouveau"
glxinfo "NVIDIA Corporation" в рендере "llvmpipe" или "softpipe"
nvidia-smi Таблица с данными GPU "command not found"
lsmod Список модулей nvidia* Пустой вывод

Обратите внимание на строку "Driver Version" в выводе nvidia-smi. Она должна соответствовать версии, которую вы планировали установить. Иногда пользователи сталкиваются с ситуацией, когда обновляется ядро, но модуль драйвера не обновляется, что приводит к несоответствию версий и неработоспособности карты.

⚠️ Внимание: При использовании гибридной графики (Nomad Optimus) утилита nvidia-smi может не показывать данные, если карта находится в режиме энергосбережения. Попробуйте принудительно переключиться на дискретную графику через настройки графической среды или команды prime-select.

Проверка через lshw и системные логи

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

Используйте команду

sudo lshw -c display

В выводе ищите строку "configuration". Там будет указано, какие драйверы загружены и какие отключены. Это особенно полезно, если у вас несколько графических адаптеров (например, встроенная графика Intel и дискретная AMD), и нужно понять, какой из них активен в данный момент.

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

dmesg | grep -i "nvidia\|amdgpu\|drm"

Ищите строки, содержащие слова "error", "failed" или "warning". Например, ошибка "Unknown symbol" часто означает, что модуль драйвера несовместим с текущим ядром. В таких случаях требуется пересборка модуля или обновление ядра до версии, поддерживаемой драйвером.

Решение проблем с загрузкой и обновление

Если проверка показала, что драйвер не установлен или не работает, первым шагом должно быть обновление пакетов системы. В большинстве дистрибутивов на базе Debian/Ubuntu это делается через apt, а в Red Hat/Fedora — через dnf или dnf.

Для NVIDIA в Ubuntu часто проще всего использовать репозиторий драйверов. Команда

sudo ubuntu-drivers autoinstall

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

В случае с картами AMD и Intel драйверы обычно встроены в ядро (Mesa). Для их обновления нужно обновить пакеты Mesa и ядро Linux. Убедитесь, что вы не удалили критически важные пакеты linux-headers, так как без них модули не будут пересобраны при обновлении ядра.

Иногда проблема кроется в загрузчике GRUB. Если вы используете режим nomodeset в параметрах загрузки, это отключает проприетарные драйверы. Проверьте файл /etc/default/grub и убедитесь, что в строке GRUB_CMDLINE_LINUX_DEFAULT нет опции nomodeset, если вы хотите использовать аппаратное ускорение.

FAQ: Часто задаваемые вопросы

Как узнать версию установленного драйвера NVIDIA в Linux?

Самый простой способ — запустить команду nvidia-smi. Версия драйвера указана в правом верхнем углу таблицы. Также можно использовать nvidia-settings или команду modinfo nvidia для получения версий модуля.

Почему glxinfo показывает llvmpipe вместо моей карты?

Это означает, что система использует программный рендеринг через процессор. Обычно это происходит из-за отсутствия драйвера, конфликта с Wayland или отсутствия необходимых библиотек OpenGL. Проверьте, загружен ли драйвер через lspci -k.

Нужно ли устанавливать драйверы для видеокарт AMD в Linux?

Для большинства современных карт AMD (GCN и новее) проприетарные драйверы не требуются, так как ядро Linux и Mesa уже содержат отличную поддержку через стек amdgpu. Установка сторонних драйверов может даже ухудшить производительность или стабильность.

Как проверить, используется ли видеокарта для рендеринга в браузере?

Введите в адресной строке Chrome или Chromium chrome://gpu. В разделе "Graphics Feature Status" должно быть написано "Hardware accelerated" для большинства функций. Если "Software only", значит, браузер не может использовать GPU.

Что делать, если драйвер перестал работать после обновления ядра?

Скорее всего, модули драйвера не были пересобраны для новой версии ядра. Попробуйте переустановить драйвер или обновить пакет заголовков ядра (linux-headers) и запустить скрипт пересборки модулей, если он предусмотрен для вашего дистрибутива.