启动分区已满,正在运行旧内核,新内核“等待” - 可以安全重启吗?

启动分区已满,正在运行旧内核,新内核“等待” - 可以安全重启吗?

这并不是如上所述的重复 - 至于原因,请参阅下文。

我遇到了一种奇怪的情况,一个“旧”内核正在运行(事实上它是最旧的): uname -r

> 4.13.0-43-generic

使用命令显示可用的内核我只看到较新的内核(!):

sudo dpkg --list 'linux-image*'|awk '{ if ($1=="ii") print $2}'|grep -v `uname -r`
linux-image-4.13.0-45-generic
linux-image-4.15.0-24-generic
linux-image-4.15.0-29-generic
linux-image-4.15.0-30-generic
linux-image-4.15.0-32-generic
linux-image-4.15.0-33-generic
linux-image-4.15.0-34-generic
linux-image-extra-4.13.0-45-generic

看起来好像系统从未重新启动来“获取新内核”——例如,我在根目录中看到:

ls -al

lrwxrwxrwx   1 root root    33 Sep 11 06:02 initrd.img -> boot/initrd.img-4.15.0-34-generic
lrwxrwxrwx   1 root root    33 Sep 11 06:02 initrd.img.old -> boot/initrd.img-4.15.0-33-generic
lrwxrwxrwx   1 root root    30 Sep 11 06:02 vmlinuz -> boot/vmlinuz-4.15.0-34-generic
lrwxrwxrwx   1 root root    30 Sep 11 06:02 vmlinuz.old -> boot/vmlinuz-4.15.0-33-generic

这对我来说有点暗示(我不是 ubuntu 专家)...

这不是一个重复的问题,而是一个新的我没有问题老的要删除的内核。其他答案详细说明了删除带有版本号的旧内核较少的比当前内核。

正在运行的内核是列表中最旧的。我担心删除内核更新比当前内核 - 当前内核和最新内核之间以及想要安装的内核之间 - 但由于启动分区已满 100% 而被阻止。

当启动分区已满时,所有使用“apt”的答案都不起作用所以请忽略它们:)

来自我最初的问题:所以我想重启机器。但这很危险吗 - 因为启动分区已经 100% 满了。“通常”我会删除旧内核等以释放空间。这里最好的/最安全的方法是什么?

我问这个问题是因为我觉得我“应该”腾出一些空间(见如果 /boot 分区已满,ubuntu 还能启动吗?)... 但在这种特殊情况下该如何做?


这是我解决问题的方法:

最后,由于apt autoremove等在这种情况下不起作用,我遵循了这里给出的提示:https://gist.github.com/ipbastola/2760cfc28be62a5ee10036851c654600 (看:“案例 II:无法使用 apt,因为 /boot 已满 100%”

就我而言,我删除了更新手动释放内核空间以便/boot能够继续:

cd /boot
ls *4.13.0-45*
rm -rf *4.13.0-45*
df -h
sudo apt-get -f install
sudo apt-get autoremove
sudo update-grub
more grub/grub.cfg
reboot

df -h显示启动不再 100% 完整您more grub/grub.cfg可以检查系统是否满足正确的内核(即是否运行update grub良好)

答案1

按该顺序逐个运行这些命令并每次检查空间。

sudo apt autoremove

然后

sudo apt autoclean

如果空间不足,请运行:

sudo apt clean

sudo update-grub

必須工作。

重启后新内核通过运行以下命令确认最新的内核已完全安装:

uname -r

sudo update-initramfs -u -k all

然后运行

sudo apt purge $(dpkg -l|egrep 'linux-image-[0-9]|linux-headers-[0-9]'|awk '{print $3,$2}'|grep -v `uname -r|cut -f1,2 -d"-"`|sort -nr|tail -n +4|awk '{ print $2}')

这将删除除您正在使用的内核和最新内核之外的所有旧内核。

编辑

注意:在运行所有这些命令之前,您可以运行sudo update-initramfs -u -k all以确认最新的内核已完全安装。

相关内容