use*_*722 590 filesystem boot init hard-drive disk-usage
我的/boot
分区快满了,每次重新启动系统时都会收到警告。我已经删除了旧的内核包(linux-headers ...),实际上我这样做是为了安装自动更新附带的较新内核版本。
安装新版本后,分区又快满了。那我还能删除什么?是否有其他一些与旧内核映像相关的文件?
这是我的/boot
分区上的文件列表:
:~$ ls /boot/
abi-2.6.31-21-generic lost+found
abi-2.6.32-25-generic memtest86+.bin
abi-2.6.38-10-generic memtest86+_multiboot.bin
abi-2.6.38-11-generic System.map-2.6.31-21-generic
abi-2.6.38-12-generic System.map-2.6.32-25-generic
abi-2.6.38-8-generic System.map-2.6.38-10-generic
abi-3.0.0-12-generic System.map-2.6.38-11-generic
abi-3.0.0-13-generic System.map-2.6.38-12-generic
abi-3.0.0-14-generic System.map-2.6.38-8-generic
boot System.map-3.0.0-12-generic
config-2.6.31-21-generic System.map-3.0.0-13-generic
config-2.6.32-25-generic System.map-3.0.0-14-generic
config-2.6.38-10-generic vmcoreinfo-2.6.31-21-generic
config-2.6.38-11-generic vmcoreinfo-2.6.32-25-generic
config-2.6.38-12-generic vmcoreinfo-2.6.38-10-generic
config-2.6.38-8-generic vmcoreinfo-2.6.38-11-generic
config-3.0.0-12-generic vmcoreinfo-2.6.38-12-generic
config-3.0.0-13-generic vmcoreinfo-2.6.38-8-generic
config-3.0.0-14-generic vmcoreinfo-3.0.0-12-generic
extlinux vmcoreinfo-3.0.0-13-generic
grub vmcoreinfo-3.0.0-14-generic
initrd.img-2.6.31-21-generic vmlinuz-2.6.31-21-generic
initrd.img-2.6.32-25-generic vmlinuz-2.6.32-25-generic
initrd.img-2.6.38-10-generic vmlinuz-2.6.38-10-generic
initrd.img-2.6.38-11-generic vmlinuz-2.6.38-11-generic
initrd.img-2.6.38-12-generic vmlinuz-2.6.38-12-generic
initrd.img-2.6.38-8-generic vmlinuz-2.6.38-8-generic
initrd.img-3.0.0-12-generic vmlinuz-3.0.0-12-generic
initrd.img-3.0.0-13-generic vmlinuz-3.0.0-13-generic
initrd.img-3.0.0-14-generic vmlinuz-3.0.0-14-generic
Run Code Online (Sandbox Code Playgroud)
目前,我正在使用3.0.0-14-generic
内核。
Lek*_*eyn 659
你有很多未使用的内核。删除除最后一个内核之外的所有内核:
sudo apt-get purge linux-image-{3.0.0-12,2.6.3{1-21,2-25,8-{1[012],8}}}
Run Code Online (Sandbox Code Playgroud)
这是以下的简写:
sudo apt-get purge linux-image-3.0.0-12 linux-image-2.6.31-21 linux-image-2.6.32-25 linux-image-2.6.38-10 linux-image-2.6.38-11 linux-image-2.6.38-12 linux-image-2.6.38-8
Run Code Online (Sandbox Code Playgroud)
删除linux-image-x.x.x-x
包也将删除linux-image-x.x.x-x-generic
.
头文件安装/usr/src
在构建外树内核模块(如专有的 nvidia 驱动程序和 virtualbox)时使用。如果linux-image-*
没有安装匹配的内核包 ( ),大多数用户应该删除这些头包。
要列出所有已安装的内核,请运行:
dpkg -l linux-image-\* | grep ^ii
Run Code Online (Sandbox Code Playgroud)
显示所有可以删除的内核和头文件的命令,不包括当前正在运行的内核:
kernelver=$(uname -r | sed -r 's/-[a-z]+//')
dpkg -l linux-{image,headers}-"[0-9]*" | awk '/ii/{print $2}' | grep -ve $kernelver
Run Code Online (Sandbox Code Playgroud)
它选择所有以linux-headers-<some number>
or开头linux-image-<some number>
的包,打印已安装包的包名,然后排除当前加载/运行的内核(不一定是最新的内核!)。这符合在删除旧的已知工作内核之前测试新内核的建议。
因此,在升级内核并重新启动以进行测试后,您可以使用以下命令删除所有其他内核:
sudo apt-get purge $(dpkg -l linux-{image,headers}-"[0-9]*" | awk '/ii/{print $2}' | grep -ve "$(uname -r | sed -r 's/-[a-z]+//')")
Run Code Online (Sandbox Code Playgroud)
dwa*_*ard 231
您的启动分区已满。由于这是内核更新,因此这些文件将被复制到引导分区,因此您需要清除。这是一篇博客文章,将向您展示如何使用一个命令清除旧的内核映像。我将给出该方法的基本概要。使用此命令打印出内核的当前版本:
uname -r
Run Code Online (Sandbox Code Playgroud)
然后使用此命令打印出您安装的所有不是最新内核的内核:
dpkg -l linux-{image,headers}-"[0-9]*" | awk '/^ii/{ print $2}' | grep -v -e `uname -r | cut -f1,2 -d"-"` | grep -e '[0-9]'
Run Code Online (Sandbox Code Playgroud)
确保您当前的内核不在该列表中。请注意这是最终命令的大部分内容(如下所示)。要卸载和删除这些旧内核,您需要将这些参数通过管道传输到:
sudo apt-get -y purge
Run Code Online (Sandbox Code Playgroud)
现在我们可以通过将最后两个命令组合成这个邪恶的混乱来做我们想做的一切:
dpkg -l linux-{image,headers}-"[0-9]*" | awk '/^ii/{ print $2}' | grep -v -e `uname -r | cut -f1,2 -d"-"` | grep -e '[0-9]' | xargs sudo apt-get -y purge
Run Code Online (Sandbox Code Playgroud)
一个命令将为您处理一切。我会确认这确实有效,但永远不要相信互联网上的任何人。:) 有关更多信息,博客文章很好地解释了命令的每个部分的作用,因此请通读它,以便您对它执行您想要的操作感到满意。
小智 114
sudo apt-get autoremove
Run Code Online (Sandbox Code Playgroud)
该命令正在自动完成这项工作。
fos*_*dom 40
Synaptic Package Manager 可用于轻松选择和删除旧的内核映像。
如果您还没有安装 Synaptic:
sudo apt-get install synaptic
Run Code Online (Sandbox Code Playgroud)
启动应用程序并选择显示的选项。
根据 /boot 文件夹中的文件,您应该能够突出显示所有版本为“2.6.x”的“linux-”包,其中 x 介于 31 到 38 之间。
右键单击这些 linux 软件包中的每一个,然后选择选项“标记为完全删除”。最后点击应用按钮。这将删除所有文件和任何关联的文件。您的/boot
文件夹现在应该更整洁了。
小智 25
感谢您详细说明您的问题,这使我朝着正确的方向前进。虽然保留以前的内核文件很有用,但您可以一次性删除所有这些文件,请查看这篇文章:
如何删除所有未使用的 Linux 内核头文件、映像和模块
通过命令行完成。如果您通过远程使用 WINSCP 之类的工具打开终端会话并将其粘贴到其中,则效果很好。
这是从文章链接复制的,我建议您阅读全文:
dpkg -l 'linux-*' | sed '/^ii/!d;/'"$(uname -r | sed "s/\(.*\)-\([^0-9]\+\)/\1/")"'/d;s/^[^ ]* [^ ]* \([^ ]*\).*/\1/;/[0-9]/!d' | xargs sudo apt-get -y purge
Run Code Online (Sandbox Code Playgroud)
Rma*_*ano 23
这是一个旧问题的新答案,但清理这个东西(以及更多)的一个简单方法是安装Ubuntu Tweak。要安装它:
sudo add-apt-repository ppa:tualatrix/ppa
sudo apt-get update
sudo apt-get install ubuntu-tweak
Run Code Online (Sandbox Code Playgroud)
然后你可以运行 Ubuntu Tweak,转到“管理员”选项卡,从这里点击三下:
不过,为了安全起见,最好保留最后一个内核(你永远不知道)或一个众所周知的工作内核;但这很容易定制。
您可以使用相同的工具来清理很多东西——请记住,如果您清理缩略图缓存或 TB 缓存,那么系统将不得不在需要时重建它们。
Phr*_*ogz 20
我能够通过使用dpkg
直接删除包来解决问题。尽管软件包仍列在 中dpkg -l
,但文件已从 中删除/boot
,从而释放空间。
phrogz@planar:/boot$ sudo dpkg --remove linux-image-2.6.32-30-server
(Reading database ... 145199 files and directories currently installed.)
Removing linux-image-2.6.32-30-server ...
Running postrm hook script /usr/sbin/update-grub.
Generating grub.cfg ...
Found linux image: /boot/vmlinuz-2.6.32-35-server
Found linux image: /boot/vmlinuz-2.6.32-34-server
Found initrd image: /boot/initrd.img-2.6.32-34-server
Found linux image: /boot/vmlinuz-2.6.32-33-server
Found initrd image: /boot/initrd.img-2.6.32-33-server
Found linux image: /boot/vmlinuz-2.6.32-32-server
Found initrd image: /boot/initrd.img-2.6.32-32-server
Found linux image: /boot/vmlinuz-2.6.32-31-server
Found initrd image: /boot/initrd.img-2.6.32-31-server
Found memtest86+ image: /memtest86+.bin
done
# Repeat for kernels -31 and -32 and -33, up to (but not including)
# the version listed by `uname -a`
Run Code Online (Sandbox Code Playgroud)
在此之后,apt-get -f install
解决了我的依赖问题,一切都很好。
然而,我不会接受我的这个答案,因为我仍然需要知道我是否应该增加我的/boot
尺寸或做其他事情。
psu*_*usi 17
您可以停止使用单独的 /boot 分区,那么那里的空间就不会那么有限。为此,请卸载分区,然后将其挂载到其他位置并将那里的所有文件复制到根分区的 /boot 目录中,然后从 /etc/fstab 中删除该条目并重新安装 grub。例如(您需要使用正确的分区):
sudo -s
umount /boot
mount /dev/sda2 /mnt
cp -a /mnt/* /boot/
umount /mnt
gedit /etc/fstab
grub-install /dev/sda
Run Code Online (Sandbox Code Playgroud)
然后您可以使用 gparted 删除旧的 /boot 分区,并可能扩展根分区以使用该空间。要扩展根分区,您需要从 livecd 引导,并且可用空间需要立即在右侧。如果 /boot 分区当前位于根分区的左侧,那么您需要先将根分区移动到左侧,然后扩展它,但这可能需要非常非常长的时间,因此可能不值得麻烦。
use*_*408 13
充分利用上述答案,我经过验证的方法是这样的:
uname -a
找到正在运行的内核。dpkg -l linux-{headers,image}-\* | grep ^ii
列出所有当前安装的内核相关软件包。这将包括正在运行的内核。sudo apt-get purge linux-{image,headers}-3.16.0-{xx,yy,zz}
删除旧内核。替换xx,yy,zz
为要删除的内核构建列表——这些是上一个命令列出的比当前运行的内核更旧的所有构建。确保您没有删除当前正在运行的内核——您的系统将变得无法启动。您可能还需要将内核版本更改3.16.0
为系统上安装的任何版本。sudo apt-get autoremove
——这将删除当前内核不再需要的旧内核的任何剩余依赖项,释放更多空间。您可能有没有安装匹配内核版本的头文件,反之亦然——只需在命令中包含所有这些版本。APT 会抱怨某些软件包由于未安装而无法删除,但这不会造成任何伤害。
sudo dpkg --purge linux-{image,headers}-3.16.0-{xx,yy,zz}
。linux-image
的linux-headers
软件包(您也想卸载)需要这些软件包,则 dpkg 可能无法解决该问题。重新检查输出dpkg -l
并在命令行上指定任何包名称后缀。例如,在我的一个系统上,最终起作用的命令是sudo dpkg --purge linux-{image,headers}-3.16.0-{xx,yy,zz}-generic-pae
.列出所有内核:
dpkg --list 'linux-image*'
Run Code Online (Sandbox Code Playgroud)
显示当前内核:
uname -r
Run Code Online (Sandbox Code Playgroud)
列出除当前内核之外的所有内核:
dpkg -l linux-{image,headers}-"[0-9]*" | awk '/^ii/{ print $2}' | grep -v -e `uname -r | cut -f1,2 -d"-"` | grep -e '[0-9]'
Run Code Online (Sandbox Code Playgroud)
确保您当前的内核不在该列表中。
删除除当前内核之外的所有内核:
dpkg -l linux-{image,headers}-"[0-9]*" | awk '/^ii/{ print $2}' | grep -v -e `uname -r | cut -f1,2 -d"-"` | grep -e '[0-9]' | xargs sudo apt-get -y purge
Run Code Online (Sandbox Code Playgroud)
清除其他内容:
sudo apt-get autoremove
Run Code Online (Sandbox Code Playgroud)
如果它仍然给你安装/卸载文件的启动磁盘空间错误,那么直接从 /boot 目录中删除OLD映像之一,
ls -lh /boot/*-3.13.0-119*;
rm /boot/*-3.13.0-119*;
Run Code Online (Sandbox Code Playgroud)
注意:在删除任何映像之前,请再次查看当前的内核映像。
如果它仍然抛出任何错误,则重复以下命令以删除不需要的内核,
sudo dpkg --purge linux-image-X.X.X-XXX-generic linux-image-extra-X.X.X-XXX-generic linux-signed-image-X.X.X-XXX-generic
sudo dpkg --purge linux-image-Y.Y.Y-YYY-generic linux-image-extra-Y.Y.Y-YYY-generic linux-signed-image-Y.Y.Y-YYY-generic
sudo apt-get -f install
dpkg -l linux-{image,headers}-"[0-9]*" | awk '/^ii/{ print $2}' | grep -v -e `uname -r | cut -f1,2 -d"-"` | grep -e '[0-9]' | xargs sudo apt-get -y purge
Run Code Online (Sandbox Code Playgroud)
小智 5
对我来说,这两个apt-get purge
和dpkg --remove
两个失败。所以我不得不从 /boot 中删除了几个旧的内核映像rm -f
。
归档时间: |
|
查看次数: |
643568 次 |
最近记录: |