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

评论

请输入您的评论. 可以使用维基语法:
 
linux/debian系列/debian环境配置/debian-ubuntu锁定内核禁止升级.txt · 最后更改: 2025/11/14 01:45