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

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

У меня есть сервер (на базе Debian 9 Stretch) с установленным проприетарным драйвером Nvidia. Он предназначен для научных вычислений, поэтому работает без головы.

Итак, драйвер Nvidia установлен для использования CUDA (во время установки CUDA с помощью пакетного файла cuda_10.0.130_410.48_linux.run, загруженного с веб-сайта Nvidia). Ранее все работало хорошо.

Два дня назад я перезагрузил систему, чтобы войти в BIOS и отключить HyperThreading. После перезагрузки драйвер Nvidia не загружался. Я перезагрузил систему несколько раз, и ситуация осталась неизменной.

Как мне вернуть его обратно?

Вот некоторая информация для вашего сведения.

# lspci -v|grep VGA
05:00.0 VGA совместимый контроллер: NVIDIA Corporation GP106 [GeForce GTX 1060 6G
B] (rev a1) (prog-if 00 [VGA контроллер])

# nvidia-smi
NVIDIA-SMI не удалась, так как не удалось установить связь с драйвером NVIDIA. Убедитесь, что установлен и работает последний драйвер NVIDIA.

# modprobe nvidia
modprobe: FATAL: Модуль nvidia не найден в каталоге /lib/modules/4.9.0-9-amd64

# nvidia-settings

ERROR: libgtk-3.so.0: не удается открыть общий объектный файл: Нет такого файла или каталога
       libnvidia-gtk3.so: не удается открыть общий объектный файл: Нет такого файла или
       каталога
       libgtk-x11-2.0.so.0: не удается открыть общий объектный файл: Нет такого файла или
       каталога
       libnvidia-gtk2.so: не удается открыть общий объектный файл: Нет такого файла или
       каталога

ERROR: Произошла ошибка при загрузке библиотеки GUI. Пожалуйста, проверьте вашу
       установку и путь к библиотеке. Возможно, вам нужно указать эту библиотеку при
       вызове nvidia-settings. Пожалуйста, выполните `nvidia-settings --help` для получения информации о использовании.

Именно для таких случаев не следует устанавливать проприетарный драйвер Nvidia с помощью скрипта, предоставленного на их веб-сайте. Вы создали FrankenDebian и сломали его.

Самый простой и безопасный способ установить необходимые пакеты и использовать возможности CUDA вашего GPU на Debian — это использовать проприетарный драйвер и набор инструментов Nvidia, которые есть в официальных репозиториях contrib и non-free.

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

Поэтому, чтобы вернуть ваш сервер к работе (не говоря уже о большей надежности), я настоятельно рекомендую удалить предыдущий драйвер, установленный с сайта Nvidia, и установить драйвер Nvidia и набор инструментов CUDA, упакованные сообществом Debian.

1) Удалите предыдущий драйвер, CUDA и другие связанные с Nvidia пакеты:

# apt purge nvidia-*

2) Добавьте contrib и non-free репозитории Debian в ваш /etc/apt/sources.list (если это еще не сделано), который должен выглядеть так:

deb http://deb.debian.org/debian stretch main contrib non-free deb-src 
http://deb.debian.org/debian stretch main contrib non-free

deb http://deb.debian.org/debian-security/ stretch/updates main contrib non-free  
deb-src http://deb.debian.org/debian-security/ strech/updates main contrib non-free

deb http://deb.debian.org/debian stretch-updates main contrib non-free 
deb-src http://deb.debian.org/debian stretch-updates main contrib non-free

Если вы хотите иметь репозиторий backports, добавьте их также после остальных:

deb http://deb.debian.org/debian stretch-backports main contrib non-free
deb-src http://deb.debian.org/debian stretch-backports main contrib non-free

3) Обновите кэш apt:

# apt update

4) Установите проприетарный драйвер Nvidia (вместе с заголовками ядра):

# apt install linux-headers-$(uname -r|sed 's/[^-]*-[^-]*-//') nvidia-driver

Если вы хотите получить более актуальную версию и использовать ту, что в репозитории backports (в настоящее время версии 375.66 и 390.48 соответственно), используйте эту команду вместо предыдущей:

# apt-get install -t stretch-backports nvidia-driver

5) Установите набор инструментов CUDA:

# apt-get install nvidia-cuda-dev nvidia-cuda-toolkit

Пожалуйста, обратите внимание, что CUDA 8 поддерживает только gcc 5.3.1, который недоступен для stretch. Для компиляции вам нужно добавить -ccbin clang-3.8 в командную строку nvcc.

Если вы хотите использовать CUDA 9, вы можете воспользоваться версией в репозитории backports, так же, как я делал ранее для установки nvidia-driver из него:

# apt-get install -t stretch-backports nvidia-cuda-dev nvidia-cuda-toolkit

Вам, возможно, стоит взглянуть на изменения в логах, чтобы увидеть, какие улучшения вы могли бы получить, используя пакеты (как для драйвера, так и для набора инструментов CUDA) из backports.

6) Перезагрузите свою машину

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

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

Чтобы восстановить работу драйвера Nvidia на вашем сервере с Debian 9 Stretch, рекомендуется выполнить следующие шаги. Проблема, с которой вы столкнулись, может быть связана с установкой драйвера из скрипта на сайте Nvidia, что не рекомендуется для Debian, так как это может сломать систему. Вместо этого лучше воспользоваться драйверами и инструментами CUDA, доступными в репозиториях Debian.

Шаг 1: Удаление предыдущих драйверов Nvidia и связанных пакетов

Откройте терминал и выполните следующую команду для полного удаления всех пакетов Nvidia:

# apt purge nvidia-*

Шаг 2: Добавление репозиториев contrib и non-free

Отредактируйте файл /etc/apt/sources.list, добавив в него contrib и non-free, чтобы он выглядел следующим образом:

deb http://deb.debian.org/debian stretch main contrib non-free
deb-src http://deb.debian.org/debian stretch main contrib non-free

deb http://deb.debian.org/debian-security/ stretch/updates main contrib non-free  
deb-src http://deb.debian.org/debian-security/ stretch/updates main contrib non-free

deb http://deb.debian.org/debian stretch-updates main contrib non-free 
deb-src http://deb.debian.org/debian stretch-updates main contrib non-free

deb http://deb.debian.org/debian stretch-backports main contrib non-free
deb-src http://deb.debian.org/debian stretch-backports main contrib non-free

Шаг 3: Обновление кэша APT

После редактирования файла выполните команду для обновления кэша:

# apt update

Шаг 4: Установка драйвера Nvidia с заголовками ядра

Установите драйвер Nvidia и заголовки ядра следующей командой:

# apt install linux-headers-$(uname -r|sed 's/[^-]*-[^-]*-//') nvidia-driver

Если вы хотите установить более новую версию драйвера из репозитория backports, используйте:

# apt-get install -t stretch-backports nvidia-driver

Шаг 5: Установка инструментов CUDA

Для установки инструментария CUDA выполните следующую команду:

# apt-get install nvidia-cuda-dev nvidia-cuda-toolkit

Учтите, что CUDA 8 поддерживает только gcc 5.3.1, который недоступен для stretch. Чтобы скомпилировать с CUDA, вам нужно будет добавить параметр -ccbin clang-3.8 в командную строку nvcc. Для CUDA 9 вы также можете использовать версию из репозита backports:

# apt-get install -t stretch-backports nvidia-cuda-dev nvidia-cuda-toolkit

Шаг 6: Перезагрузка системы

После выполнения всех действий перезагрузите вашу машину:

# reboot

Заключение

После перезагрузки системные компоненты и драйверы должны нормально работать. Вы сможете использовать nvidia-smi для проверки состояния драйвера и CUDA. Данный подход более надежен и минимизирует вероятность возникновения проблем в дальнейшем.

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

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