“卷启动仅剩余 0 字节磁盘空间”

use*_*731 33 boot 12.04

在最近的更新后,我收到一条警报:

The volume boot has only 0 bytes disk space remaining
Run Code Online (Sandbox Code Playgroud)

但是我的电脑有很多可用的高清空间。有谁知道我如何解决这个问题。(如果相关,我正在使用 Ubuntu 12.04 的备用安装映像的整个磁盘加密功能)。

Par*_*aub 50

列出所有内核:
dpkg --get-selections | grep "linux-image-[[:digit:]].*" | tr "\t" ";" | cut -d ";" -f1

结果看起来有点像这样:

linux-image-3.19.0-7-generic 
linux-image-3.18.0-13-generic  
linux-image-3.16.0-23-generic
Run Code Online (Sandbox Code Playgroud)

不要删除所有内核,只删除旧内核!

接下来让我们移除 3.16 内核,
sudo apt-get purge linux-image-3.16.0-23-generic

然后是系统中所有未使用的包:
sudo apt-get autoclean && sudo apt-get autoremove

  • 如果你真的有 0 个字节可用,这将不会像 @blong 所说的那样工作。您之前必须手动删除一些旧的 vmlinuz 文件,因为清除过程需要创建一些文件,如果剩下 0 个字节,则此操作将失败。 (4认同)

Sel*_*lah 27

原因确实是旧的内核映像。
为了清理我所要做的就是运行一行:

sudo apt-get autoclean && sudo apt-get autoremove
Run Code Online (Sandbox Code Playgroud)

这会自动识别旧内核并将其删除。


elo*_*age 9

可能是您的/boot分区在随着时间的推移进行升级时积累了太多内核版本。此分区可能与您的磁盘分区(安装为/)分开。您可以/boot像这样检查分区空间(查找带有 /boot 的行):

df -h
Run Code Online (Sandbox Code Playgroud)

关于如何删除旧内核有一个很好的页面。

简而言之,检查您当前的内核版本,获取已安装的列表,然后 apt-get 删除旧版本。页面上还有一个“神奇”的单行命令,可以为您完成所有这些。但使用它需要您自担风险。

更详细的说明:

  1. 获取当前内核版本,即您要保留的版本

    uname -r
    
    Run Code Online (Sandbox Code Playgroud)
  2. 获取所有已安装内核的列表:

    dpkg -l | grep linux-image-
    
    Run Code Online (Sandbox Code Playgroud)
  3. 在要删除的内核上运行 apt-get remove。不是最新的!例如:

    sudo apt-get remove linux-image-2.6.32-22-generic
    
    Run Code Online (Sandbox Code Playgroud)

更多注意事项:


替代解决方案,使用 GUI 工具Ubuntu Tweak

安装并转到 Computer Janitor,检查 System->Old Kernel and System->Unneeded packages,然后按 Clean。