Как приручить NVIDIA в Alma Linux

Совсем недавно, исправляя уязвимости в ядре, я столкнулся с тем, что у меня слетели драйвера NVIDIA. Вот прям совсем, даже nvidia-smi не отрабатывала. На тот момент я еще не подозревал, что впереди меня ждет приключение на несколько часов.
В этой статье я хочу поделиться опытом решения данной проблемы, но ни в коем случае не настаиваю, что мой способ/мнение - единственно верное. И буду очень рад, если вы поделитесь своим опытом выхода из подобной ситуации!

Как приручить NVIDIA в Alma Linux

Дисклеймер

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

Выбираем необходимый драйвер

Итак, первым этапом нашего путешествия становится определение используемой видеокарты и загрузка установочного файла драйвера под неё.Если у вас все же остались драйвера, а вы просто их обновляете - можно воспользоваться командой:

nvidia-smi

В ином случае потребуется копнуть чуть глубже:

lspci | grep -i vga

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

cat /usr/local/cuda/version.txt

Итак, когда вы определились с типом видеокарт, версией CUDA Toolkit и уверены в этой информации - переходим на сайт NVIDIA.

Заполняем поля в соответствии с собранной информацией 
Заполняем поля в соответствии с собранной информацией 

Далее выполняем поиск и выбираем версию, которая придется вам по душе и загружаем .run-файл для установки.

В моем случае сервер, на котором требовалось починить драйвера, был закрыт от внешней сети. Именно поэтому пришлось совершать столько приседаний.После успешной загрузки потребуется передать установочный файл на удаленный сервер посредством scp:

scp /путь/до/установочного/файла пользователь@сервер:/целевой/путь

Приседания на удаленном сервере

Если все-таки вы стали заложниками положения и драйвера "сломались" - необходимо зачистить следы их присутствия:

sudo nvidia-uninstall

Поздравляю! Вы успешно снесли старые нерабочие драйвера и теперь можете приступать к подготовке установки.Файл, который мы загрузили с сайта NVIDIA необходимо поместить в директорию /opt/nvidia. А для временных файлов создадим директорию tmp:

mkdir -p ~/tmp chmod 1777 ~/tmp

Половина приседаний позади. Время запускать установку:

sudo /opt/nvidia/driver_name.run --tmpdir /home/user/tmp

Здесь я попрошу вашей милости, потому что скриншоты у меня, к сожалению, не сохранились, но я очень постараюсь описать все доходчиво в тексте.

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

Установщик также предложит залить пакеты для 32-разрядной системы, что нам совершенно не нужно, а также настоятельно порекомендует поставить утилиту пересборки драйверов в случае обновления версии ядра.

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

Знакомство системы и драйверов

Ничего в этой жизни не бывает просто так, и эта история тому подтверждение.
Если у вас тоже включен MOK и работает Secure Boot - вам потребуется "познакомить" систему с драйверами. Далее - смертельный номер!

Нам потребуется временно отключить MOK:

sudo mokutil --disable-validation ## После выполнения этой команды система запросит от вас пароль ## длиной от 8 до 16 знаков. Задавайте пароль внимательно, так как после ## перезагрузки система начнет спрашивать у вас рандомные символы пароля sudo reboot

Важно для ребута перейти в Remote Console удаленного сервера, чтобы узреть отображение загрузки системы и, соответственно, интерфейс самого MOK. SSH-подключение, к сожалению, не подойдет.

После первоначальной подгрузки всего необходимого в системе - перед вами возникнет синее окно MOK с вопросом: "Действительно ли вы хотите отключить Secure Boot?".
Подтвердите свой выбор и введите запрашиваемые символы пароля, заданного на предыдущем этапе. Далее кликаем по любой клавише на клавиатуре и выбираем Reboot.

Если вы выполнили все корректно - после перезагрузки драйвера будут работать, как и Secure Boot. Для проверки достаточно будет выполнить команду nvidia-smi, которая отобразит вам информацию о видеокартах.

Послесловие

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

Если вам помогла моя статья или заинтересовал материал - буду рад если вы подпишетесь на мой Telegram-канал

Егор
Regular DevOps Engineer
1
Начать дискуссию