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