银河麒麟v10需锁定内核防止自动升级:①用apt-mark hold锁定当前linux-image与headers包;②配置apt.conf.d/99no-kernel-upgrade排除kernel.*包;③关闭kylin-update-manager内核自动安装并禁用kylin-kernel-upgrader服务;④用chattr +i锁定sources.list防重置。

银河麒麟V10系统默认会在每次执行系统更新时尝试升级内核版本,这可能导致驱动兼容性问题、虚拟化环境异常或已验证的生产环境配置失效。若你已在特定内核版本(如5.4.18-26.ky10)上完成全部适配测试,需阻止任何自动或手动触发的内核包升级行为。
用apt-mark hold锁定当前内核版本
这是最轻量、可逆且被APT官方支持的方式,适用于所有基于Debian/Ubuntu的麒麟V10版本(含SP1/SP2),操作后即使运行sudo apt upgrade也不会触碰已锁定的内核包。
第一步:打开终端,执行命令查看当前运行的内核版本:
uname -r
第二步:根据输出结果(例如5.4.18-26.ky10),执行以下命令锁定对应内核镜像与头文件包:
sudo apt-mark hold linux-image-5.4.18-26.ky10 linux-headers-5.4.18-26.ky10
第三步:验证是否成功锁定:
apt-mark showhold | grep -i "linux-image\|linux-headers"
若返回包含你刚输入的包名,则表示已生效。注意:【必须同时锁定image和headers两个包,否则仅锁image会导致后续编译模块失败】
修改APT配置排除所有内核相关包
当系统中存在多个历史内核版本,且你希望全局禁止任何kernel.*包参与升级时,该方法比逐个hold更彻底,适合批量管理场景。
方法一:创建专用排除配置文件
sudo nano /etc/apt/apt.conf.d/99no-kernel-upgrade
方法二:在文件中写入以下两行(不可省略分号,格式严格):
Apt::NeverAutoRemove "::kernel.*";
APT::Get::Always-Include-Phased-Updates "false";
方法三:保存退出后,执行命令验证规则加载:
apt-config dump | grep -E "(NeverAutoRemove|phased)"
若看到Apt::NeverAutoRemove值为"::kernel.*",说明配置已生效。此设置不影响其他软件包正常更新。
禁用内核自动安装策略(图形界面+服务级)
银河麒麟V10桌面版自带的kylin-update-manager会主动检测并推荐新内核安装,即使APT层已限制,它仍可能弹窗提示或后台下载deb包。需同步关闭其内核策略模块。
打开控制中心 → 更新 → 点击右上角“更新设置” → 将“自动安装安全更新中的内核”开关设为关闭状态。
执行命令禁用内核升级服务(若存在):
sudo systemctl stop kylin-kernel-upgrader.service 2>/dev/null && sudo systemctl disable kylin-kernel-upgrader.service
检查该服务是否存在:
systemctl list-unit-files | grep kernel
若输出为空,则无需执行禁用;若存在对应service,上述命令将彻底移除其开机自启能力。
锁定内核源文件防止策略重置
部分麒麟V10定制版本会在系统策略刷新时自动还原/etc/apt/sources.list中的内核源条目,导致排除规则失效。需对源文件加不可更改属性。
执行命令锁定源文件:
sudo chattr +i /etc/apt/sources.list
验证是否生效:
sudo lsattr /etc/apt/sources.list
若输出含【i】字符(如----i---------e-----),则文件已被系统级锁定,任何进程包括root用户都无法修改或删除该文件。解锁需用sudo chattr -i,但请勿在此阶段执行。











