{{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' 将可正常升级内核。"