kob*_*101 302 kernel boot-partition
我为该/boot
分区分配了 200 MB 。每当我尝试更新内核时,我都会收到一条错误消息,指出基本上/boot
已满。
我可以做些什么来清理/boot
和删除/备份旧内核?
Pep*_*rio 370
首先检查您的内核版本,这样您就不会删除正在使用的内核映像,运行:
uname -r
Run Code Online (Sandbox Code Playgroud)
现在运行此命令以获取已安装内核的列表:
dpkg --list 'linux-image*' | grep ^ii
Run Code Online (Sandbox Code Playgroud)
并通过运行以下命令删除您不再需要/不再需要的内核:
sudo apt-get remove linux-image-VERSION
Run Code Online (Sandbox Code Playgroud)
将 VERSION 替换为要删除的内核版本。
完成删除旧内核后,您可以运行此命令以删除不再需要的软件包:
sudo apt-get autoremove
Run Code Online (Sandbox Code Playgroud)
最后你可以运行它来更新 grub 内核列表:
sudo update-grub
Run Code Online (Sandbox Code Playgroud)
fli*_*fly 304
注意:这仅适用于由于 100% 已满 /boot 而无法使用 apt 进行清理的情况
如果 apt-get 由于您的 /boot 为 100% 而无法运行,则您需要先清除 /boot。这可能在部分安装中捕获了内核升级,这意味着 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 update
并sudo apt-get upgrade
处理可能已备份的任何升级,同时等待您发现完整的 /boot 分区。
建议 2,查看https://help.ubuntu.com/community/AutomaticSecurityUpdates并考虑在 /etc/apt/apt.conf.d/50unattended-upgrades 中将 Unattended-Upgrade::Remove-Unused-Dependencies 设置为 true。这相当于在每次安全更新后运行 autoremove 以确保您清除未使用的内核,但也会删除它认为未使用的其他内容,从而避免将来出现此问题。
Pet*_*ler 57
https://help.ubuntu.com/community/RemoveOldKernels 上有关于此的文档
总结:使用
sudo apt-get autoremove --purge
# and/or:
sudo purge-old-kernels
Run Code Online (Sandbox Code Playgroud)
该purge-old-kernels
工具可以通过sudo apt install byobu
. 以下是其手册页的描述:
该程序将从系统中删除旧的内核和头文件包,释放磁盘空间。它永远不会删除当前运行的内核。默认情况下,它至少会保留最新的 2 个内核,但用户可以使用
--keep
参数覆盖该值。
如果您需要复制粘贴解决方案,ReSearchIT Eng 建议如下:
sudo apt install -y byobu
sudo purge-old-kernels -y --keep 1
sudo apt-get -y autoremove --purge
Run Code Online (Sandbox Code Playgroud)
我发现放弃小分区并移至/boot
根目录要容易得多。这也可以防止将来出现任何空间不足的问题。
首先将您的数据从引导分区移动到根目录(以 身份运行sudo -s
):
cp -a /boot /boot2
umount /boot
rmdir /boot
mv /boot2 /boot
Run Code Online (Sandbox Code Playgroud)
删除(或评论)中的/boot
条目/etc/fstab
:
vim /etc/fstab
Run Code Online (Sandbox Code Playgroud)
更新 grub 并确保一切正确:
update-grub
Run Code Online (Sandbox Code Playgroud)
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/-[a-z]+//')")
Run Code Online (Sandbox Code Playgroud)
然后运行
sudo apt-get update
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
422940 次 |
最近记录: |