清理 /boot

/boot 分区有时需要一些注意。 如果您启用自动更新,它将被您可能永远不需要的旧内核填满。 它也会阻止您运行 aptitude 来安装或删除任何东西。 如果您发现自己处于这种情况,您可以使用 dpkg 来解决它。 dpkg 是基于 Debian 的发行版中更高级别的软件包管理器,当 aptitude 损坏时,它非常有用。

要查看您的分区状态,请运行: df -h


Filesystem      Size  Used Avail Use% Mounted on
udev            3.0G   12K  3.0G   1% /dev
tmpfs           597M  528K  597M   1% /run
/dev/dm-0        97G   14G   78G  15% /
none            4.0K     0  4.0K   0% /sys/fs/cgroup
none            5.0M     0  5.0M   0% /run/lock
none            3.0G     0  3.0G   0% /run/shm
none            100M     0  100M   0% /run/user
/dev/sda1       228M  219M     0 100% /boot

如果您查看 /boot 目录,您会发现它充满了旧内核和镜像。 仅仅删除它们是不可取的,因为您可能会破坏您的系统。 运行 uname -r,它会告诉您当前使用的内核是什么


3.13.0-137-generic

让我们找出安装了哪些内核,以及可以从系统中清除哪些内核。 为此,请运行以下命令


dpkg --list "linux-image*" | grep -v $(uname) | grep ii

这将使用 dpkg 列出所有已安装的 Linux 内核镜像(不包括您正在使用的那个)。

输出可能仍然很长,因此让我们通过将结果通过管道传递到 awk 来改进它。 下面的 awk 命令是一个指令,用于打印输出中的第二列


dpkg --list "linux-image*" | grep -v $(uname -r) |
 ↪grep ii | awk '{ print $2 }'

这提供了一个可以使用的列表,您可以将其放入脚本中或从命令行运行它来清除所有内核。

注意: 确保您正在使用的内核不在列表中。 当您指定 grep -v $(uname -r) 时,您应该已经消除了它。 -v 告诉 grep 排除任何包含 uname -r 输出的内容。

如果您很满意并且拥有 sudo 权限,请继续


sudo dpkg --purge $(dpkg --list "linux-image*" | grep -v
 ↪$(uname -r) | grep ii | awk '{ print $2 }')

要完成操作,请运行 sudo update-grub2。 这将确保 grub 使用可用的内核进行更新。 否则,您可能会遇到麻烦。 然后通过运行以下命令修复 aptitude:sudo apt-get -f install,然后运行 sudo apt-get auto remove 以从 aptitude 中清除图像。

查看您的分区,您会发现它有可用空间


Filesystem      Size  Used Avail Use% Mounted on
udev            3.0G   12K  3.0G   1% /dev
tmpfs           597M  528K  597M   1% /run
/dev/dm-0        97G   13G   79G  14% /
none            4.0K     0  4.0K   0% /sys/fs/cgroup
none            5.0M     0  5.0M   0% /run/lock
none            3.0G     0  3.0G   0% /run/shm
None            100M     0  100M   0% /run/use
/dev/sda1       228M   98M   118M  46% /boot

Adam McPartlan 是双胞胎的父亲 - Linux 爱好者,开源爱好者 - LFCS,AWS 云从业者。 在 Twitter 上关注他:@mcparty。

加载 Disqus 评论