嗯,这个问题经常被问到 - 然而解决方案似乎不太明确,而且对我来说并不真正起作用。
$ df
Filesystem 1k-blocks Used Available Use% Mounted on
/dev/sda5 184307 173269 0 100% /boot
/dev/sda6 4673664 2926312 1486900 67% /home
$ dpkg -l | tail -n +6 | grep -E 'linux-image-[0-9]+' | grep -Fv $(uname -r)
pi linux-image-4.4.0-21-generic 4.4.0-21.37 amd64 Linux kernel image for version 4.4.0 on 64 bit x86 SMP
ii linux-image-4.4.0-22-generic 4.4.0-22.40 amd64 Linux kernel image for version 4.4.0 on 64 bit x86 SMP
iF linux-image-4.4.0-28-generic 4.4.0-28.47 amd64 Linux kernel image for version 4.4.0 on 64 bit x86 SMP
iF linux-image-4.4.0-31-generic 4.4.0-31.50 amd64 Linux kernel image for version 4.4.0 on 64 bit x86 SMP
这是最好的一个:
$ sudo apt-get purge linux-image-extra-4.4.0-36-generic
Paketlisten werden gelesen... Fertig
Abhängigkeitsbaum wird aufgebaut.
Statusinformationen werden eingelesen.... Fertig
Probieren Sie »apt-get -f install«, um dies zu korrigieren:
Die folgenden Pakete haben unerfüllte Abhängigkeiten:
linux-image-extra-4.4.0-34-generic : Hängt ab von: linux-image-4.4.0-34-generic soll aber nicht installiert werden
linux-image-generic : Hängt ab von: linux-image-4.4.0-36-generic soll aber nicht installiert werden
Hängt ab von: linux-image-extra-4.4.0-36-generic soll aber nicht installiert werden
E: Unerfüllte Abhängigkeiten. Versuchen Sie »apt-get -f install« ohne Angabe eines Pakets (oder geben Sie eine Lösung an)
不知何故,4.4.0-36 似乎已安装但实际上并未安装。我甚至无法对包管理器进行洗脑。
我知道我最好不要 cd /boot;rm -f ........
为了不让主脑更加困惑,但我认为除了帮助自己清理之外没有其他办法了。
我现在的问题如下:
我可以sudo rm -f /boot/somebigfiles;sudo touch /boot/somebigfiles
在上面创建一些工作空间/boot
吗?
如何欺骗包管理器,使他认为东西已经安装完毕,并且可以使用所有 niceapt-get clean/autoclean
和其他 apt 命令自行清理?
答案1
也许这不是最简单的解决方案,但这是我尝试解决该问题的方法。
获取一个大于 /boot 分区的 USB 驱动器 将 /boot 的内容复制到它上面 然后调整 /etc/fstab 以在下次重启时将 USB 驱动器挂载到 /boot 重启 清理你的东西,升级 然后将 /boot(USB 驱动器)的内容复制到旧的 /boot(你可以挂载在 /boot1 上) 完成后,再次编辑 /etc/fstab 以挂载 /boot 分区而不是 USB 驱动器并重启
答案2
您可以采取以下措施来清理启动分区上的空间,而不会使包管理器感到困惑,即保留文件但删除其内容。
例如:
echo“”> / boot / vmlinuz-旧版本-旧-您想要删除
echo“”> / boot / initrd-旧版本-旧-您想要删除
这将回收已用的空间但文件仍为空。
由于 apt 似乎处于损坏状态,你应该运行
apt-get 安装 -f
按照上述示例在 /boot/ 中留出一些空间后
一个更长期的解决方案是在 USB 驱动器上的 Ubuntu 上启动,并使用 gparted 简单地调整启动分区的大小,以便它将来能够适合更多版本。
答案3
最近,我在清理旧内核失败后遇到了这个问题。我使用的方法是 cd 到 /boot 并删除几个旧内核。如果您有一段时间没有重新启动,则需要确保不要删除当前正在使用的内核。以下命令列出了可以相对安全地删除或截断的文件。列表顶部的文件更有可能被使用。
uname -r
cd /boot
ls -1t *-* | grep -v $(uname -r)
我现在运行它时它看起来是这样的。发布的文件4.4.0-34-generic
是值得删除的。
root@ubuntu:~# uname -r 4.4.0-31-通用 root@ubuntu:~# cd /boot root@ubuntu:/etc/grub.d$ cd /boot root@apollo:/boot# ls -1t *-* | grep -v $(uname -r) initrd.img-4.4.0-34-通用 abi-4.4.0-36-通用 配置-4.4.0-36-通用 System.map-4.4.0-36-通用 vmlinuz-4.4.0-36-通用 abi-4.4.0-34-通用 配置-4.4.0-34-通用 System.map-4.4.0-34-通用 vmlinuz-4.4.0-34-通用 initrd.img-4.2.0-35-通用 abi-4.2.0-35-通用 配置-4.2.0-35-通用 System.map-4.2.0-35-通用 vmlinuz-4.2.0-35-通用
软件包管理器并没有因为我删除了内核而感到太过沮丧。删除脚本对丢失的文件具有合理的容忍度。您可以使用类似 的命令截断文件> vmlinuz-4.4.0-34-generic
。重定向之前无需提供命令>
。
一旦您腾出空间,命令dpkg --configure -a
应该会帮助您进行清理。
答案4
这种方法奏效了。我删除了不需要的文件(通过备份),并创建了空文件来平息包管理器。我们把它们称为“不需要的内核”。然后我让包管理器 apt-get 自行修复,启动分区只占了 50%。然后我清除了不需要的内核,这意味着包管理器要清除空文件。好吧,他没有抱怨 ;-)
Apt-get 现在已清理完毕,/boot 下降至 50%。