NVIDIA_GPU_Auto_Installer_f.../install_nvidia.sh

115 lines
4.7 KiB
Bash
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/bin/bash
# === Универсальный установщик драйверов NVIDIA для Ubuntu 24.04+ ===
# Автоматически определяет GPU, устанавливает драйверы и настраивает Docker
# --- Проверка прав ---
if [ "$(id -u)" -ne 0 ]; then
echo "🚫 Запустите скрипт с sudo!" >&2
exit 1
fi
# --- Определение GPU ---
detect_gpu() {
echo "🔍 Поиск NVIDIA GPU..."
if ! lspci | grep -i "nvidia" >/dev/null; then
echo "❌ NVIDIA GPU не обнаружена!"
echo "Проверьте:"
echo "1. Физическое подключение карты"
echo "2. Поддержку PCIe в BIOS"
exit 1
fi
GPU_MODEL=$(lspci | grep -i "nvidia" | head -n 1 | cut -d ':' -f 4 | sed 's/^[ \t]*//;s/[ \t]*$//')
GPU_ID=$(lspci -n | grep -i "10de" | cut -d ' ' -f 3 | cut -d ':' -f 2)
case "$GPU_ID" in
"2230"|"2231") DRIVER="470" ;; # Tesla T4
"1db6") DRIVER="525" ;; # Tesla A10
"20b5") DRIVER="535" ;; # RTX A6000
*) DRIVER="550" ;; # По умолчанию (новые карты)
esac
echo "✅ Обнаружена видеокарта: $GPU_MODEL (ID: 10de:$GPU_ID)"
echo "🛠️ Рекомендуемый драйвер: $DRIVER"
}
# --- Установка драйверов ---
install_drivers() {
echo "🧹 Очистка старых драйверов..."
apt-get purge -y *nvidia* *cuda* *cudnn* 2>/dev/null
apt-get autoremove -y
rm -rf /usr/local/cuda*
echo "📦 Установка зависимостей..."
apt-get update
apt-get install -y --no-install-recommends \
ubuntu-drivers-common \
linux-headers-$(uname -r) \
build-essential
echo "⚙️ Установка драйвера версии $DRIVER..."
apt-get install -y nvidia-driver-$DRIVER nvidia-dkms-$DRIVER
}
# --- Проверка драйвера ---
verify_driver() {
if ! nvidia-smi &>/dev/null; then
echo "❌ Ошибка: nvidia-smi не работает!"
echo "Возможные решения:"
echo "1. Отключите Secure Boot в BIOS"
echo "2. Выполните: sudo apt-get install --reinstall nvidia-dkms-$DRIVER"
exit 1
fi
}
# --- Настройка Docker ---
setup_docker() {
echo "🐳 Настройка Docker для NVIDIA GPU..."
curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg
curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | \
sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \
sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list >/dev/null
apt-get update
apt-get install -y nvidia-container-toolkit
systemctl restart docker
echo "🔌 Проверка Docker + GPU..."
if ! docker run --rm --gpus all nvidia/cuda:12.3.1-base nvidia-smi &>/dev/null; then
echo "⚠️ Docker не видит GPU! Попробуйте:"
echo "1. sudo systemctl restart docker"
echo "2. Добавьте пользователя в группу docker: sudo usermod -aG docker $USER"
fi
}
# --- Главный процесс ---
clear
echo "🖥️ Универсальный установщик NVIDIA GPU для Ubuntu"
echo "▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔"
detect_gpu
install_drivers
verify_driver
setup_docker
# --- Итоговая информация ---
echo ""
echo "✅ Установка завершена!"
echo "▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔"
echo "Информация о системе:"
nvidia-smi
echo ""
echo "Для использования GPU в контейнерах:"
echo " docker run --gpus all ваш-образ"
echo ""
echo "Рекомендуемые базовые образы:"
echo " • nvidia/cuda:12.3.1-cudnn8-runtime (для PyTorch/TensorFlow)"
echo " • nvcr.io/nvidia/pytorch:23.10-py3 (официальный PyTorch)"
echo "▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔"
# Перезагрузка (опционально)
read -p "Перезагрузить систему сейчас? [y/N]: " reboot_choice
if [[ $reboot_choice =~ ^[Yy]$ ]]; then
shutdown -r now
fi