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

我为/boot分区分配了200 MB。 每当我尝试更新内核时,都会收到一条错误消息,表明/boot已满。

我该怎么做才能清理/boot和删除/备份旧内核?

命令行方法:

首先检查你的内核版本,这样你就不会删除正在使用的内核映像,运行:

 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 

可以通过sudo apt install byobu安装purge-old-kernels工具。 以下是其手册页的说明:

该程序将从系统中删除旧的内核和头文件包,释放磁盘空间。 它永远不会删除当前运行的内核。 默认情况下,它将至少保留最新的2个内核,但用户可以使用--keep参数覆盖该值。

如果您需要复制粘贴解决方案,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分区(如果你觉得它值得麻烦,你可以用它来做别的事情)。

删除旧内核(释放/ boot上的空间)请参阅: http : //askubuntu.com/questions/89710/how-do-i-free-up-more-space-in-boot

 sudo apt-get purge $(dpkg -l linux-{image,headers}-"[0-9]*" | awk '/ii/{print $2}' | grep -ve "$(uname -r | sed -r 's/-[az]+//')") 

然后跑

 sudo apt-get update 

sudo apt-get autoremove

这将删除除最后2个内核之外的所有内核 当/boot处于100%容量且apt-get upgrade失败时,在Ubuntu 16.04 LTS上进行了测试,这是最后一次内核升级。 内核autoremove是迭代的,所以如果你有几个内核,它们将被逐个删除。 所以要耐心等待。

为什么用工具做手工呢? 你知道你将在30秒内再次需要它,因为这些天他们需要30秒推动新的核心更新= P

我建议使用这个工具, bootnukem

 git clone https://github.com/erichs/bootnukem.git cd bootnukem sudo ./install.sh 

然后

 sudo bootnukem --dry-run 

一旦确认它看起来安全,请删除--dry-run