內核升級可能導致第三方驅動(NVIDIA、VirtualBox、DKMS 模組)、內核模組失效,甚至引發啟動失敗。生產環境常需鎖定內核版本。本文提供持久配置與臨時命令兩種方案,並說明依賴關係風險。

/etc/yum.conf(推薦)vim /etc/yum.conf
# 在 [main] 區塊添加或修改
exclude=kernel* kernel-devel* kernel-headers* kernel-tools* kernel-firmware*
yum update | grep -i kernel
# 應無 kernel 相關包出現在更新列表
# 單次更新排除內核
yum -x 'kernel*' update
# 多模式排除
yum --exclude='kernel*' --exclude='kernel-devel*' update
# 安裝版本鎖定插件
yum install yum-plugin-versionlock -y
# 鎖定當前內核版本
yum versionlock kernel-$(uname -r)
# 查看鎖定列表
yum versionlock list
# 解鎖
yum versionlock delete kernel-$(uname -r)
| 方案 | 持久性 | 精準度 | 適用場景 |
|---|---|---|---|
exclude=kernel* | 永久 | 模糊(所有 kernel* 包) | 通用生產環境、防誤升級 |
yum -x | 單次 | 模糊 | 臨時更新其他包、測試 |
versionlock | 永久 | 精準(具體版本號) | 需鎖定特定版本、配合 DKMS |
# 現象:更新 glibc 要求新內核
# 解決:臨時允許內核更新
yum update --disableexcludes=main glibc
# 或暫時註釋 exclude 行
yum updateinfo list cve kernel)# 清理舊內核(保留當前 + 1 個備用)
package-cleanup --oldkernels --count=2
# Debian/Ubuntu 禁止內核升級
apt-mark hold linux-image-$(uname -r) linux-headers-$(uname -r)
# 解鎖
apt-mark unhold linux-image-$(uname -r) linux-headers-$(uname -r)
# 查看鎖定
apt-mark showhold
**生產環境首選 /etc/yum.conf 添加 exclude=kernel***,配合 versionlock 精準鎖定。建立「內核升級 → 驅動編譯驗證 → 分批灰度 → 全量推送」變更流程,而非單純禁止升級。**安全補丁與業務穩定性的平衡,靠流程而非單一參數**。