我想将我的 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
?这样应该可以释放足够的磁盘空间用于发行版升级…
非常感谢您的帮助!
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
如果成功的话。
– -
我不确定内核包之间是否存在区别
remove
,purge
因为它实际上没有任何需要清除的配置文件(唯一的“配置”是一个只读构建工件)。
– -
区别在于,没有
purge
Linux 映像会保留在系统中,并可以通过 列出dpkg -l
,带有一个rc
标志(已删除,配置文件保留)。清除后,它会删除配置文件并永久删除条目。
– -
我手动删除然后清除
4.19
了5.15
,但是仍然有一些4.19
2018 年的文件(您可以在我的 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 自动生成的部分。)
–
|
|