Liunx在使用时间长了之后,伴随着不断地内核更新,Boot分区的容量会越来越少,当Boot分区的可用容量少于更新所需要的容量时,就会更新失败。我们可以使用以下方法来解决:
逻辑卷管理器是一个好东西,Linux的分区管理在逻辑卷的帮助下能够非常的灵活方便。但是在我个人看来,使用逻辑卷来增加Boot分区的容量在处理这个问题上并不是一个非常好的办法,增加容量只是向后推迟了你遇到问题的时间而已,并没有从根本上解决空间资源所面临的问题。而且,使用逻辑卷的前提是你在安装操作系统的时候就使用了逻辑卷来创建Boot分区,如果你在安装操作系统的时候没有使用逻辑卷,那么后续使用逻辑卷来管理Boot将会是很困难的。
我们从问题本身入手:Boot分区容量不足。容量不足的原因是长期的更新积累了很多旧的内核。那么我们只要把旧的不再使用的内核清理掉不就可以解决所面临的问题了吗?我是推荐这一方法的,也一直在用这个方法。
首先,我们可以使用如下命令来查看系统当前各分区的容量:
root@linux:~# df -h
文件系统 容量 已用 可用 已用% 挂载点
udev 1.9G 0 1.9G 0% /dev
tmpfs 392M 12M 381M 3% /run
/dev/sda1 32G 27G 4.0G 87% /
tmpfs 2.0G 0 2.0G 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup
/dev/sda4 20G 3.0G 16G 16% /home
/dev/sda3 269M 196M 56M 78% /boot
tmpfs 392M 12K 392M 1% /run/user/131
tmpfs 392M 24K 392M 1% /run/user/0
我们可以从命令返回的结果得出Boot分区的当前使用量以及剩余容量,然后根据剩余容量的大小来和即将更新的内容大小做一个比较,如果小于即将更新的内容,那么就说明我们需要释放一下Boot分区了。
接下来使用如下命令来查看当前系统在使用的内核版本以及安装了哪些内核文件:
root@linux:~# uname -r
5.2.0-kali2-amd64
root@linux:~# dpkg --get-selections | grep linux
binutils-x86-64-linux-gnu install
console-setup-linux install
enum4linux install
firmware-linux install
firmware-linux-free install
firmware-linux-nonfree install
kali-linux install
kali-linux-core install
kali-linux-default install
kali-linux-full install
kali-linux-large install
libselinux1:amd64 install
libselinux1:i386 install
linux-base install
linux-image-4.19.0-kali4-amd64 install
linux-image-4.19.0-kali5-amd64 install
linux-image-5.2.0-kali2-amd64 install
linux-image-amd64 install
linux-libc-dev:amd64 install
util-linux install
可以看出我们有一个版本比较旧的内核版本4.19.0-kali4-amd64,我们可以留着4.19.0-kali5-amd64,以防新的内核版本安装以后系统出现不稳定的情况。接下来我们使用如下命令来清理掉不需要的内核版本:
root@linux:~# dpkg -P linux-image-4.19.0-kali4-amd64
(正在读取数据库 ... 系统当前共安装有 421958 个文件和目录。)
正在卸载 linux-image-4.19.0-kali4-amd64 (4.19.28-2kali1) ...
/etc/kernel/postrm.d/initramfs-tools:
update-initramfs: Deleting /boot/initrd.img-4.19.0-kali4-amd64
/etc/kernel/postrm.d/zz-update-grub:
Generating grub configuration file ...
Found background image: /usr/share/images/desktop-base/desktop-grub.png
Found linux image: /boot/vmlinuz-5.2.0-kali2-amd64
Found initrd image: /boot/initrd.img-5.2.0-kali2-amd64
Found linux image: /boot/vmlinuz-4.19.0-kali5-amd64
Found initrd image: /boot/initrd.img-4.19.0-kali5-amd64
done
正在清除 linux-image-4.19.0-kali4-amd64 (4.19.28-2kali1) 的配置文件 ...
root@linux:~#
清理完成。可以使用上面的命令再次查看一下安装的内核版本:
root@linux:~# dpkg --get-selections | grep linux
binutils-x86-64-linux-gnu install
console-setup-linux install
enum4linux install
firmware-linux install
firmware-linux-free install
firmware-linux-nonfree install
kali-linux install
kali-linux-core install
kali-linux-default install
kali-linux-full install
kali-linux-large install
libselinux1:amd64 install
libselinux1:i386 install
linux-base install
linux-image-4.19.0-kali5-amd64 install
linux-image-5.2.0-kali2-amd64 install
linux-image-amd64 install
linux-libc-dev:amd64 install
util-linux install
root@linux:~#
可以发现,4.19.0-kali4-amd64这个版本的内核已经没有了,我们使用命令来查看一下清理完成后的Boot分区的容量:
root@linux:~# df -h
文件系统 容量 已用 可用 已用% 挂载点
udev 1.9G 0 1.9G 0% /dev
tmpfs 392M 12M 381M 3% /run
/dev/sda1 32G 26G 4.3G 87% /
tmpfs 2.0G 0 2.0G 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup
/dev/sda4 20G 3.0G 16G 16% /home
/dev/sda3 269M 150M 102M 60% /boot
tmpfs 392M 12K 392M 1% /run/user/131
tmpfs 392M 24K 392M 1% /run/user/0
root@linux:~#
我们成功的为Boot分区“瘦身”了46MB,然后我们就可以愉快的更新了:)