文档首页> Linux命令> Ubuntu删除多余内核教程

Ubuntu删除多余内核教程

发布时间:2025-05-16 00:03       

Ubuntu 删除多余内核教程 🧹

Ubuntu 在系统更新时会自动安装新内核,但旧内核不会自动删除,导致 /boot 分区空间不足 或 启动菜单杂乱。本教程详细介绍如何 安全删除旧内核,释放磁盘空间并优化系统。


📌 一、为什么要删除旧内核?

  1. 节省磁盘空间:每个内核占用约 200MB~500MB,长期积累会占满 /boot 分区。
  2. 减少启动项:避免 GRUB 菜单出现多个无用内核选项。
  3. 降低维护负担:旧内核可能存在安全风险,建议仅保留 1~2 个备用内核。

📌 二、查看当前已安装的内核

方法1:使用 dpkg 列出所有内核

dpkg --list | grep linux-image
​

输出示例:

ii  linux-image-5.15.0-76-generic  5.15.0-76.83  amd64  Signed kernel image generic
ii  linux-image-5.15.0-78-generic  5.15.0-78.85  amd64  Signed kernel image generic
rc  linux-image-5.15.0-60-generic  5.15.0-60.66  amd64  Signed kernel image generic
​
  • ii 表示已安装
  • rc 表示已卸载(但可能有残留配置)

方法2:查看当前正在使用的内核

uname -r
​

示例输出:

5.15.0-78-generic
​

⚠️ 注意:不要删除正在使用的内核,否则可能导致系统无法启动!


📌 三、删除旧内核(3种方法)

方法1:手动删除(推荐)

  1. 列出所有可删除的旧内核(排除当前使用的):
    sudo apt purge $(dpkg --list | grep linux-image | awk '{print $2}' | grep -v $(uname -r))
    ​
  2. 同时删除关联的 linux-headers(可选):
    sudo apt purge $(dpkg --list | grep linux-headers | awk '{print $2}' | grep -v $(uname -r | sed 's/-generic//'))
    ​
  3. 清理残留配置:
    sudo apt autoremove --purge
    ​

方法2:使用 apt autoremove(自动清理)

sudo apt autoremove --purge
​

适用场景:

  • 适用于 Ubuntu 自动标记为“可卸载”的旧内核。
  • 不会删除手动安装的内核,可能仍有残留。

方法3:使用 purge-old-kernels(Ubuntu 官方推荐)

  1. 安装 byobu(含该工具):
    sudo apt install byobu
    ​
  2. 运行清理(保留最近 2 个内核):
    sudo purge-old-kernels --keep 2
    ​

优点:

  • 自动识别并保留最新内核,避免误删。

📌 四、更新 GRUB 启动菜单

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

sudo update-grub
​

验证是否生效:

sudo grep "menuentry" /boot/grub/grub.cfg
​

输出应仅显示保留的内核。


📌 五、检查 /boot 分区空间

df -h /boot
​

示例输出:

Filesystem  Size  Used Avail Use% Mounted on
/dev/sda1   1.9G  1.2G  600M  67% /boot
​

如果 Use% 接近 100%,说明仍需清理。


📌 六、常见问题 ❓

Q1:误删正在使用的内核怎么办?

  • 解决方法:
    1. 重启进入 GRUB 高级选项,选择另一个内核启动。
    2. 重新安装内核:
      sudo apt install linux-image-generic
      ​

Q2:/boot 已满,无法安装新内核?

  • 临时解决方案:
    sudo apt clean  # 清理软件包缓存sudo apt autoremove --purge  # 删除旧内核
    ​

Q3:如何禁止自动安装新内核?

  • 方法:
    sudo apt-mark hold linux-image-generic linux-headers-generic
    ​