Loading

Ubuntu服务器禁用NVIDIA自动更新驱动脚本

#!/bin/bash
# =====================================================
# Ubuntu 自动升级防护脚本 - 防止 NVIDIA 驱动被自动更新
# 适用于 Ubuntu 18.04/20.04/22.04+
# =====================================================

echo "=== [1/4] 检测已安装的 NVIDIA 包 ==="
NVIDIA_PKGS=$(dpkg -l | grep -E "^ii\s+nvidia" | awk '{print $2}')

if [ -z "$NVIDIA_PKGS" ]; then
    echo "⚠️  未检测到 NVIDIA 驱动包,请确认已正确安装。"
else
    echo "✅ 检测到以下 NVIDIA 相关包:"
    echo "$NVIDIA_PKGS"
    echo
    echo "=== [2/4] 锁定 NVIDIA 包(apt-mark hold) ==="
    sudo apt-mark hold $NVIDIA_PKGS
    echo
    echo "🔒 当前被锁定的包:"
    apt-mark showhold | grep nvidia || echo "(无 NVIDIA 包被锁定)"
fi

echo
echo "=== [3/4] 更新自动升级黑名单配置 ==="

CONF_FILE="/etc/apt/apt.conf.d/50unattended-upgrades"
if [ -f "$CONF_FILE" ]; then
    # 检查是否已有 NVIDIA 黑名单
    if grep -q 'nvidia-driver' "$CONF_FILE"; then
        echo "ℹ️  已存在 NVIDIA 黑名单配置,无需重复添加。"
    else
        sudo sed -i '/Unattended-Upgrade::Package-Blacklist {/a\    "nvidia-driver-.*";\n    "nvidia-dkms-.*";\n    "nvidia-utils-.*";\n    "libnvidia-.*";' "$CONF_FILE"
        echo "✅ 已将 NVIDIA 包添加到自动升级黑名单中。"
    fi
else
    echo "⚠️  未找到 $CONF_FILE,请确认已安装 unattended-upgrades 包。"
fi

echo
echo "=== [4/4] 检查自动升级服务状态 ==="
sudo systemctl is-enabled unattended-upgrades &>/dev/null && echo "🟢 unattended-upgrades 已启用" || echo "🔴 unattended-upgrades 未启用"
sudo systemctl status unattended-upgrades --no-pager | grep Active

echo
echo "🎯 操作完成。建议执行以下命令验证:"
echo "    sudo unattended-upgrade --dry-run --debug | grep nvidia"
echo
echo "如需取消锁定,可使用:"
echo "    sudo apt-mark unhold <包名>"
echo "===================================================="

posted @ 2025-11-03 17:12  Do1phln  阅读(76)  评论(0)    收藏  举报