
Ubuntu16.04:使用以下命令创建了一个64 SD的SD卡映像:
date; sudo sh -c 'pv /dev/mmcblk0 >rpi4_Ubuntu18.1_64GB.image'; date该系统配置了Ubuntu 18.1。
Ubuntu 16.04笔记本电脑:
我知道这是可能的恢复图像文件到SD卡和处理卡与零树,并再次抓取图像。如果能够处理几个.image文件,而不将它们还原到SD卡上,那就太好了。
成功挂载到/dev/头9p2的映像:
$ sudo losetup -P /dev/loop9 rpi4_Ubuntu18.1_64GB.image
$ ls -l /dev/loop9*
brw-rw---- 1 root disk 7, 9 Feb 2 19:12 /dev/loop9
brw-rw---- 1 root disk 259, 0 Feb 2 19:12 /dev/loop9p1
brw-rw---- 1 root disk 259, 1 Feb 2 19:12 /dev/loop9p2零树失败:
$ zerofree -v /dev/loop9p2
zerofree: failed to open filesystem /dev/loop9p2零树必需的sudo:
$ sudo zerofree -v /dev/loop9p2
14346339/14348998/15073019额外好处:使用脚本粉红缩小图像大小
发布于 2020-02-02 21:02:39
zerofree在兼容的文件系统上运行,不管底层存储介质是什么。Debian 10系统上的zerofree版本支持ext2、ext3和ext4文件系统,所以如果SD卡上使用的文件系统就是其中之一,答案将是是。
但是看起来你已经映射了整个卡片,它可能有多个分区在上面。如果是这样的话,您就不能仅仅“挂载映像文件”,因为挂载命令一次只处理一个文件系统。在整个磁盘映像上,分区表通常在磁盘开始时占据一定的空间,因此您甚至可能无法通过直接挂载全卡映像来访问映像上的第一个文件系统。
如果您的系统有一个支持losetup选项的-P命令,您可以执行一个losetup -P /dev/loop0 rpi4_Ubuntu18.1_64GB.image,这将为您提供诸如/dev/loop0p1、/dev/loop0p2等设备--为图像文件中的每个分区提供一个。然后可以挂载每个分区设备并在其上运行zerofree,然后卸载和losetup -d /dev/loop0以分离循环设备。
如果您的losetup命令不支持-P选项,那么还有一种选择:kpartx工具(有时单独打包,有时作为device-mapper-multipath工具的一部分)可以为各个分区创建映射。在这种情况下,您将首先使用losetup /dev/loop0 rpi4_Ubuntu18.1_64GB.image来附加循环设备,然后使用kpartx -a /dev/loop为在其上检测到的每个分区创建映射设备。在这种情况下,分区设备的命名将有所不同:它们将是/dev/mapper/loop0p1等。否则安装和zerofree过程将是相同的,但是在您卸载文件系统之后进行清理也需要两个步骤:首先是删除分区映射设备的kpartx -d /dev/loop0,然后是删除主循环设备的losetup -d /dev/loop0。
https://unix.stackexchange.com/questions/565441
复制相似问题