张赐荣——一位视障程序员。
赐荣小站: www.prc.cx

張賜榮

张赐荣的技术博客

博客园 首页 新随笔 联系 订阅 管理
  92 随笔 :: 27 文章 :: 2 评论 :: 77074 阅读

随着linux系统的更新,内核会不断升级以修复漏洞和提升性能。然而,每次升级都会保留旧版本的内核,这些旧内核在大多数情况下已经不再需要,却会占用宝贵的磁盘空间,尤其是在小容量存储设备上,如 VPS 或嵌入式设备。因此,定期清理旧内核是维护系统的一项重要任务。

为什么需要删除旧内核?

  1. 释放磁盘空间
    每个内核及其相关模块可能占用数百 MB 的磁盘空间,保留过多旧内核会浪费存储。

  2. 避免系统混乱
    系统中存在多个内核版本可能导致引导菜单过于冗长,增加管理复杂度。

  3. 维护系统整洁
    定期清理旧内核有助于保持系统文件结构清晰,便于后续的维护和升级。

需要注意的是,当前正在使用的内核必须保留,以确保系统能够正常运行。


手动删除旧内核的步骤

以下是删除旧内核的操作:

1. 确认当前使用的内核

在删除旧内核之前,首先需要确定当前系统正在运行的内核版本。使用以下命令:

uname -r

输出示例:

5.10.0-8-amd64

此命令显示了系统当前正在使用的内核版本。在后续删除过程中,务必保留此版本的内核。

2. 列出所有已安装的内核

执行以下命令列出系统中安装的内核版本:

dpkg -l | grep linux-image

输出例如:

ii  linux-image-5.10.0-7-amd64    5.10.40-1    amd64    Linux 5.10 for 64-bit PCs
ii  linux-image-5.10.0-8-amd64    5.10.46-2    amd64    Linux 5.10 for 64-bit PCs

这里显示了系统中已安装的所有内核包,您需要保留当前正在使用的内核(例如 5.10.0-8-amd64),并删除其他旧版本(例如 5.10.0-7-amd64)。

3. 删除旧内核

使用以下命令删除指定的旧内核:

sudo apt remove --purge linux-image-5.10.0-7-amd64

系统会提示您确认操作,输入 Y 并按回车键继续。

4. 清理系统未使用的包

在删除旧内核后,执行以下命令清理未使用的依赖包:

sudo apt autoremove -y
sudo apt autoclean

这些命令将释放更多的磁盘空间。

5. 更新引导程序配置

删除旧内核后,记得更新 GRUB 引导程序,以移除引导菜单中的旧内核选项:

sudo update-grub

至此,旧内核的手动清理完成。


编写脚本实现自动清理

手动操作虽然可行,但随着系统的使用,定期清理旧内核可能会变得繁琐。我们可以编写一个 Bash 脚本,自动完成清理工作。

以下是完整的脚本代码:

#!/bin/bash

# 获取当前正在使用的内核版本
current_kernel=$(uname -r)
echo "当前正在使用的内核版本: $current_kernel"

# 列出所有已安装的内核
installed_kernels=$(dpkg -l | grep linux-image | awk '{print $2}')
echo "已安装的内核版本:"
echo "$installed_kernels"

# 初始化一个变量来存储将被删除的内核版本
kernels_to_remove=""

# 遍历所有已安装的内核,排除当前内核
for kernel in $installed_kernels; do
    if [[ $kernel == *"$current_kernel"* ]]; then
        echo "保留当前使用的内核: $kernel"
    else
        echo "将删除旧内核: $kernel"
        kernels_to_remove="$kernels_to_remove $kernel"
    fi
done

# 检查是否有旧内核需要删除
if [[ -n $kernels_to_remove ]]; then
    echo "开始删除旧内核..."
    sudo apt remove --purge -y $kernels_to_remove
    echo "旧内核删除完成。"
else
    echo "没有旧内核需要删除。"
fi

# 清理系统的未使用包
echo "清理系统中未使用的包..."
sudo apt autoremove -y
sudo apt autoclean

# 更新引导程序配置
echo "更新引导程序配置..."
sudo update-grub

echo "操作完成!系统中仅保留了当前正在使用的内核。"

脚本功能

  1. 自动检测当前正在使用的内核版本。
  2. 列出所有已安装的内核版本。
  3. 排除当前使用的内核,删除其余内核。
  4. 清理未使用的依赖包和缓存。
  5. 更新引导程序配置。

使用步骤

  1. 创建脚本文件
    打开终端并创建一个新文件:

    nano remove_old_kernels.sh
    

    将上述代码粘贴到文件中,保存并退出(按 Ctrl+O 保存,Ctrl+X 退出)。

  2. 赋予脚本执行权限

    chmod +x remove_old_kernels.sh
    
  3. 运行脚本

    sudo ./remove_old_kernels.sh
    

脚本将自动完成删除旧内核的所有操作。

posted on   张赐荣  阅读(182)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!

感谢访问张赐荣的技术分享博客!
博客地址:https://cnblogs.com/netlog/
知乎主页:https://www.zhihu.com/people/tzujung-chang
个人网站:https://prc.cx/

点击右上角即可分享
微信分享提示