- Вопрос или проблема
- 1) Удалите предыдущий драйвер, CUDA и другие связанные с Nvidia пакеты:
- 2) Добавьте contrib и non-free репозитории Debian в ваш /etc/apt/sources.list (если это еще не сделано), который должен выглядеть так:
- 3) Обновите кэш apt:
- 4) Установите проприетарный драйвер Nvidia (вместе с заголовками ядра):
- 5) Установите набор инструментов CUDA:
- 6) Перезагрузите свою машину
- Ответ или решение
- Шаг 1: Удаление предыдущих драйверов Nvidia и связанных пакетов
- Шаг 2: Добавление репозиториев contrib и non-free
- Шаг 3: Обновление кэша APT
- Шаг 4: Установка драйвера Nvidia с заголовками ядра
- Шаг 5: Установка инструментов CUDA
- Шаг 6: Перезагрузка системы
- Заключение
Вопрос или проблема
У меня есть сервер (на базе 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. Данный подход более надежен и минимизирует вероятность возникновения проблем в дальнейшем.