{{htmlmetatags>metatag-robots=(index, follow) metatag-keywords=(锁定内核, Debian, Ubuntu, 内核升级, 禁止自动升级, GPU驱动兼容性, 签名加密机制) metatag-description=(了解如何在Debian或Ubuntu系统中锁定Linux内核以防止自动升级导致的兼容性问题,如GPU驱动或签名加密机制失效,并获取解锁内核升级的方法。) metatag-media-og:image=(:wiki:lock-kernel-upgrade.jpg) metatag-og:description=(通过本指南学习如何在您的Debian或Ubuntu系统上锁定Linux内核,保护您的系统免受因自动升级导致的GPU驱动不兼容或签名失效等问题影响。) metatag-og:any=(掌握锁定和解锁Linux内核的具体步骤,确保您的系统始终与关键硬件和软件保持最佳兼容性。) }} ====== debian-ubuntu锁定内核禁止升级 ====== 因为某些场景,例如GPU驱动,或者一些签名加密机制,随意升级Linux内核会导致签名失效。这里准备锁定Linux 的内核,不允许自动升级。 ===== 锁定Linux内核 ===== #!/bin/bash # 获取当前内核版本 KERNEL_VERSION=$(uname -r) # 使用 apt-mark hold 锁定相关内核包 sudo apt-mark hold linux-image-${KERNEL_VERSION} \ linux-headers-${KERNEL_VERSION} \ linux-modules-${KERNEL_VERSION} \ linux-modules-extra-${KERNEL_VERSION} # 可选:同时锁定 meta 包(防止自动拉取新内核) sudo apt-mark hold linux-image-generic linux-headers-generic linux-generic echo "已锁定内核版本 ${KERNEL_VERSION} 相关的包" 同时 sudo vim /etc/apt/apt.conf.d/99exclude-kernel 输入如何内容: APT::NeverAutoRemove { "^linux-image-.*"; "^linux-headers-.*"; "^linux-modules-.*"; }; APT::VersionedKernelPackages ""; DPkg::Post-Invoke {"echo 'Kernel packages locked from auto-remove.'";}; ===== 解锁内核的锁定 ===== 删除文件:/etc/apt/apt.conf.d/99exclude-kernel #!/bin/bash # 获取当前内核版本(去除末尾换行) KERNEL_VERSION=$(uname -r | tr -d '\n') # 定义要解锁的内核相关包 PACKAGES=( "linux-image-${KERNEL_VERSION}" "linux-headers-${KERNEL_VERSION}" "linux-modules-${KERNEL_VERSION}" "linux-modules-extra-${KERNEL_VERSION}" "linux-image-generic" "linux-headers-generic" "linux-generic" ) echo "正在尝试解锁当前内核版本: ${KERNEL_VERSION}" # 执行解锁操作(即使某些包未被 hold 或未安装,apt-mark 也不会报错) sudo apt-mark unhold "${PACKAGES[@]}" echo "已完成解锁操作。以下包已解除锁定(如曾被锁定):" printf ' • %s\n' "${PACKAGES[@]}" echo "" echo "提示:现在运行 'sudo apt upgrade' 将可正常升级内核。"