当前位置: 首页>>技术教程>>正文


清理/启动分区最安全的方法是什么?

, ,

问题描述

我有200 MB分配给/boot分区。每当我尝试更新内核时,都会收到一条基本上状态为/boot已满的错误消息。

我可以做些什么来清理/boot并删除/备份旧的内核?

最佳解决办法

命令行方法:

首先检查你的内核版本,所以你不会删除in-use内核镜像,运行:

uname -r

现在运行这个命令获取已安装内核的列表:

dpkg --list 'linux-image*' | grep ^ii

并通过运行以下命令删除不再需要的内核:

sudo apt-get remove linux-image-VERSION

将VERSION替换为您要删除的内核版本。

当你完成删除旧的内核时,你可以运行它来删除你不再需要的软件包:

sudo apt-get autoremove

最后你可以运行这个来更新grub内核列表:

sudo update-grub

次佳解决办法

注意:只有当您因100%完全启动而无法使用apt清理时才会这样

如果apt-get由于/boot为100%而无法运行,则需要先清除/引导。这可能已经在部分安装中引起了内核升级,这意味着apt已经完全冻结并且会一直告诉你运行apt-get -f install,即使该命令仍然失败。

获取内核映像列表并确定您可以不用的内容。该命令将显示除当前运行的sudo dpkg --list 'linux-image*'|awk '{ if ($1=="ii") print $2}'|grep -v `uname -r`之外的已安装的内核。请注意列表中的两个最新版本。您不必担心运行中的问题,因为它未在此处列出。您可以使用uname -r进行检查。

使用括号扩展来制作一个命令,以删除/boot中所有对你无关紧要的内核文件,以保持你的理智。请记住排除当前和两个最新的内核映像。例如:sudo rm -rf /boot/*-3.2.0-{23,45,49,51,52,53,54,55}-*。您还可以使用语法{80..84}的范围。

sudo apt-get -f install清理一些关于部分安装的问题。

如果遇到包含诸如“内部错误:无法找到映像(/boot/vmlinuz-3.2.0-56-generic)”的行的错误,请运行命令sudo apt-get purge linux-image-3.2.0-56-generic(使用适当的版本)。

最后,sudo apt-get autoremove清除已被手动启动清除的孤儿的旧内核映像包。

建议运行sudo apt-get updatesudo apt-get upgrade,以便在等待您发现完整/启动分区时处理可能已备份的任何升级。

建议2,查看https://help.ubuntu.com/community/AutomaticSecurityUpdates并考虑在/etc/apt/apt.conf.d/50unattended-upgrades中将Unattended-Upgrade :: Remove-Unused-Dependencies设置为true。这将相当于在每次安全更新之后运行autoremove,以确保清除未使用的内核,但也会删除它认为未使用的其他内容,以便将来避免此问题。

第三种解决办法

有关于此的文档在https://help.ubuntu.com/community/RemoveOldKernels

总结:使用

sudo apt-get autoremove --purge
# and/or:
sudo purge-old-kernels

purge-old-kernels工具可以通过sudo apt install byobu安装。以下是man-page的说明:

This program will remove old kernel and header packages from the system, freeing disk space. It will never remove the currently running kernel. By default, it will keep at least the latest 2 kernels, but the user can override that value using the --keep parameter.

如果您需要copy-paste解决方案,ReSearchIT Eng建议如下:

sudo apt install -y byobu
sudo purge-old-kernels -y --keep 1
sudo apt-get -y autoremove --purge

第四种办法

我发现放弃小分区并将/boot移到根目录要容易得多。这也可以防止未来出现空间不足问题。

首先将您的数据从启动分区移至root(作为sudo -s运行):

cp -a /boot /boot2
umount /boot
rmdir /boot
mv /boot2 /boot

删除(或注释)/etc/fstab中的/boot条目:

vim /etc/fstab

更新grub并确保一切正确:

update-grub

apt现在应该可以升级而不会出现问题。

这留下了一个未使用的200MB分区(如果你觉得值得麻烦,你可以用它来做其他事情)。

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/149.html,未经允许,请勿转载。