温馨提示×

Ubuntu如何清理旧的内核版本

小樊
77
2025-09-17 15:00:23
栏目: 智能运维

Ubuntu清理旧内核版本的步骤与注意事项

一、清理前的准备工作

  1. 确认当前正在使用的内核版本
    运行以下命令,获取系统当前加载的内核版本(此版本绝对不能删除):

    uname -r
    

    示例输出:5.15.0-78-generic

  2. 查看已安装的所有内核包
    使用以下命令列出系统中已安装的内核相关包(包括镜像、头文件、模块):

    dpkg --list | grep -E 'linux-image|linux-headers|linux-modules' | awk '{print $2}'
    

    输出示例:

    linux-image-5.15.0-78-generic
    linux-image-5.15.0-76-generic
    linux-headers-5.15.0-78-generic
    linux-headers-5.15.0-76-generic
    

二、清理旧内核的具体方法

1. 自动清理(推荐,最安全)

Ubuntu的apt工具提供了自动识别并删除未使用旧内核的功能,无需手动指定版本:

sudo apt update && sudo apt autoremove --purge

该命令会自动保留最新的1-2个内核(系统默认策略),删除其余旧内核及关联的配置文件、依赖包。

2. 手动指定删除(精确控制)

若需手动选择删除的旧内核,可按以下步骤操作:

  • 删除单个内核包:替换以下命令中的<版本号>为要删除的内核版本(如5.15.0-76-generic),注意要连带删除对应的头文件和模块:
    sudo apt purge linux-image-<版本号>-generic linux-headers-<版本号>* linux-modules-<版本号>*
    
    示例(删除5.15.0-76-generic内核):
    sudo apt purge linux-image-5.15.0-76-generic linux-headers-5.15.0-76* linux-modules-5.15.0-76*
    
  • 批量删除所有旧内核:创建一个脚本文件(如kernel_clean.sh),内容如下:
    #!/bin/bash
    current_kernel=$(uname -r)
    sudo apt purge $(dpkg --list | grep -E 'linux-image|linux-headers|linux-modules' | awk '{print $2}' | grep -v "$current_kernel" | grep -v "linux-image-generic" | grep -v "linux-headers-generic")
    sudo apt autoremove --purge -y
    
    赋予执行权限并运行:
    chmod +x kernel_clean.sh
    sudo ./kernel_clean.sh
    

3. 使用脚本工具(Ubuntu 16.04+)

Ubuntu提供了purge-old-kernels脚本,可快速保留指定数量的旧内核(默认保留2个),删除其余:

sudo apt install byobu  # 安装byobu工具(包含purge-old-kernels脚本)
sudo purge-old-kernels --keep 2  # 保留2个旧内核,可根据需求调整数字

三、清理后的收尾工作

  1. 更新GRUB引导配置
    删除旧内核后,需更新GRUB以确保系统能正常引导至保留的内核:

    sudo update-grub
    
  2. 清理残留配置文件
    若存在孤立的配置文件(如已删除内核的配置残留),可使用以下命令彻底清理:

    sudo dpkg --purge $(dpkg -l | awk '/^rc/ {print $2}')
    
  3. 验证清理结果

    • 检查剩余内核:
      dpkg --list | grep -E 'linux-image|linux-headers'
      
    • 查看/boot分区空间(确认空间是否释放):
      df -h /boot
      

四、关键注意事项

  • 绝对禁止删除当前内核:若误删当前内核,系统将无法启动,需通过Live CD或恢复模式修复。
  • 保留至少1个备用内核:建议保留1-2个旧内核,以防新内核出现兼容性问题(如驱动不支持)。
  • 提前备份重要数据:清理内核前,建议使用Timeshift等工具创建系统快照,以便出现问题时快速恢复。
  • 处理/boot分区满的情况:若/boot分区空间不足(使用率超过90%),需先清理旧内核才能正常更新系统。

0