我想将我的 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.154.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?这样应该可以释放足够的磁盘空间用于发行版升级…

非常感谢您的帮助!

0


最佳答案
1

哪些信息是正确的?这是在全新重启后。

如果您询问当前正在运行哪个内核,那么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 类发行版的常见混淆…)

如果我现在删除(清除)至少所有 4.19 版的内核文件,是否安全?这样应该可以释放足够的磁盘空间用于发行版升级……

假设当前内核运行正常,您可以安全地删除所有其他不需要的内核(如果 apt 提供删除功能,则甚至包括 6.5.x)。

在紧急情况下,可以手动删除或压缩 System.map 文件以释放几 MB 的空间(启动过程不需要它们,并且任何需要它们的软件 – 本身很少见 – 都可以使用 /proc/kallsyms 来存储当前正在运行的内核的符号)。

6

  • 好的,检查 grub 菜单配置,我可以看到所有已安装的内核都有它们的菜单项(尽管只有给出的内核uname -r提供了默认、高级和恢复选项。其余版本仅提供基本和恢复选项。谢谢。我将尝试首先安全地删除两个较旧的版本(apt remove),然后apt purge如果成功的话。


    – 

  • 我不确定内核包之间是否存在区别removepurge因为它实际上没有任何需要清除的配置文件(唯一的“配置”是一个只读构建工件)。


    – 

  • 区别在于,没有purgeLinux 映像会保留在系统中,并可以通过 列出dpkg -l,带有一个rc标志(已删除,配置文件保留)。清除后,它会删除配置文件并永久删除条目。


    – 

  • 我手动删除然后清除4.195.15,但是仍然有一些4.192018 年的文件(您可以在我的 OP 列表中看到它们)。手动删除所有这些文件(除了文件System.map)安全吗?


    – 

  • 您可以删除所有不再具有相应 vmlinuz 映像的部分。initrd 由 update-initrd 从 /lib/modules/$version 本地生成,如果没有匹配的内核,它将不执行任何操作,System.map 通常基本无用,’config’ 文件仅用于“Debian 是否启用选项 foo” grepping,并且我无法想象除非该内核实际正在使用,否则 ‘abi’ 或 ‘retpoline’ 文件会很有用。(我查看了 /var/lib/dpkg/info,似乎purge删除了 /lib/modules/$version 中的某些剩余部分,主要是 depmod 自动生成的部分。)


    –