我想将我的 Ubuntu 从 22.04 升级到 24.04,但是分区上缺少另外 10MB /boot
。
我想检查我的系统中还安装了哪些 Linux 内核,因为sudo apt autoremove
没有什么可以删除的了。
这就是我的困惑:检查dpkg -l | grep linux-image
返回这些内核:
ii linux-image-5.15.0-119-generic 5.15.0-119.129 amd64 Signed kernel image generic
ii linux-image-6.5.0-44-generic 6.5.0-44.44~22.04.1 amd64 Signed kernel image generic
ii linux-image-6.8.0-40-generic 6.8.0-40.40~22.04.3 amd64 Signed kernel image generic
ii linux-image-generic 5.15.0.119.119 amd64 Generic Linux kernel image
ii linux-image-generic-hwe-22.04 6.8.0-40.40~22.04.3 amd64 Generic Linux kernel image
ii linux-image-unsigned-4.19.0-041900-generic 4.19.0-041900.201810221809 amd64 Linux kernel image for version 4.19.0 on 64 bit x86 SMP
很好,看来我可以放弃5.15
,4.19
至少...检查uname -r
我看到6.8.0-40-generic
应该是当前的。我预计之前的内核是6.5.0-44-generic
。然而,检查ls -l /boot
我看到这个惊喜:
total 522700
-rw-r--r-- 1 root root 1508678 Okt 23 2018 abi-4.19.0-041900-generic
-rw-r--r-- 1 root root 219610 Okt 23 2018 config-4.19.0-041900-generic
-rw-r--r-- 1 root root 262072 Aug 2 16:15 config-5.15.0-119-generic
-rw-r--r-- 1 root root 280697 Jun 18 15:18 config-6.5.0-44-generic
-rw-r--r-- 1 root root 287007 Jul 30 16:33 config-6.8.0-40-generic
drwxr-xr-x 3 root root 16384 Jan 1 1970 efi
drwxr-xr-x 5 root root 4096 Sep 9 16:16 grub
lrwxrwxrwx 1 root root 29 Aug 21 12:21 initrd.img -> initrd.img-5.15.0-119-generic
-rw-r--r-- 1 root root 76512349 Jun 21 10:34 initrd.img-4.19.0-041900-generic
-rw-r--r-- 1 root root 114952176 Aug 21 12:22 initrd.img-5.15.0-119-generic
-rw-r--r-- 1 root root 129903766 Aug 19 11:48 initrd.img-6.5.0-44-generic
-rw-r--r-- 1 root root 133025202 Aug 27 10:54 initrd.img-6.8.0-40-generic
lrwxrwxrwx 1 root root 27 Aug 21 12:21 initrd.img.old -> initrd.img-6.8.0-40-generic
drwx------ 2 root root 16384 Sep 28 2018 lost+found
-rw-r--r-- 1 root root 182800 Feb 6 2022 memtest86+.bin
-rw-r--r-- 1 root root 184476 Feb 6 2022 memtest86+.elf
-rw-r--r-- 1 root root 184980 Feb 6 2022 memtest86+_multiboot.bin
-rw-r--r-- 1 root root 17 Okt 23 2018 retpoline-4.19.0-041900-generic
-rw------- 1 root root 4324765 Okt 23 2018 System.map-4.19.0-041900-generic
-rw------- 1 root root 6289146 Aug 2 16:15 System.map-5.15.0-119-generic
-rw------- 1 root root 8269177 Jun 18 15:18 System.map-6.5.0-44-generic
-rw------- 1 root root 8654773 Jul 30 16:33 System.map-6.8.0-40-generic
lrwxrwxrwx 1 root root 26 Aug 21 12:21 vmlinuz -> vmlinuz-5.15.0-119-generic
-rw------- 1 root root 8603504 Okt 23 2018 vmlinuz-4.19.0-041900-generic
-rw------- 1 root root 11704712 Aug 2 16:43 vmlinuz-5.15.0-119-generic
-rw------- 1 root root 14263016 Jun 18 15:19 vmlinuz-6.5.0-44-generic
-rw------- 1 root root 14928264 Jul 30 17:17 vmlinuz-6.8.0-40-generic
lrwxrwxrwx 1 root root 24 Aug 21 12:21 vmlinuz.old -> vmlinuz-6.8.0-40-generic
基于此,vvmlinuz
链接到5.15
并且6.8.0
链接到vmlinuz.old
。这怎么可能呢?
哪些信息是正确的?这是在全新重启后。
purge
如果我现在删除( )至少所有内核文件是否安全4.19
?这样应该可以释放足够的磁盘空间用于发行版升级...
非常感谢您的帮助!
如果您询问当前正在运行哪个内核,那么
uname -r
总是正确的,因为它要求正在运行的内核报告其自己的版本。/boot 中的文件名没有太多意义,因为您是通过 GRUB 启动的,它有一个(自动生成的)启动菜单,可能提供多个内核来启动,并且按版本而不是文件名对它们进行排序。
事实上,GRUB根本
/boot/vmlinuz
不使用符号链接——它的菜单生成器直接查找文件,因此它能够为所有文件提供菜单项,而不仅仅是最后两个。这意味着一旦安装了 6.8.x 内核,grub-mkconfig 就会自动选择“vmlinuz-6.8.0-40-generic”作为可用的“最新”内核。/boot/vmlinuz-*-generic
/boot/grub/grub.cfg
您可以在或通过手动运行 grub-mkconfig 并阅读其输出来查看所有这些内容。(除此之外,许多事情都是可能的,因为内核在启动过程中实际上并没有查看/boot 内部,因为 vmlinuz 和 initrd 都由引导加载程序完全加载到内存中。因此,可以从 /boot 以外的其他地方启动内核 - 或者最终出现引导加载程序和 /etc/fstab 对 /boot 是什么有不同的看法的情况,因此“ls /boot”找到内核 A,但 GRUB 找到内核 B。后者是一些 DIY 类发行版的常见混淆...)
假设当前内核运行正常,您可以安全地删除所有其他不需要的内核(如果 apt 提供删除功能,则甚至包括 6.5.x)。
在紧急情况下,可以手动删除或压缩 System.map 文件以释放几 MB 的空间(启动过程不需要它们,并且任何需要它们的软件 - 本身很少见 - 都可以使用 /proc/kallsyms 来存储当前正在运行的内核的符号)。