Linux 系统下删除无用的旧内核

问题产生

Linux 系统在内核更新时大多只会下载安装新的内核,并不会自动删除旧内核。这就导致随着时间的推移,无用的旧内核占用硬盘空间可能会越来越大。

对于个人电脑或独服来说,这么点占用可能算不得什么,而对于那些乞丐版配置的 VPS,总共就这么几 G 的硬盘空间让旧内核占用掉这么多无疑是十分浪费的,所以就需要我们去手动删除这些旧内核了。

下面介绍一下 Linux 系统(主要是 RedHat 和 Debian 系的系统)下删除旧内核的具体操作流程。

警告:删除内核属高危行为,如非特别需要,请勿随意操作!!!

查看当前内核

我们需要删除的是无用的旧内核,所以在删除操作前需要确定自己当前正在使用的系统内核版本,输入:

1
uname -r

这会返回形如 4.15.0-46-generic 这样的的一串字符串,就是你当前系统使用的内核版本。

查看已安装的内核

对于 RedHat/CentOS 系的系统,使用:

1
rpm -qa | grep kernel

这会输出系统中安装的所有的内核包,形式如下:

1
2
3
4
5
kernel-3.10.0-327.el7.x86_64
kernel-headers-3.10.0-514.6.1.el7.x86_64
kernel-tools-libs-3.10.0-327.el7.x86_64
kernel-3.10.0-514.16.1.el7.x86_64
kernel-tools-3.10.0-327.el7.x86_64

对于 Debian/Ubuntu 系的系统,使用:

1
dpkg --list | grep linux-image

输出形式如下(这是我自用系统的输出,没有什么旧内核):

1
2
ii  linux-image-4.15.0-46-generic              4.15.0-46.49                                 amd64        Signed kernel image generic
ii linux-image-generic 4.15.0.46.48 amd64 Generic Linux kernel image

删除旧内核

上面输出的所有已安装内核中版本号比当前使用版本低的都可以删除(但是一般建议保留一个最近版本的旧内核作为备用选项,以防止当前内核出现问题导致无法启动系统的情况)

对于确定要删除的内核,使用系统的包管理器即可卸载删除:

1
2
3
4
5
# RedHat/CentOS 系的系统使用
yum remove kernel-***

# Debian/Ubuntu 系的系统使用
apt purge linux-image-***

非 root 用户操作时需加上 sudo。部分系统在此时可能会弹出警告,询问你是否终止该过程,请看清楚具体内容后再做选择。