首页 新闻资讯 行业资讯 Ubuntu系统清理旧内核释放空间和优化启动的全流程
Ubuntu系统清理旧内核释放空间和优化启动的全流程
时间 : 2025-05-22 10:47:06 编辑 : 华纳云 分类 :行业资讯 阅读量 : 345

Ubuntu系统经过多次更新升级后,旧版内核文件会持续累积,这样会导致占用宝贵磁盘空间(单个内核包可达200MB以上),还会让GRUB启动菜单变更冗长杂乱。下面为大家深入解析如何安全、高效的清理冗余内容,保证系统稳定性。

第一步:查看已安装的内核列表 

打开终端,执行以下命令列出所有已安装的Linux内核包: 

dpkg list | grep E 'linuximage|linuxheaders|linuxmodules' 

输出示例如下: 

ii  linuximage5.15.078generic        5.15.078.85~20.04.1           amd64        Signed kernel image generic 
ii  linuximage5.15.082generic        5.15.082.91~20.04.1           amd64        Signed kernel image generic 
ii  linuximagegenerichwe20.04       5.15.0.82.91~20.04.1           amd64        Generic Linux kernel image 

关键字段说明: 

linuximage:内核主体文件 

linuxheaders:开发头文件(编译驱动需保留当前版本) 

linuxmodules:内核模块 

版本号格式:主版本.次版本.修订号发布编号(如5.15.082 

第二步:确认当前运行的内核版本 

执行命令获取当前正在使用的内核版本: 

uname r 

示例输出:5.15.082generic 

重要原则:绝对不要删除当前正在运行的内核! 

第三步:使用APT自动清理旧内核 

第一种方法是可以通过apt autoremove清理。Ubuntu默认配置会保留最新两个内核版本,执行以下命令自动卸载不再需要的旧包: 

sudo apt autoremove purge 

purge参数:彻底删除配置文件 

这种方法可以清理旧内核及其关联包(如headersmodules),释放约800MB1.5GB空间 

第二种方法是指定删除特定版本。若需精确控制保留的版本数量,可手动指定删除目标,删除指定内核(以5.15.078为例) 

sudo apt purge linuximage5.15.078generic linuxheaders5.15.078 linuxmodulesextra5.15.078generic 

第四步:深度清理残留配置文件 

即使卸载内核,部分残留配置可能依然存在。使用dpkg查询并清理。列出所有内核相关包(包含已卸载但配置残留的) 

dpkg l | grep E 'linux(image|headers|modules)[09]+' 

强制清除残留配置(以5.15.076为例) 

sudo dpkg purge linuximage5.15.076generic linuxheaders5.15.076 

第五步:重建GRUB启动菜单 

删除旧内核后,需更新GRUB以移除无效启动项: 

sudo updategrub 

验证效果: 

grep 'menuentry' /boot/grub/grub.cfg 

第六步:预防性配置(减少未来内核累积) 

调整APT保留策略编辑APT配置文件,限制保留的内核版本数量: 

sudo nano /etc/apt/apt.conf.d/01autoremove 

添加以下内容(例如保留最近2个内核): 

APT::Periodic::AutoremoveKernel "true";  
APT::NeverAutoRemove {  
"^linuximage5\\.15\\.0.generic$";  
"^kfreebsdimage.";  
"^linuxheaders5\\.15\\.0.";  
};  
APT::Autoremove::KernelLimit "2"; 

禁用自动安装推荐包,防止无关内核组件被标记为依赖: 

sudo nano /etc/apt/apt.conf.d/00recommends 

添加: 

APT::InstallRecommends "false"; 
APT::InstallSuggests "false"; 

第七步:高级手动清理(谨慎操作) 

清理/boot分区冗余文件,若/boot分区已满(常见于独立分区场景),直接删除旧内核文件,列出/boot目录下的内核文件 

ls l /boot/vmlinuz 

删除特定版本(以5.15.076为例) 

sudo rm /boot/vmlinuz5.15.076generic 
sudo rm /boot/initrd.img5.15.076generic 
sudo rm /boot/config5.15.076generic 
sudo rm /boot/System.map5.15.076generic 

清除废弃的DKMS模块,某些第三方驱动可能残留旧内核模块: 

sudo dkms status | grep v $(uname r) | awk '{print $1,$2}' | xargs n2 sudo dkms remove m $1 v $2 all 

/uploads/images/202505/22/28358b9f4662470d878e6ebe3d9a2f96.jpg  

风险防控与恢复方案 

备份当前内核。将正在使用的内核文件复制至安全位置: 

sudo cp r /lib/modules/$(uname r) /opt/kernel_backup 

紧急恢复旧内核。若删除后系统无法启动,通过Live CD/USB挂载系统分区并重新安装: 

sudo mount /dev/sda1 /mnt  
sudo chroot /mnt  
apt install linuximage5.15.082generic  
updategrub  
exit  
reboot 

监控磁盘空间。设置报警脚本,当/boot分区使用率超90%时触发通知: 

!/bin/ 
BOOT_USAGE=$(df /boot | awk 'NR==2 {print $5}' | tr d '%') 
if [ $BOOT_USAGE gt 90 ]; then 
echo "警告:/boot 分区使用率已达 ${BOOT_USAGE}%,请立即清理旧内核!" | mail s "磁盘空间告警" admin@example.com 
fi 

典型场景与效果验证 

某开发服务器因/boot分区满载(100%)导致系统更新失败。清理3个旧内核后释放1.2GB空间,恢复更新功能;生产环境保留5个历史内核,误删关键驱动后通过GRUB回退至旧版本,避免业务中断;清理10个旧内核可节省约8GB磁盘空间,GRUB启动菜单加载时间从5秒缩短至1秒。 

以上步骤,可以用户更安全高效的管理Ubuntu内核版本,在释放存储资源的同时来保证系统稳定性。最好每个季度都进行一次例行清理,结合监控工具实现自动化维护。

华纳云 推荐文章
1千元左右就可以买到华纳云50M大陆优化的香港E5服务器,解锁Disney+/Netflix 高并发场景中异步Redis连接池调优步骤 网络恶意攻击防御除了使用高防服务器还有什么招 中国互联网服务商和国际互联网服务商互联机制解析 Windows服务器远程桌面复制粘贴故障的实用指南 盘点GPU服务器的显卡类型和主流型号 Linux游戏服务器从零开始部署完整攻略 搭建一台自己的游戏服务器有哪些好处 公网访问Linux本地Web站点搭建全部过程 PL/SQL连接远程服务器数据库的方法与实践指南
活动
客服咨询
7*24小时技术支持
技术支持
渠道支持