随着linux系统的更新,内核会不断升级以修复漏洞和提升性能。然而,每次升级都会保留旧版本的内核,这些旧内核在大多数情况下已经不再需要,却会占用宝贵的磁盘空间,尤其是在小容量存储设备上,如 VPS 或嵌入式设备。因此,定期清理旧内核是维护系统的一项重要任务。
为什么需要删除旧内核?
- 
释放磁盘空间 
 每个内核及其相关模块可能占用数百 MB 的磁盘空间,保留过多旧内核会浪费存储。
- 
避免系统混乱 
 系统中存在多个内核版本可能导致引导菜单过于冗长,增加管理复杂度。
- 
维护系统整洁 
 定期清理旧内核有助于保持系统文件结构清晰,便于后续的维护和升级。
需要注意的是,当前正在使用的内核必须保留,以确保系统能够正常运行。
手动删除旧内核的步骤
以下是删除旧内核的操作:
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 "操作完成!系统中仅保留了当前正在使用的内核。"
脚本功能
- 自动检测当前正在使用的内核版本。
- 列出所有已安装的内核版本。
- 排除当前使用的内核,删除其余内核。
- 清理未使用的依赖包和缓存。
- 更新引导程序配置。
使用步骤
- 
创建脚本文件 
 打开终端并创建一个新文件:nano remove_old_kernels.sh将上述代码粘贴到文件中,保存并退出(按 Ctrl+O保存,Ctrl+X退出)。
- 
赋予脚本执行权限 chmod +x remove_old_kernels.sh
- 
运行脚本 sudo ./remove_old_kernels.sh
脚本将自动完成删除旧内核的所有操作。
知乎: @张赐荣
赐荣博客: www.prc.cx
 
                    
                 
                
 
 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号