搬瓦工 Ubuntu 16.04 LTS 系统 /boot 分区被占满后删除多余内核的方法

搬瓦工的 VPS 在安装 BBR 之后(BBR 安装教程参考《搬瓦工 KVM 安装 BBR 教程》,或者《搬瓦工 OpenVZ 安装 BBR 教程》),由于需要更新内核,可能会出现 /boot 分区被占满的问题,此时我们查看一下可用容量会发现 /boot 分区已经满了:

root@ubuntu:~# df -h
Filesystem      Size  Used Avail Use% Mounted on
udev            476M     0  476M   0% /dev
tmpfs           101M   19M   82M  19% /run
/dev/sda2        20G   14G  4.6G  75% /
tmpfs           503M     0  503M   0% /dev/shm
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs           503M     0  503M   0% /sys/fs/cgroup
/dev/sda1       361M  360M     0 100% /boot
tmpfs           101M     0  101M   0% /run/user/0

这时候虽然也没什么影响,但是有时候也会出现因为 /boot 分区被占满导致的一些问题,所以我们可以清理一下不需要的内核。

注意,操作前请务必对 VPS 进行备份!可以参考这篇:搬瓦工 VPS 创建快照和恢复快照的办法

下面开始删除多余的内核。

更新:也可以参考《搬瓦工运维教程:Ubuntu 卸载并删除多余的旧版本内核以解决 /boot 分区占满问题》。

删除多余内核

首先通过 dpkg --get-selections | grep linux 命令列出目前所有的内核版本:

root@ubuntu:~# dpkg --get-selections | grep linux
console-setup-linux                             install
libselinux1:amd64                               install
linux-base                                      install
linux-firmware                                  install
linux-generic                                   install
linux-headers-4.4.0-103                         install
linux-headers-4.4.0-103-generic                 install
linux-headers-4.4.0-104                         install
linux-headers-4.4.0-104-generic                 install
linux-headers-4.4.0-108                         install
linux-headers-4.4.0-108-generic                 install
linux-headers-4.4.0-109                         install
linux-headers-4.4.0-109-generic                 install
linux-headers-4.4.0-112                         install
linux-headers-4.4.0-112-generic                 install
linux-headers-4.4.0-116                         install
linux-headers-4.4.0-116-generic                 install
linux-headers-4.4.0-62                          install
linux-headers-4.4.0-62-generic                  install
linux-headers-generic                           install
linux-image-4.14.5-041405-generic               install
linux-image-4.4.0-103-generic                   install
linux-image-4.4.0-104-generic                   install
linux-image-4.4.0-108-generic                   install
linux-image-4.4.0-109-generic                   install
linux-image-4.4.0-112-generic                   install
linux-image-4.4.0-62-generic                    install
linux-image-extra-4.4.0-103-generic             install
linux-image-extra-4.4.0-104-generic             install
linux-image-extra-4.4.0-108-generic             install
linux-image-extra-4.4.0-109-generic             install
linux-image-extra-4.4.0-112-generic             install
linux-image-extra-4.4.0-116-generic             install
linux-image-extra-4.4.0-62-generic              install
linux-image-generic                             install
linux-libc-dev:amd64                            install
util-linux                                      install

查看当前 Ubuntu 系统使用的内核版本:

root@ubuntu:~# uname -a
Linux ubuntu 4.14.5-041405-generic #201712101332 SMP Sun Dec 10 13:33:10 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux

看来目前用了 4.14 版本的内核,那么 4.4 的所有内核都可以删了。请大家根据自己的实际情况删除多余的内核,如果你使用的是 4.4 其中一个版本的内核,那么你只能把下面的命令打完整,而不能使用 * 匹配符。

删除多余内核:

sudo apt purge linux-headers-4.4.0-* linux-images.4.4.0-*

会问你 Y/n,输入 Y 或者直接回车。

更新 grub:

sudo update-grub

好了,至此,已经成功删除了多余的内核。

常见错误

在删除多余内核的时候可能会遇到下面的错误提示:

The following packages have unmet dependencies:
 linux-headers-generic : Depends: linux-headers-4.4.0-116-generic but it is not going to be installed
 linux-image-extra-4.4.0-103-generic : Depends: linux-image-4.4.0-103-generic but it is not going to be installed
 linux-image-extra-4.4.0-104-generic : Depends: linux-image-4.4.0-104-generic but it is not going to be installed
 linux-image-extra-4.4.0-108-generic : Depends: linux-image-4.4.0-108-generic but it is not going to be installed
 linux-image-extra-4.4.0-109-generic : Depends: linux-image-4.4.0-109-generic but it is not going to be installed
 linux-image-extra-4.4.0-112-generic : Depends: linux-image-4.4.0-112-generic but it is not going to be installed
 linux-image-extra-4.4.0-116-generic : Depends: linux-image-4.4.0-116-generic but it is not going to be installed
 linux-image-extra-4.4.0-62-generic : Depends: linux-image-4.4.0-62-generic but it is not going to be installed
 linux-image-generic : Depends: linux-image-4.4.0-116-generic but it is not going to be installed
                       Recommends: thermald but it is not going to be installed
E: Unmet dependencies. Try 'apt-get -f install' with no packages (or specify a solution).

这个主要是因为之前 /boot 分区就满了,导致之前的内核更新就没完成,所以我们需要先把之前的坑填上。

我们进入 /boot 这个目录,查看目前所有的内核文件:

root@ubuntu:~# cd /boot
root@ubuntu:/boot# ls
abi-4.14.5-041405-generic     config-4.4.0-108-generic          initrd.img-4.4.0-112-generic      vmlinuz-4.14.5-041405-generic
abi-4.4.0-103-generic         config-4.4.0-109-generic          initrd.img-4.4.0-62-generic       vmlinuz-4.4.0-103-generic
abi-4.4.0-104-generic         config-4.4.0-112-generic          lost+found                        vmlinuz-4.4.0-104-generic
abi-4.4.0-108-generic         config-4.4.0-62-generic           System.map-4.14.5-041405-generic  vmlinuz-4.4.0-108-generic
abi-4.4.0-109-generic         grub                              System.map-4.4.0-103-generic      vmlinuz-4.4.0-109-generic
abi-4.4.0-112-generic         initrd.img-4.14.5-041405-generic  System.map-4.4.0-104-generic      vmlinuz-4.4.0-112-generic
abi-4.4.0-62-generic          initrd.img-4.4.0-103-generic      System.map-4.4.0-108-generic      vmlinuz-4.4.0-62-generic
config-4.14.5-041405-generic  initrd.img-4.4.0-104-generic      System.map-4.4.0-109-generic
config-4.4.0-103-generic      initrd.img-4.4.0-108-generic      System.map-4.4.0-112-generic
config-4.4.0-104-generic      initrd.img-4.4.0-109-generic      System.map-4.4.0-62-generic

把 4.4.0 版本的所有的 config-4.4.0-*,vmlinuz-4.4.0-*,initrd.img-4.4.0-*,abi-4.4.0-*,System.map-4.4.0-* 都删掉:

rm config-4.4.0-* vmlinuz-4.4.0-* initrd.img-4.4.0-* abi-4.4.0-* System.map-4.4.0-*

然后输入下面命令进行修复:

apt -f install

等待一会儿完成之后(可能还是会出错,但是我们不用管),再次执行下面的命令:

sudo apt purge linux-headers-4.4.0-* linux-images.4.4.0-*

这时候就已经可以成功执行,开始删除内核了。

小结

再次查看已安装内核,可以看到只剩一个 4.14 了:

root@ubuntu:/boot# dpkg --get-selections | grep linux
console-setup-linux                             install
libselinux1:amd64                               install
linux-base                                      install
linux-firmware                                  install
linux-image-4.14.5-041405-generic               install
linux-libc-dev:amd64                            install
util-linux                                      install

查看可用的 /boot 分区大小:

root@ubuntu:/boot# df -h
Filesystem      Size  Used Avail Use% Mounted on
udev            476M     0  476M   0% /dev
tmpfs           101M   19M   82M  19% /run
/dev/sda2        20G   12G  6.9G  63% /
tmpfs           503M     0  503M   0% /dev/shm
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs           503M     0  503M   0% /sys/fs/cgroup
/dev/sda1       361M   70M  273M  21% /boot
tmpfs           101M     0  101M   0% /run/user/0

还剩 273M 可用,只用了 21% 的空间,舒服了

目前搬瓦工香港的比较便宜的三个方案都没货了,GIA 的便宜方案也没货,有需要的可以关注《搬瓦工补货通知》。如果新手想买个便宜的 VPS 用来折腾,也可以直接买下面几个,更多的可以参考《搬瓦工性价比方案推荐》。

购买时记得使用优惠码:BWHCGLUKKB,能省一点是一点。

CN2 常规版 10 GB(年付29.99方案)
  • CPU:1 核
  • 内存:512 MB
  • 硬盘:10 GB SSD
  • 流量:500 GB
  • 带宽:1 Gbps
  • 机房:KVM 8 个机房
  • 迁移:可迁移机房,流量不变
  • 价格:29.99 美元/年
CN2 常规版 20 GB(月付5.99方案)
  • CPU:1 核
  • 内存:1024 MB
  • 硬盘:20 GB SSD
  • 流量:1000 GB / 月
  • 带宽:1 Gbps
  • 机房:KVM 8 个机房
  • 迁移:可迁移机房,流量不变
  • 价格:29.99 美元/半年,49.99 美元/年
KVM 常规版 10 GB(年付19.99方案)
  • CPU:1 核
  • 内存:512 MB
  • 硬盘:10 GB SSD
  • 流量:500 GB
  • 带宽:1 Gbps
  • 机房:KVM 8 个机房
  • 迁移:可迁移,到 CN2 后流量为 1/3
  • 价格:19.99 美元/年
KVM 常规版 20 GB(月付4.99方案)
  • CPU:2 核
  • 内存:1024 MB
  • 硬盘:20 GB SSD
  • 流量:1000 GB
  • 带宽:1 Gbps
  • 机房:KVM 8 个机房
  • 迁移:可迁移,到 CN2 后流量为 1/3
  • 价格:25.99 美元/半年,49.99 美元/年

未经允许不得转载:Bandwagonhost中文网 » 搬瓦工 Ubuntu 16.04 LTS 系统 /boot 分区被占满后删除多余内核的方法