Files
portainer-core/scripts/gpu-fix-downgrade-all.sh
T

87 lines
3.5 KiB
Bash
Executable File

#!/bin/bash
# Complete downgrade of all nvidia-container packages to 1.17.9-1
set -e
GREEN='\033[0;32m'
RED='\033[0;31m'
BLUE='\033[0;34m'
NC='\033[0m'
echo -e "${BLUE}╔═══════════════════════════════════════════════════════╗${NC}"
echo -e "${BLUE}║ Downgrade All NVIDIA Container Packages ║${NC}"
echo -e "${BLUE}╚═══════════════════════════════════════════════════════╝${NC}"
echo ""
# Check if running as root
if [ "$EUID" -ne 0 ]; then
echo -e "${RED}✗ Please run as root (use sudo)${NC}"
exit 1
fi
VERSION="1.17.9-1"
echo -e "${BLUE}==> Step 1: Remove all nvidia-container packages${NC}"
apt-get remove -y nvidia-container-toolkit nvidia-container-toolkit-base libnvidia-container-tools libnvidia-container1 || true
echo -e "${GREEN}✓ Removed packages${NC}"
echo ""
echo -e "${BLUE}==> Step 2: Clean up${NC}"
apt-get autoremove -y
echo -e "${GREEN}✓ Cleaned up${NC}"
echo ""
echo -e "${BLUE}==> Step 3: Install all packages at version $VERSION${NC}"
apt-get install -y \
nvidia-container-toolkit=$VERSION \
nvidia-container-toolkit-base=$VERSION \
libnvidia-container-tools=$VERSION \
libnvidia-container1=$VERSION
echo -e "${GREEN}✓ Installed all packages at $VERSION${NC}"
echo ""
echo -e "${BLUE}==> Step 4: Hold packages to prevent auto-upgrade${NC}"
apt-mark hold nvidia-container-toolkit nvidia-container-toolkit-base libnvidia-container-tools libnvidia-container1
echo -e "${GREEN}✓ Packages held${NC}"
echo ""
echo -e "${BLUE}==> Step 5: Configure Docker${NC}"
nvidia-ctk runtime configure --runtime=docker --config=/etc/docker/daemon.json
echo -e "${GREEN}✓ Docker configured${NC}"
echo ""
echo -e "${BLUE}==> Step 6: Rebuild library cache${NC}"
ldconfig
echo -e "${GREEN}✓ Library cache rebuilt${NC}"
echo ""
echo -e "${BLUE}==> Step 7: Restart Docker${NC}"
systemctl restart docker
sleep 3
echo -e "${GREEN}✓ Docker restarted${NC}"
echo ""
echo -e "${BLUE}==> Step 8: Test GPU access${NC}"
echo ""
if docker run --rm --gpus all nvidia/cuda:11.8.0-runtime-ubuntu20.04 nvidia-smi; then
echo ""
echo -e "${GREEN}╔═══════════════════════════════════════════════════════╗${NC}"
echo -e "${GREEN}║ SUCCESS! ║${NC}"
echo -e "${GREEN}║ GPU is now accessible in Docker! ║${NC}"
echo -e "${GREEN}╚═══════════════════════════════════════════════════════╝${NC}"
echo ""
echo "Installed versions:"
dpkg -l | grep nvidia-container
echo ""
exit 0
else
echo ""
echo -e "${RED}╔═══════════════════════════════════════════════════════╗${NC}"
echo -e "${RED}║ FAILED ║${NC}"
echo -e "${RED}║ GPU test still failing ║${NC}"
echo -e "${RED}╚═══════════════════════════════════════════════════════╝${NC}"
echo ""
exit 1
fi