首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >可以在SD卡图像文件上执行零树处理吗?

可以在SD卡图像文件上执行零树处理吗?
EN

Unix & Linux用户
提问于 2020-02-02 19:14:03
回答 1查看 911关注 0票数 1

Ubuntu16.04:使用以下命令创建了一个64 SD的SD卡映像:

代码语言:javascript
复制
date; sudo sh -c 'pv /dev/mmcblk0 >rpi4_Ubuntu18.1_64GB.image'; date

该系统配置了Ubuntu 18.1。

Ubuntu 16.04笔记本电脑:

  • 挂载.image文件?
  • 在.image文件的挂载点上运行零树?
  • 卸载.image文件?

我知道这是可能的恢复图像文件到SD卡和处理卡与零树,并再次抓取图像。如果能够处理几个.image文件,而不将它们还原到SD卡上,那就太好了。

更新:测试结果

成功挂载到/dev/头9p2的映像:

代码语言:javascript
复制
$ 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

零树失败:

代码语言:javascript
复制
$ zerofree -v /dev/loop9p2
zerofree: failed to open filesystem /dev/loop9p2

零树必需的sudo

代码语言:javascript
复制
$ sudo zerofree -v /dev/loop9p2
14346339/14348998/15073019
  • 遇到的14346339个非零块
  • 文件系统中的14348998个空闲块
  • 15073019文件系统中的块总数

额外好处:使用脚本粉红缩小图像大小

EN

回答 1

Unix & Linux用户

回答已采纳

发布于 2020-02-02 21:02:39

zerofree在兼容的文件系统上运行,不管底层存储介质是什么。Debian 10系统上的zerofree版本支持ext2ext3ext4文件系统,所以如果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

票数 3
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/565441

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档