Установка CUDA на Debian 13, 12, 11: подробное руководство

CUDA (Compute Unified Device Architecture) — это платформа параллельных вычислений от NVIDIA, которая позволяет использовать вычислительные ядра видеокарты (GPU) для решения ресурсоёмких задач: машинное обучение, научные симуляции, видеокодирование, обработка изображений. Установка CUDA на Debian включает три компонента: драйвер NVIDIA, тулкит (компилятор nvcc и библиотеки) и репозиторий. Главные сложности для новичка: нужно добавить репозитории contrib и non-free, правильно импортировать GPG-ключ NVIDIA (для Debian 13 он другой), выбрать способ установки (стабильный из Debian или свежий из репозитория NVIDIA), а также решить проблему с Secure Boot (создать MOK-пароль). На Debian 11 максимальная версия CUDA из репозитория NVIDIA — 12.6.x (из-за ограничений библиотеки glibc).

💡 В этом руководстве вы установите CUDA на Debian двумя способами: из стандартного репозитория Debian (стабильнее, но старше) и из официального репозитория NVIDIA (новее). Вы также узнаете, как настроить окружение, проверить работу на тестовой программе и решить типичные проблемы.

В этой статье вы узнаете:

  • Как подготовить систему: включить contrib и non-free, установить зависимости
  • Как установить CUDA из репозитория Debian (проще, стабильнее)
  • Как установить CUDA из официального репозитория NVIDIA (свежее)
  • Как настроить переменные окружения PATH и LD_LIBRARY_PATH
  • Как проверить установку с помощью nvidia-smi и nvcc
  • Как скомпилировать и запустить тестовую CUDA-программу
  • Как решить типичные проблемы: конфликт драйверов, Secure Boot, ошибки GPG-ключа

Для кого: разработчики ML/AI, исследователи, энтузиасты, а также все, кому нужно использовать GPU-ускорение на Debian 11, 12 или 13.

Оглавление

1. 🔧 Предварительные требования

Перед установкой убедитесь, что:

  • У вас установлена Debian 11, 12 или 13
  • У вас есть совместимая видеокарта NVIDIA (для CUDA-вычислений)
  • Подключение к интернету стабильно
  • У вас есть права sudo

⚠️ ВАЖНО: Проверьте права sudo перед установкой

Если вы не уверены, есть ли у вашего пользователя права администратора, выполните в терминале:

sudo whoami

Что делает: sudo выполняет команду от имени суперпользователя, whoami показывает имя текущего пользователя.

Зачем: Эта команда проверяет, есть ли у вас права sudo. Без них вы не сможете устанавливать пакеты.

✅ Если выводит root — всё в порядке, можете продолжать.

❌ Если выводит is not in the sudoers file — сначала пройдите наше руководство по настройке sudo.

1.1 Обновление системы

sudo apt update && sudo apt upgrade -y

Что делает: Обновляет список пакетов и устанавливает последние обновления.

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

1.2 Включение репозиториев contrib, non-free и non-free-firmware

CUDA находится в компонентах contrib и non-free. Включите их в зависимости от версии Debian.

Для Debian 13 и 12 (новый формат DEB822):

sudo sed -i 's/Components: main/Components: main contrib non-free non-free-firmware/' /etc/apt/sources.list.d/debian.sources
sudo apt update

Для Debian 11 (старый формат sources.list):

sudo sed -i 's/main$/main contrib non-free/' /etc/apt/sources.list
sudo apt update

1.3 Установка вспомогательных пакетов

sudo apt install ca-certificates curl gpg linux-headers-$(uname -r) build-essential dkms -y

Что делает: Устанавливает инструменты для безопасной работы с HTTPS-репозиториями, GPG-ключами, заголовки ядра и инструменты сборки модулей.

1.4 (Опционально) Удаление предыдущих установок NVIDIA и CUDA

Если вы ранее устанавливали драйверы NVIDIA или CUDA другим способом (из .run-файла или старых пакетов), удалите их.

Для пакетов APT:

sudo apt remove 'cuda*' 'nvidia*' --purge -y
sudo apt autoremove --purge -y

Для установки из .run-файла:

sudo nvidia-installer --uninstall
sudo /usr/local/cuda-X.Y/bin/cuda-uninstaller

2. 📊 Сравнение способов установки CUDA

В Debian есть два основных способа установки CUDA. Вот их сравнение:

МетодDebian 13Debian 12Debian 11ПлюсыМинусы
Debian
репозиторий
CUDA 12.4CUDA 11.8CUDA 11.2Стабильность,
проверенные
пакеты, не
нужно
возиться с
ключами
Версии
старые
Репозиторий
NVIDIA
CUDA 13.xCUDA 13.xCUDA 12.6.xСвежие
версии
тулкита и
драйверов
Нужно
вручную
добавлять
репозиторий
и GPG-ключ,
возможны
конфликты с
Secure Boot

💡 Рекомендация: Если вам нужна максимальная стабильность и вы не гонитесь за самой свежей версией CUDA — используйте репозиторий Debian. Если вы разрабатываете на PyTorch/TensorFlow и нужна свежая CUDA — используйте репозиторий NVIDIA.

3. 📦 Способ 1: Установка CUDA из репозитория Debian (стабильнее, но старше)

Этот способ подходит для тех, кто предпочитает проверенные пакеты от Debian.

3.1 Проверка доступной версии

apt-cache policy nvidia-cuda-toolkit nvidia-driver

Ожидаемый вывод (Debian 13):

nvidia-cuda-toolkit:
  Installed: (none)
  Candidate: 12.4.131~12.4.1-2
nvidia-driver:
  Installed: (none)
  Candidate: 550.163.01-2

3.2 Установка CUDA и драйвера

sudo apt install nvidia-cuda-toolkit nvidia-driver -y

Что делает: Устанавливает CUDA Toolkit (компилятор nvcc, библиотеки) и драйвер NVIDIA.

3.3 Перезагрузка

sudo reboot

3.4 Настройка переменных окружения

Для Debian-репозитория переменные окружения обычно не нужны, так как nvcc устанавливается в /usr/bin. Но для уверенности проверьте:

which nvcc

Ожидаемый вывод: /usr/bin/nvcc

4. 📦 Способ 2: Установка CUDA из официального репозитория NVIDIA (свежее)

Этот способ подходит для разработчиков, которым нужны новые функции CUDA и свежие драйверы.

⚠️ Secure Boot: Если на вашей системе включён Secure Boot, при установке драйверов NVIDIA будет создан ключ MOK (Machine Owner Key). Во время установки вам предложат задать пароль для MOK. Запомните его — он понадобится после перезагрузки на синем экране MOK management. Если вы не хотите возиться с MOK, отключите Secure Boot в BIOS перед установкой.

4.1 Очистка старых файлов репозитория

sudo rm -f /etc/apt/sources.list.d/cuda-debian*.list /etc/apt/sources.list.d/cuda-debian*.sources /etc/apt/sources.list.d/nvidia-cuda.list

4.2 Проверка архитектуры

ARCH="$(dpkg --print-architecture)"
case "$ARCH" in
  amd64|arm64) echo "Архитектура $ARCH поддерживается." ;;
  *) echo "Ошибка: архитектура $ARCH не поддерживается для установки CUDA через репозиторий NVIDIA." && exit 1 ;;
esac

4.3 Импорт GPG-ключа NVIDIA и добавление репозитория (автоматический скрипт)

Этот скрипт автоматически определяет вашу версию Debian и архитектуру, скачивает правильный ключ и создаёт файл репозитория.

(
  set -e
  . /etc/os-release
  ARCH="$(dpkg --print-architecture)"

  case "$ARCH" in
    amd64) NVIDIA_ARCH="x86_64" ;;
    arm64) NVIDIA_ARCH="sbsa" ;;
    *) echo "Архитектура $ARCH не поддерживается."; exit 1 ;;
  esac

  case "$VERSION_ID:$NVIDIA_ARCH" in
    13:x86_64|13:sbsa) NVIDIA_DISTRO="debian13"; NVIDIA_KEY="8793F200.pub" ;;
    12:x86_64|12:sbsa) NVIDIA_DISTRO="debian12"; NVIDIA_KEY="3bf863cc.pub" ;;
    11:x86_64) NVIDIA_DISTRO="debian11"; NVIDIA_KEY="3bf863cc.pub" ;;
    11:sbsa) echo "NVIDIA не публикует репозиторий для Debian 11 SBSA."; exit 1 ;;
    *) echo "Версия Debian $VERSION_ID не поддерживается."; exit 1 ;;
  esac

  sudo curl -fsSL "https://developer.download.nvidia.com/compute/cuda/repos/${NVIDIA_DISTRO}/${NVIDIA_ARCH}/${NVIDIA_KEY}" | sudo gpg --dearmor --batch --yes -o /usr/share/keyrings/nvidia-cuda.gpg

  printf 'Types: deb\nURIs: https://developer.download.nvidia.com/compute/cuda/repos/%s/%s/\nSuites: /\nArchitectures: %s\nSigned-By: /usr/share/keyrings/nvidia-cuda.gpg\n' "$NVIDIA_DISTRO" "$NVIDIA_ARCH" "$ARCH" | sudo tee /etc/apt/sources.list.d/nvidia-cuda.sources > /dev/null
)

Что делает скрипт:

  • Определяет версию Debian и архитектуру
  • Выбирает правильный ключ (8793F200.pub для Debian 13, 3bf863cc.pub для Debian 11/12)
  • Скачивает и сохраняет ключ
  • Создаёт файл репозитория в формате DEB822

4.4 Обновление списка пакетов

sudo apt update

4.5 Проверка доступных версий

apt-cache policy cuda cuda-toolkit nvidia-driver

Ожидаемый вывод (Debian 13 amd64):

cuda:
  Installed: (none)
  Candidate: 13.2.1-1
cuda-toolkit:
  Installed: (none)
  Candidate: 13.2.1-1
nvidia-driver:
  Installed: (none)
  Candidate: 595.71.05-1

4.6 Установка CUDA и драйвера

sudo apt install cuda -y

Что делает: Устанавливает полный пакет CUDA (тулкит + драйвер) из официального репозитория NVIDIA.

Альтернатива (только тулкит, без драйвера):

sudo apt install cuda-toolkit -y

4.7 Перезагрузка

sudo reboot

4.8 Настройка переменных окружения (важно для репозитория NVIDIA!)

Пакет cuda устанавливается в /usr/local/cuda, а не в системные директории. Нужно добавить пути в PATH и LD_LIBRARY_PATH.

if ! grep -q 'CUDA Toolkit path' ~/.bashrc; then
  printf '\n# CUDA Toolkit path\nexport PATH=/usr/local/cuda/bin:$PATH\nexport LD_LIBRARY_PATH=/usr/local/cuda/lib64${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}\n' >> ~/.bashrc
fi
source ~/.bashrc

Что делает: Добавляет команды в файл ~/.bashrc, чтобы при каждом запуске терминала переменные окружения были установлены правильно.

4.9 Проверка, что nvcc теперь виден

which nvcc

Ожидаемый вывод: /usr/local/cuda/bin/nvcc

5. ✅ Проверка установки

5.1 Проверка драйвера NVIDIA

nvidia-smi

Ожидаемый вывод: Таблица с информацией о видеокарте, драйвере и версии CUDA.

Что означает поле CUDA Version: Это максимальная версия CUDA, поддерживаемая драйвером. Она может отличаться от версии установленного тулкита — это нормально.

5.2 Проверка компилятора CUDA

nvcc --version

Ожидаемый вывод: Информация о версии nvcc.

5.3 Компиляция и запуск тестовой программы

Создание файла hello.cu:

cat <<'EOF' > hello.cu
#include <stdio.h>
#include <cuda_runtime.h>

__global__ void helloFromGPU(void) {
    printf("Hello World from GPU!\n");
}

int main(void) {
    printf("Hello World from CPU!\n");
    helloFromGPU<<<1, 10>>>();
    cudaDeviceSynchronize();
    return 0;
}
EOF

Компиляция:

nvcc hello.cu -o hello

Запуск:

./hello

Ожидаемый вывод: Строка Hello World from CPU! и 10 строк Hello World from GPU!.

6. ⚠️ Решение типичных проблем

6.1 Ошибка: GPG ключ для репозитория NVIDIA не работает

Симптом: sudo apt update выдаёт ошибку GPG error или signature verification failed.

Причина: Ключ не загрузился или загрузился неправильно.

Решение: Удалите старый ключ и повторите импорт из раздела 4.3:

sudo rm -f /usr/share/keyrings/nvidia-cuda.gpg
# Затем повторите скрипт из раздела 4.3

6.2 Ошибка: nvidia-smi: command not found

Симптом: Драйвер не установлен или модули ядра не загрузились.

Пошаговое решение:

Шаг 1: Проверьте, загружены ли модули NVIDIA:

lsmod | grep nvidia

Шаг 2: Если вывода нет — проверьте логи ядра:

sudo dmesg | grep -i nvidia

Шаг 3: Перезагрузитесь (иногда после установки драйверов модули не загружаются до перезагрузки):

sudo reboot

Шаг 4: Если проблема осталась — проверьте, заблокирован ли свободный драйвер nouveau:

lsmod | grep nouveau

Если nouveau активен — создайте файл чёрного списка:

echo "blacklist nouveau" | sudo tee /etc/modprobe.d/nvidia-blacklist.conf
sudo update-initramfs -u
sudo reboot

6.3 Ошибка: nvcc: command not found (после установки из репозитория NVIDIA)

Симптом: nvcc --version не работает.

Причина: Не настроены переменные окружения (раздел 4.8).

Решение: Проверьте, есть ли файл /usr/local/cuda/bin/nvcc. Если есть — настройте PATH:

export PATH=/usr/local/cuda/bin:$PATH
echo 'export PATH=/usr/local/cuda/bin:$PATH' >> ~/.bashrc

6.4 Secure Boot: ключ MOK (Machine Owner Key)

Симптом: Во время установки драйвера появляется запрос на создание пароля MOK, а после перезагрузки — синий экран с просьбой «Enroll MOK».

Причина: Secure Boot требует подписи модулей ядра.

Решение: При запросе создайте пароль. После перезагрузки в MOK management выберите «Enroll MOK», введите пароль и подтвердите. Если не хотите возиться — отключите Secure Boot в BIOS/UEFI перед установкой.

6.5 Ошибка: Конфликт Signed-By при apt update

Симптом: apt update выдаёт ошибку о конфликте Signed-By для репозитория NVIDIA.

Причина: Остались старые файлы репозитория от предыдущих установок.

Решение: Удалите все старые файлы и оставьте только один:

sudo rm -f /etc/apt/sources.list.d/cuda-debian*.list /etc/apt/sources.list.d/cuda-debian*.sources /etc/apt/sources.list.d/nvidia-cuda.list
sudo apt update

6.6 Ошибка: APT не может найти nvidia-cuda-toolkit

Симптом: apt-cache policy nvidia-cuda-toolkit не показывает кандидата.

Причина: Не включены репозитории contrib и non-free.

Решение: Вернитесь к разделу 1.2 и включите нужные компоненты, затем выполните sudo apt update.

7. ❌ Удаление CUDA

7.1 Удаление пакетов

sudo apt remove 'cuda*' 'nvidia*' --purge -y
sudo apt autoremove --purge -y

7.2 Удаление старого пакета cuda-keyring (если был установлен)

if dpkg -s cuda-keyring >/dev/null 2>&1; then
  echo "Удаление старого пакета cuda-keyring..."
  sudo apt purge cuda-keyring -y
fi

7.3 Удаление репозитория NVIDIA (если добавляли)

sudo rm -f /etc/apt/sources.list.d/nvidia-cuda.sources
sudo rm -f /usr/share/keyrings/nvidia-cuda.gpg
sudo apt update

7.4 Проверка удаления

nvcc --version

Ожидаемый вывод: bash: nvcc: command not found

8. 📝 Чек-лист: всё готово к работе

  • [ ] Система обновлена (sudo apt update && sudo apt upgrade -y)
  • [ ] Репозитории contrib и non-free включены
  • [ ] Заголовки ядра установлены (linux-headers-$(uname -r))
  • [ ] Выбран и выполнен один из способов установки (Debian / NVIDIA)
  • [ ] Драйвер NVIDIA работает (nvidia-smi показывает видеокарту)
  • [ ] Компилятор CUDA работает (nvcc --version показывает версию)
  • [ ] (Для репозитория NVIDIA) Переменные PATH и LD_LIBRARY_PATH настроены
  • [ ] Тестовая программа компилируется и запускается (./hello выводит сообщения с GPU)

Заключение

Вы установили CUDA на Debian. Если вы выбрали репозиторий Debian — получили стабильную, проверенную версию (Debian 13: CUDA 12.4, Debian 12: 11.8, Debian 11: 11.2). Если выбрали официальный репозиторий NVIDIA — получили последнюю версию CUDA и драйверов (Debian 13/12: CUDA 13.x, Debian 11: 12.6.x). Теперь вы можете разрабатывать и запускать GPU-ускоренные приложения: фреймворки машинного обучения (PyTorch, TensorFlow), научные расчёты и многое другое.

Что дальше:

  • Установите PyTorch с поддержкой CUDA или TensorFlow
  • Изучите примеры из NVIDIA CUDA Samples
  • Настройте CuPy для ускорения NumPy-кода на GPU
  • Для глубокого обучения рассмотрите установку Anaconda для управления окружениями

Связанные статьи: