Ubuntu 22.04.4 LTS /boot分区空间不足导致系统更新失败的解决求助
你好,我完全理解你现在的困扰——只有500MB的/boot分区,试过apt autoremove、apt autoclean甚至手动卸载旧内核都没法腾出足够空间,没法完成系统更新,还不想重装系统对吧?咱们一步步来看看还有哪些办法可以尝试:
先把你提供的系统信息整理出来,方便后续排查:
$ lsb_release -a No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 22.04.4 LTS Release: 22.04 Codename: jammy $ uname -r 6.5.0-45-generic $ ls /boot config-5.15.0-117-generic memtest86+.bin config-5.15.0-119-generic memtest86+.elf config-5.19.0-46-generic memtest86+_multiboot.bin config-6.2.0-37-generic System.map-5.15.0-117-generic System.map-5.15.0-119-generic System.map-5.19.0-46-generic System.map-6.2.0-37-generic System.map-6.5.0-45-generic vmlinuz-5.15.0-117-generic vmlinuz-5.15.0-119-generic vmlinuz-5.19.0-46-generic vmlinuz-6.2.0-37-generic vmlinuz-6.5.0-45-generic initrd.img-5.15.0-117-generic initrd.img-5.15.0-119-generic initrd.img-5.19.0-46-generic initrd.img-6.2.0-37-generic initrd.img-6.5.0-45-generic
可以尝试的额外解决办法:
彻底清理未被标记的旧内核及关联文件
你当前正在使用的内核是6.5.0-45-generic,所有低于这个版本的内核都可以安全删除(除非你需要回滚)。先列出所有已安装的内核包:dpkg --list | grep linux-image然后手动删除冗余的内核包,连同对应的头文件和模块一起清理:
sudo apt purge linux-image-5.15.0-117-generic linux-image-5.15.0-119-generic linux-image-5.19.0-46-generic linux-image-6.2.0-37-generic sudo apt purge linux-headers-5.15.0-117-generic linux-headers-5.15.0-119-generic linux-headers-5.19.0-46-generic linux-headers-6.2.0-37-generic sudo apt purge linux-modules-5.15.0-117-generic linux-modules-5.15.0-119-generic linux-modules-5.19.0-46-generic linux-modules-6.2.0-37-generic完成后再运行
apt autoremove --purge和apt autoclean确保残留文件被清理干净。手动删除/boot目录下的冗余文件
如果apt purge之后,/boot里还残留旧的config、System.map、vmlinuz或initrd.img文件,可以手动删除(千万注意别删当前运行内核对应的文件):sudo rm /boot/config-5.15.0-117-generic /boot/config-5.15.0-119-generic /boot/config-5.19.0-46-generic /boot/config-6.2.0-37-generic sudo rm /boot/System.map-5.15.0-117-generic /boot/System.map-5.15.0-119-generic /boot/System.map-5.19.0-46-generic /boot/System.map-6.2.0-37-generic sudo rm /boot/vmlinuz-5.15.0-117-generic /boot/vmlinuz-5.15.0-119-generic /boot/vmlinuz-5.19.0-46-generic /boot/vmlinuz-6.2.0-37-generic sudo rm /boot/initrd.img-5.15.0-117-generic /boot/initrd.img-5.15.0-119-generic /boot/initrd.img-5.19.0-46-generic /boot/initrd.img-6.2.0-37-generic操作前务必确认这些文件对应的内核已经被完全卸载。
清理重复或损坏的initramfs文件
有时候initramfs会生成重复或损坏的版本,可以用以下命令删除旧内核对应的initramfs:sudo update-initramfs -d -k 5.15.0-117-generic sudo update-initramfs -d -k 5.15.0-119-generic sudo update-initramfs -d -k 5.19.0-46-generic sudo update-initramfs -d -k 6.2.0-37-generic这个命令会彻底清理指定内核的initramfs残留。
临时扩容/boot分区(非LVM环境)
如果磁盘上有未分配空间,你可以通过Ubuntu Live USB启动,用GParted工具调整分区大小:- 制作Ubuntu Live USB并从它启动
- 打开GParted,找到/boot对应的分区
- 调整相邻分区腾出空间,再扩容/boot分区
- 重启系统后尝试更新
如果以上方法都试过还是不行,那可能只能考虑备份数据后重装系统,但建议先把上面的步骤都试一遍,大概率能腾出足够空间完成更新。
备注:内容来源于stack exchange,提问作者Celia Garcia

