我在我的Debian喘息中做dpkg --configure -a。并得到了以下错误:
dpkg --configure -a
dpkg: failed to write status record about `libcairo2' to `/var/lib/dpkg/status': No space left on device我被输入到.img文件中。我能做什么?
发布于 2015-07-20 01:46:37
要正确地执行此操作,您需要:
.img文件。做第一件事的最好方法是使用dd。不管出于什么原因,有些人把一种神秘归因于dd的工作方式,但实际上根本就没有。例如,将一个洞附加到.img文件的末尾:
dd bs=1kx1k seek=100 of=.img </dev/null在任何POSIX系统上,它都会将文件截断为100个the。在GNU系统上,1kx1k位可以缩短为M。dd在文件中寻找100个and,在第一次读取时遇到EOF,并关闭该文件。它是一个单一的操作,不需要读取(除了第一个空的)或写-它几乎是原子的。
如果以前的文件是50MiBs,那么现在将分配更多的50MiBs。如果之前的文件是150兆字节,那就把最后50兆字节从尾巴上砍下来。在一个能够理解稀疏文件的文件系统上,附加的文件孔实际上不会使用磁盘空间,并且只会在填充文件时使用所需的内容。
在某些系统上进行同样操作的其他方法:
fallocate -l100M .img
truncate -s100M .img这些命令的...both将执行与dd完全相同的操作。我推荐dd,因为在dd's行为是POSIX规范的情况下,这些工具都不是可移植的,而且一旦您学习了如何正确使用磁盘驱逐舰,任何磁盘都不敢再阻挡您的前进。
如果您只是添加到您的.img中,那么无论是否挂载它,您都可以做上面的事情(尽管您要拿走一些挂载的.img,它可能不能像预期的那样工作),但是您很可能需要首先调整它的组成文件系统的umount.img的大小,所以也可以这样做。不过,您不需要在循环设备上使用-d。
如何处理第二件事取决于.img是否被分区。如果不是,我猜是基于您在其他地方的评论,那么您只需要按它的类型来处理fs。对于ext[234] .img文件,您应该使用resize2fs并完成它。对于其他人,您将需要查看相关的用户空间工具及其man页面。
如果对.img进行分区,则可能会更复杂。在这种情况下,如何处理这种情况将取决于使用了何种类型的分区表(例如GPT对MBR和混合MBR),它是否是文件的分区表中的最后一个分区,等等。如果您需要关于如何处理分区.img的建议,请告诉我更多的细节,我会提供我所能提供的。
发布于 2015-07-19 15:19:11
如果chroot文件系统已满,则可以放大图像文件。
例如使用dd conv=notrunc oflag=append bs=1M count=X of=file.img。非常,非常小心:)。如果可以的话,强烈建议先卸载chroot并备份.img文件。
然后调整文件系统的大小,以便它可以使用额外的空间。对于ext4文件系统,命令将是resize2fs。该手册建议您必须在循环设备上运行最后一个命令,而不是文件:
# losetup -f file.img
# losetup -l
NAME SIZELIMIT OFFSET AUTOCLEAR RO BACK-FILE
/dev/loop0 0 0 0 0 /home/alan/file.img
# resize2fs /dev/loop0
...
# losetup -d /dev/loop0命令对于不同的文件系统是不同的,例如btrfs filesystem resize /dev/loop0 max或xfs_growfs /test.img/is/mounted/here。
https://unix.stackexchange.com/questions/217013
复制相似问题