Добавить install_nvidia.sh
This commit is contained in:
parent
b562c69131
commit
0a3ac9c0e8
115
install_nvidia.sh
Normal file
115
install_nvidia.sh
Normal 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
|
Loading…
Reference in New Issue
Block a user