如何从 /boot 中删除不必要的文件

如何从 /boot 中删除不必要的文件

我想升级我的 Ubuntu 18.04,但由于 /boot 中没有足够的可用空间,因此无法升级。

/boot的内容为:

System.map-4.15.0-173-通用
System.map-4.15.0-204-通用
System.map-4.15.0-29-通用
abi-4.15.0-29-通用
配置-4.15.0-173-通用
配置-4.15.0-204-通用
配置-4.15.0-29-通用
蛴螬
initrd.img-4.15.0-204-通用
失物招领
retpoline-4.15.0-29-通用
vmlinuz-4.15.0-173-通用
vmlinuz-4.15.0-204-通用
vmlinuz-4.15.0-29-通用

下列的如何在 /boot 中释放更多空间?我对除已加载版本之外的所有版本执行了“sudo apt purge -y linux-{image,headers}-VERSION”。

这确实删除了所有这些版本,命令dpkg -l linux-{image,headers}-"[0-9]*" | awk '/ii/{print $2}'显示:

Linux 标头-4.15.0-204
Linux 标头-4.15.0-204-通用
Linux-映像-4.15.0-204-通用

但是,它并没有从 /boot 中删除任何文件 - 所以这个问题的可接受答案对我来说根本不起作用。还有其他选择吗?

更新:的输出apt-mark showmanual | grep linux-'[g|h|m|i]'

linux 通用
linux-headers-通用

是否可以安全地简化sudo rm ...属于不需要的版本的文件?

更新:我开始尝试sudo apt autoremove --purge,但没有任何效果。

更新:输出dpkg -l | grep linux-'[g|h|i|m|e]' | cut -d ' ' -f 3

binutils-x86-64-linux-gnu
linux 通用
Linux 标头-4.15.0-204
Linux 标头-4.15.0-204-通用
linux-headers-通用
Linux-映像-4.15.0-204-通用
linux-image-通用
Linux-映像-未签名-4.15.0-173-通用
Linux-映像-未签名-4.15.0-29-通用
Linux 模块-4.15.0-173-通用
Linux 模块-4.15.0-204-通用
Linux 模块-4.15.0-29-通用
Linux 模块额外-4.15.0-204-通用

更新:输出为for f in /boot/* ; do dpkg -S $f ; done | grep -v 204-generic | cut -f 1 -d ":"

Linux 模块-4.15.0-173-通用
Linux 模块-4.15.0-29-通用
Linux 模块-4.15.0-29-通用
Linux 模块-4.15.0-173-通用
Linux 模块-4.15.0-29-通用
Linux 模块-4.15.0-29-通用
Linux-映像-未签名-4.15.0-173-通用
Linux-映像-未签名-4.15.0-29-通用

使用以下命令删除所有文件for f in /boot/* ; do dpkg -S $f ; done | grep -v 204-generic | cut -f 1 -d ":" | xargs -n 1 sudo apt purge -y

这确实删除了 /boot 中所有不必要的文件 - 感谢@user535733 在评论中分享相关想法!

答案1

根据用户@user535733 的建议解决方案:删除所有仍然与 /boot 中的文件相关的软件包,但包含当前版本字符串的软件包除外:

cur=`uname -r`
`对于 /boot/* 中的 f ; 执行 dpkg -S $f ; 完成 | grep -v $cur | cut -f 1 -d ":" | xargs -n 1 sudo apt purge -y`

相关内容