温馨提示×

ubuntu如何避免驱动更新问题

小樊
43
2025-11-22 13:18:32
栏目: 智能运维

Ubuntu 避免驱动更新问题的实用方案

一 核心思路

  • 区分驱动来源:用 apt/dpkg 安装的驱动可用包管理锁定;用 NVIDIA 官方 .run 手动安装的驱动不会被 apt 自动升级,但要防止系统把 nvidia-* 相关包“补装”回来造成冲突。
  • 同步管控内核:很多驱动失效源于内核升级后模块不匹配,必要时锁定内核或启用 DKMS 自动重建模块。
  • 管控无人值守升级:即便关闭常规更新,也要确保 unattended-upgrades 不会更新驱动或内核。

二 按场景操作

  • 场景 A 使用官方 .run 手动安装 NVIDIA 驱动

    1. 锁定可能被动安装的 NVIDIA 包,避免与 .run 驱动冲突:sudo apt-mark hold nvidia-* nvidia cuda-* cuda
    2. 防止无人值守升级触碰 NVIDIA:编辑 /etc/apt/apt.conf.d/50unattended-upgrades,在 Unattended-Upgrade::Package-Blacklist 段添加 “nvidia*”, “nvidia”; 保存后重启服务:sudo systemctl restart unattended-upgrades
    3. 防止内核升级导致驱动失效:
      • 锁定内核:查看当前内核 uname -r;锁定版本 sudo apt-mark hold linux-image-generic linux-headers-generic
      • 或启用 DKMS:安装时勾选 “Install DKMS module”,或事后执行 sudo dkms status 检查;若未启用,可重装 .run 并选择 DKMS 支持
    4. 按需手动升级驱动:先 /usr/bin/nvidia-uninstall 清理旧驱动,再从 NVIDIA 官网下载新 .run,chmod +x 后 sudo ./NVIDIA-Linux-*.run 安装;验证:nvidia-smi、lsmod | grep nvidia
  • 场景 B 使用 apt/dpkg 安装 NVIDIA 驱动(含 PPA 或官方仓库)

    1. 锁定具体驱动包(推荐精确锁定,避免误伤):查看已装包 apt list --installed | grep -i nvidia;锁定示例 sudo apt-mark hold nvidia-driver-535(按实际版本替换)
    2. 如需批量固定,可一次性锁定相关组件:sudo apt-mark hold nvidia-compute-utils-535 nvidia-dkms-535 nvidia-driver-535 nvidia-fabricmanager-535 nvidia-kernel-common-535 nvidia-kernel-source-535 nvidia-utils-535 libnvidia-cfg1-535 libnvidia-common-535 libnvidia-compute-535 libnvidia-decode-535 libnvidia-encode-535 libnvidia-extra-535 libnvidia-fbc1-535 libnvidia-gl-525 nvidia-modprobe nvidia-peer-memory-dkms nvidia-prime nvidia-settings
    3. 检查/解除锁定:apt-mark showhold;解除 sudo apt-mark unhold
    4. 若之前添加了显卡驱动 PPA,为减少意外升级也可移除该 PPA,再按需手动安装/回退版本

三 关闭或收紧系统自动更新

  • 关闭周期性自动更新(适合桌面/测试环境):将 /etc/apt/apt.conf.d/10periodic 与 /etc/apt/apt.conf.d/20auto-upgrades 中相关项设为 0
    • echo -e “APT::Periodic::Update-Package-Lists "0";\nAPT::Periodic::Download-Upgradeable-Packages "0";\nAPT::Periodic::AutocleanInterval "0";\nAPT::Periodic::Unattended-Upgrade "0";” | sudo tee /etc/apt/apt.conf.d/10periodic
    • echo -e “APT::Periodic::Update-Package-Lists "0";\nAPT::Periodic::Unattended-Upgrade "0";” | sudo tee /etc/apt/apt.conf.d/20auto-upgrades
  • 仅关闭无人值守升级但保留通知:确保 20auto-upgrades 中 APT::Periodic::Unattended-Upgrade 为 “0”,并保留 10periodic 的更新通知功能
  • 图形界面:在“软件和更新”→“更新”页,将“自动检查更新”“自动安装安全更新”等选项调低或关闭(不同版本界面略有差异)

四 验证与回退

  • 验证驱动与内核模块:nvidia-smi;lsmod | grep nvidia;cat /proc/driver/nvidia/version
  • 验证锁定是否生效:apt list --upgradable | grep nvidia(应无输出);apt-mark showhold(应看到已锁定的包)
  • 回退/升级流程:需要升级时先 sudo apt-mark unhold 再 apt upgrade;若用 .run 驱动,按“卸载旧驱动→安装新 .run→验证”的步骤进行;若因内核升级导致驱动失效且未用 DKMS,可切回旧内核启动(GRUB 高级选项),或安装对应版本的 linux-headers 后用 DKMS 重建:sudo dkms install -m nvidia -v <已安装驱动版本号>

0