Помощь с установкой драйвера Nvidia и –kernel-source-path

Вопрос или проблема

Я работаю в RHEL 7 и мне нужно установить Nvidia драйвер для моей видеокарты. Я знаю, что я скачал правильный драйвер с сайта Nvidia. Я также установил пакеты ядра Linux, которые расположены в /usr, как в /usr/include/linux/kernel.h

Мне стало ясно, что драйвер Nvidia использует путь, а затем добавляет к нему свой собственный путь, чтобы найти файл ядра. Если я запускаю установку драйвера с:

NVIDIA-Linux-x86_64-418.126.02.run --kernel-source-path /usr/include

Nvidia говорит, что /usr/include/include/linux/kernel.h — это недопустимый путь (обратите внимание на лишний include, это та часть, которую добавляет Nvidia). Хорошо, нет проблем, тогда я запускаю

NVIDIA-Linux-x86_64-418.126.02.run --kernel-source-path /usr/

И это сообщает мне, что /usr/ не является допустимым значением для этого параметра.

Я зашел в тупик и не знаю, что делать дальше. Можно ли переместить файлы в другой каталог? Или это известная проблема с Nvidia? Поисковые запросы в Google ничего не дали по этой конкретной проблеме.

/usr/include — это путь для файлов include для пользовательских программ. Место, где RHEL kernel-devel RPM помещает заголовки для компиляции модулей ядра, на самом деле /usr/src/kernels/$(uname -r).

Установщик Nvidia на самом деле должен уметь автоматически обнаруживать это, так как там должен быть символическая ссылка на /lib/modules/$(uname -r)/build, указывающая туда.

Так что, убедитесь, что kernel-devel RPM, соответствующий точной версии ядра, который вы используете, установлен, затем попробуйте это:

NVIDIA-Linux-x86_64-418.126.02.run --kernel-source-path /usr/src/kernels/$(uname -r)

Или просто опустите опцию --kernel-source-path совсем.

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

Нет. Прошло 4 года, и те же проблемы все еще существуют в драйверах NVIDIA для Linux. Только что скачал их драйвер и та же ситуация через 4 года. Я просто скопировал код в “двойной” каталог и запустил оттуда, но проблема в том, что их сборка также имеет ошибки и ищет конфигурационные файлы, которых нет в Linux.

И нет, telcoM ошибается, в Linux больше нет такого каталога: /usr/src/kernels/

Ответ или решение

Установка драйверов Nvidia на операционных системах семейства RHEL может представлять собой определённую трудность из-за необходимости корректной настройки пути к исходным файлам ядра. Давайте разберёмся с вашей проблемой, используя методику TEA (Theory, Example, Application), и предложим пошаговое руководство.

Теория

Для успешной компиляции модуля ядра, необходимого для работы Nvidia, требуется предоставить правильный путь к исходным файлам сердцевины операционной системы. В RHEL и подобных дистрибутивах Linux, такие файлы развёртываются с помощью пакетов kernel-devel, которые создают нужную структуру каталогов для сборки модулей.

Однако, допускается недопонимание структуры файловой системы: файл kernel.h, находящийся в /usr/include, предназначен для пользовательских программ и не используется при сборке модулей ядра. Сами файлы ядра, которые нужны для этой задачи, находятся в /usr/src/kernels/$(uname -r). Переменная $(uname -r) в данном случае возвращает текущую версию ядра, что позволяет уверенно указать на необходимый каталог.

Пример

Вопрос, возникший у вас, касается ситуации, когда Nvidia установщик автоматически не может определить путь к исходным файлам ядра и требует ручного указания с помощью параметра --kernel-source-path. Как вы уже отметили, указание /usr/include приводит к ошибке, так как структура и ожидаемые файлы различаются. Аналогичную ошибку можно получить, если указать корневой каталог неверно. Вот пример, который может помочь:

# Убедитесь, что установлен kernel-devel для текущей версии ядра
sudo yum install kernel-devel-$(uname -r)

# Проверьте, что символическая ссылка присутствует
ls -l /lib/modules/$(uname -r)/build

# Запустите установку драйвера Nvidia
NVIDIA-Linux-x86_64-418.126.02.run --kernel-source-path /usr/src/kernels/$(uname -r)

Применение

Теперь, рассмотрим как применить данную теорию и примеры в вашей ситуации.

  1. Проверьте версию ядра: Используйте команду uname -r, чтобы подтвердить, какая версия ядра в данный момент используется в системе. Это позволит корректно задать параметры для установки.

  2. Установите необходимые пакеты разработки ядра: Установите kernel-devel, если он ещё не установлен, командой sudo yum install kernel-devel-$(uname -r). Этот пакет содержит все необходимые заголовочные файлы и другие компоненты для компиляции модулей ядра.

  3. Проверьте символическую ссылку: Убедитесь, что символическая ссылка в /lib/modules/$(uname -r)/build действительно указывает на /usr/src/kernels/$(uname -r). Это критически важная часть процесса, так как Nvidia установщик требует ее для автоматического определения пути.

  4. Запуск установки: Теперь, когда всё настроено, вы можете запустить установочный скрипт Nvidia. Используйте путь /usr/src/kernels/$(uname -r) как параметр, если автоматическое определение пути не срабатывает. Обратите внимание, что в некоторых случаях установка может пройти успешно и без явного указания этого параметра.

  5. Устранение неисправностей: Если установка по-прежнему не проходит успешно, возможно, проблема заключается в других конфликтующих драйверах или же в конкретной версии драйвера Nvidia. В таком случае, рекомендуется проверить последние версии драйверов на сайте Nvidia или обратиться к документации по установке для RHEL.

  6. Обновление системы: Убедитесь, что ваша система и все её компоненты, в том числе ядро, обновлены до последних версий. Это может существенно повлиять на успешную установку драйверов.

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

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

Капча загружается...