Как установить драйвер NVIDIA на CentOS: Пошаговое руководство

Установка проприетарных графических драйверов на операционную систему CentOS часто вызывает затруднения у администраторов, привыкших к автоматическим решениям в дистрибутивах вроде Ubuntu. В отличие от систем с графическим интерфейсом по умолчанию, CentOS требует строгого соблюдения последовательности действий, иначе графический сервер Xorg или новый сервер Wayland может отказать в запуске.

Основная сложность заключается в том, что стандартный репозиторий ядра kernel в CentOS часто отличается от того, который требуется для сборки модуля ядра драйвера NVIDIA. Без точной синхронизации версий ядра и заголовков (headers) процесс компиляции завершится ошибкой. Грамотный инженер должен сначала подготовить систему, отключить лишний графический стек, и только затем приступать к загрузке и установке бинарного файла.

В этой статье мы разберем два наиболее надежных метода: использование официального установщика от NVIDIA и внедрение драйвера через репозиторий ELRepo. Мы также рассмотрим нюансы работы сSecure Boot и возможные конфликты с открытым драйвером nouveau, который часто блокирует работу проприетарных модулей.

Подготовка системы и отключение открытого драйвера Nouveau

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

Для этого необходимо отредактировать файл конфигурации modprobe.d. Создайте новый файл или измените существующий, добавив туда инструкции по блокировке модуля. Это действие необходимо выполнить до начала загрузки любых графических компонентов.

echo"blacklist nouveau" >> /etc/modprobe.d/blacklist-nouveau.conf

echo"options nouveau modeset=0" >> /etc/modprobe.d/blacklist-nouveau.conf

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

dracut --force

Для проверки успешности операции можно перезагрузить сервер или проверить статус модуля в текущей сессии. Если команда lsmod | grep nouveau не возвращает результатов, значит, драйвер успешно заблокирован.

⚠️ Внимание: Отключение драйвера nouveau временно сделает графический интерфейс недоступным. Убедитесь, что у вас есть доступ к консоли (через SSH или физический терминал) перед выполнением команды перезагрузки.

Если вы используете CentOS 7 или более ранние версии, процесс обновления initramfs может отличаться. В новых версиях dnf также требуется проверка доступности пакетов заголовков ядра, так как они критичны для компиляции модуля.

Выбор метода установки: Официальный установщик или ELRepo

Существует два основных пути установки драйверов NVIDIA на CentOS. Первый метод подразумевает загрузку бинарного файла напрямую с сайта производителя. Это дает вам доступ к самым свежим версиям драйверов, известным как Game Ready или Studio, но требует ручной компиляции модуля ядра при каждом обновлении ОС.

Второй метод предполагает использование репозитория ELRepo. Это сторонний репозиторий, специально созданный для Enterprise Linux, который предоставляет драйверы, адаптированные под конкретную версию ядра CentOS. Главное преимущество здесь — автоматическая установка зависимостей и интеграция с менеджером пакетов dnf.

  • Официальный установщик: идеален для получения новейших функций и поддержки свежих видеокарт серии RTX 40xx.
  • Репозиторий ELRepo: лучший выбор для серверов, где важна стабильность и отсутствие необходимости в ручной компиляции.
  • Наличие графиков: выбирайте метод с учетом того, будет ли сервер перезагружаться часто или доступен только через SSH.

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

📊 Какой метод установки вы предпочитаете?
Официальный.run файл от NVIDIA
Через репозиторий ELRepo
Компиляция из исходников
Не знаю, нужен совет

Установка драйвера через репозиторий ELRepo

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

Выполните команду импорта ключа и установки репозитория. Убедитесь, что у вас есть активное подключение к интернету, так как процесс требует загрузки метаданных.

sudo rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org

sudo dnf install https://www.elrepo.org/elrepo-release-9.el9.elrepo.noarch.rpm

После добавления репозитория, необходимо установить пакет драйвера. В зависимости от вашей версии CentOS (7, 8 или 9), команда может незначительно отличаться, но логика остается прежней. Также рекомендуется установить пакет kmod-nvidia, который автоматизирует сборку модуля ядра.

sudo dnf install kmod-nvidia

Важно отметить, что пакет kmod-nvidia будет пересобираться автоматически при каждом обновлении ядра системы благодаря механизму DKMS. Это избавляет вас от ручного вмешательства в процесс компиляции.

☑️ Подготовка к установке через ELRepo

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

Если вы используете CentOS 7, убедитесь, что у вас установлены-devel пакеты для текущего ядра, иначе механизм DKMS не сможет скомпилировать модуль.

Ручная установка официального установщика NVIDIA

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

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

chmod +x NVIDIA-Linux-x86_64-*.run

sudo./NVIDIA-Linux-x86_64-*.run

В процессе установки утилита предложит несколько опций. Вам потребуется подтвердить автоматическое отключение драйвера nouveau и согласиться с лицензионным соглашением. Также система может предложить обновить конфигурационный файл Xorg — это стоит сделать, чтобы избежать проблем с разрешением экрана.

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

⚠️ Внимание: При ручной установке через.run файл, после каждого обновления ядра вам придется запускать установщик снова, чтобы пересобрать модуль. Это критично для автоматизированных серверов.
Что делать, если установка завершилась ошибкой"Unable to find the kernel headers"?

Ошибка возникает, когда пакеты заголовков ядра (kernel-headers) не совпадают по версии с текущим установленным ядром. Решение: выполните'sudo dnf install kernel-devel-$(uname -r)', чтобы установить заголовки именно для вашей текущей версии, либо обновите само ядро до последней доступной версии в репозитории.

Устранение конфликтов Secure Boot и DKMS

Современные системы часто имеют включенную функцию Secure Boot в BIOS/UEFI. Эта функция проверяет цифровую подпись всех загружаемых модулей ядра. Поскольку драйверы, скомпилированные вручную или через ELRepo, часто не имеют подписи корпоративного сертификата на момент установки, Secure Boot может заблокировать их загрузку.

Есть два пути решения этой проблемы. Самый простой способ — отключить Secure Boot в настройках BIOS. Это часто допустимо в домашних лабораториях или на серверах в защищенной физической среде, но может быть неприемлемо для корпоративных стандартов безопасности.

Более сложный, но правильный метод — создание и подписывание ключей MOK (Machine Owner Key). Это позволяет подписать драйверы NVIDIA вашим собственным ключом, который система примет как доверенный. Процесс включает генерацию ключа, подпись модуля и регистрацию ключа через утилиту mokutil при перезагрузке.

  • Проверьте статус Secure Boot командой mokutil --sb-state.
  • Если включен, либо отключите в BIOS, либо подготовьте ключи MOK.
  • Для автоматической подписи в ELRepo можно использовать утилиты sign-file из пакета openssl.

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

Проверка работоспособности и диагностика

После завершения установки и перезагрузки системы необходимо убедиться, что драйвер NVIDIA загружен корректно. Самым простым способом проверки является утилита nvidia-smi. Она выводит таблицу с информацией о GPU, версии драйвера и потреблении памяти.

nvidia-smi

Если команда возвращает ошибку «command not found» или «NVIDIA-SMI has failed because it couldn't communicate with the NVIDIA driver», это означает, что модуль ядра не загрузился. В этом случае следует проверить логи системы, особенно файл /var/log/messages или dmesg.

Также полезно проверить, какой модуль ядра используется для видеокарты. Команда lspci -k | grep -A 2 -i vga покажет, какой драйвер используется текущим устройством. В поле «Kernel driver in use» должно быть указано nvidia, а не nouveau.

Команда Описание действия Ожидаемый результат
nvidia-smi Отображение статуса GPU Таблица с версиями драйвера и температуры
lspci -k Проверка привязки драйвера к устройству «Kernel driver in use: nvidia»
cat /proc/driver/nvidia/version Детальная версия модуля Строка с номером версии драйвера
lsmod | grep nvidia Проверка загруженных модулей Список модулей (nvidia, nvidia_uvm и др.)

Если система загружается в текстовом режиме (runlevel 3), это нормально для серверной ОС. Однако, если вы планируете использовать графический интерфейс, убедитесь, что уровень запуска установлен на графический (обычно 5).

Частые ошибки и пути их решения

Одна из самых распространенных проблем — «экранная смерть» или черный экран после загрузки. Это часто случается, если драйвер не может инициализировать видеовыход или если настройки Xorg конфликтуют с конфигурацией монитора. В таких случаях необходимо загрузиться в консольном режиме и проверить логи X-сервера.

Другая частая ошибка — несоответствие версий ядра и модуля. Если вы обновили ядро через dnf update, но не перезагрузились, или если модуль не пересобрался автоматически, система может не видеть видеокарту. В этом случае помогает ручная пересборка DKMS.

Также стоит обратить внимание на разрешение экрана. Если в графическом интерфейсе доступны только низкие разрешения, возможно, файл конфигурации Xorg был создан с ошибками. Удаление файла /etc/X11/xorg.conf часто заставляет сервер X пересканировать оборудование и создать корректную конфигурацию заново.

⚠️ Внимание: Никогда не удаляйте ядро (kernel package) из системы, если оно активно используется для загрузки. Это может привести к невозможности запуска ОС. Всегда оставляйте хотя бы одно старое ядро в качестве резерва.

Для пользователей, работающих в среде CentOS Stream, следует учитывать, что ядро здесь обновляется чаще, чем в классическом CentOS Linux. Это повышает риск рассинхронизации с драйвером, поэтому использование репозитория ELRepo становится критически важным.

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

Нужно ли отключать Secure Boot для установки драйвера?

Не обязательно, но рекомендуется. Если Secure Boot включен, драйвер должен быть подписан вашим собственным ключом MOK. Самый простой способ — временно отключить Secure Boot в BIOS.

Почему у меня не работает команда nvidia-smi?

Это означает, что модуль ядра не загружен. Проверьте, загружен ли он через lsmod | grep nvidia. Если нет, попробуйте перезагрузиться или вручную загрузить модуль через modprobe nvidia.

Можно ли использовать драйверы NVIDIA на CentOS 7?

Да, но поддержка старых версий ядра может быть ограничена. Для CentOS 7 часто требуются более старые версии драйверов (серия 470 или 510), так как новые драйверы могут не поддерживать старые версии ядра.

Как обновить драйвер без переустановки всей системы?

Если вы используете ELRepo, просто выполните dnf update kmod-nvidia. Если использовали.run файл, нужно скачать новую версию и запустить установщик в том же режиме.

Что делать, если графический интерфейс не запускается после установки?

Зайдите в консоль (Ctrl+Alt+F3), удалите файл конфигурации Xorg /etc/X11/xorg.conf и перезагрузите систему. Это заставит сервер X создать конфигурацию заново.