Добавить install_nvidia.sh

This commit is contained in:
NW 2025-04-20 11:08:33 +00:00
parent b562c69131
commit 0a3ac9c0e8

115
install_nvidia.sh Normal file
View File

@ -0,0 +1,115 @@
#!/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