银河麒麟v10需先判断包管理器类型(rpm -q yum或apt --version),yum系执行sed修改dnf.conf将installonly_limit设为2,apt系添加apt.conf关闭建议依赖保护;再创建clean-old-kernels.sh脚本,通过rpm/dpkg识别并卸载多余内核,配合systemd定时器每日自动执行,最后用df -h /boot和ls /boot/vmlinuz-*验证清理效果。

银河麒麟V10系统多次升级后,/boot分区持续堆积旧内核文件,每个版本占用200MB–500MB,极易触发“/boot空间满”错误,导致无法安装安全更新、内核升级失败甚至GRUB引导异常;必须建立自动清理机制,防止人工疏漏引发系统维护中断。
确认当前包管理器类型并启用自动清理策略
银河麒麟V10存在APT与YUM双模式共存情况,需先判断系统实际使用的包管理器,否则后续配置将失效。
打开终端,执行rpm -q yum,若返回类似yum-4.2.23-12.ky10.noarch则为YUM系;若提示package yum is not installed且apt --version可正常输出,则为APT系。
YUM系用户执行:【sudo sed -i '/installonly_limit/s/^#//; s/3/2/' /etc/dnf/dnf.conf】——将内核保留上限从默认3个强制改为2个,避免第四次升级时/boot爆满;该操作不可逆,修改后所有新内核安装都将自动触发最旧版本卸载。
APT系用户执行:【echo 'APT::AutoRemove::SuggestsImportant "false";' | sudo tee -a /etc/apt/apt.conf.d/99auto-remove】——关闭建议依赖保护,确保apt autoremove能连带清除linux-headers等配套包。
配置systemd定时任务每日扫描并清理
仅靠包管理器限制不足以应对手动安装、异常中断或跨版本升级残留,必须叠加主动扫描机制。
第一步:创建清理脚本文件
执行sudo nano /usr/local/bin/clean-old-kernels.sh,粘贴以下内容:
#!/bin/bash
CURRENT=$(uname -r | sed 's/-.*$//')
if command -v rpm &> /dev/null; then
for k in $(rpm -q kernel | grep -v "$CURRENT" | sort -V | head -n -2); do
sudo yum remove -y "$k" 2>/dev/null
done
elif command -v dpkg &> /dev/null; then
for k in $(dpkg --list | grep 'linux-image-' | awk '{print $2}' | grep -v "$(uname -r)" | sort -V | head -n -2); do
sudo apt purge -y "$k" 2>/dev/null
done
fi
sudo update-grub 2>/dev/null || true
第二步:赋予执行权限
执行sudo chmod +x /usr/local/bin/clean-old-kernels.sh
第三步:注册systemd定时器
执行sudo systemctl edit --full --force clean-old-kernels.timer,填入:
[Unit]
Description=Daily cleanup of old kernels
[Timer]
OnCalendar=daily
Persistent=true
[Install]
WantedBy=timers.target
第四步:启用并启动定时器
执行sudo systemctl daemon-reload && sudo systemctl enable --now clean-old-kernels.timer——启用后立即生效,无需重启系统。
验证自动清理是否已就绪
执行systemctl list-timers --all | grep clean-old,确认输出中包含clean-old-kernels.timer且下一运行时间在24小时内。
手动触发一次测试:sudo /usr/local/bin/clean-old-kernels.sh,观察终端是否输出Removing kernel-*或Purging linux-image-*日志行。
检查/boot空间变化:df -h /boot,对比执行前后Used值是否下降;同时执行ls /boot/vmlinuz-* | wc -l,确认数量≤3(含当前内核+最多两个历史版)。











