清理 /boot
发表于 2018年6月29日
/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