TF卡制作系统镜像以及裁剪镜像文件大小

本文介绍了如何在Ubuntu系统中使用Gparted制作TF卡系统镜像,处理大容量镜像导致的容量问题,通过裁剪镜像和调整分区大小释放未使用的空间。
摘要由CSDN通过智能技术生成

author:Lei

参考博客:

参考博客1
参考博客2
参考博客3


环境需求

  • ubuntu
  • gparted包
  • truncate命令

安装Gparted

ubuntu命令行执行

sudo apt-get install gparted

Part1: TF卡制作系统镜像

准备

  • 待操作的TF卡、读卡器、Ubuntu电脑。
  • 需在Ubuntu系统下操作,而且电脑磁盘空间需大于TF卡存储空间
  • 如果电脑磁盘空间不够,使用移动硬盘也可以

操作

  • 插入TF卡和读卡器到电脑,命令行查看TF卡磁盘号
    sudo parted -l
  • 进入root模式下进行镜像制作
sudo -i
sudo dd if=/dev/sdb | gzip>path/ImgName.img.gz

/dev/sdb对应查看的TF卡磁盘号

监控

  • 新建终端,执行
    sudo watch -n 1 pkill -USR1 -n -x dd

执行完后,按Ctrl+D退出


Part2: 裁剪镜像文件大小

问题:上述操作TF制作出的镜像文件大小与TF卡容量一致,比如一个128G卡制作出的镜像也是128G,但是尴尬的是在向一张新的128GTF卡中烧录镜像时,会失败

准备

  • 安装Gparted
  • Ubuntu电脑
  • path/ImgName.img.gz解压出path/ImgName.img

操作

  • 将镜像文件导入Ubuntu系统/将包含镜像文件的移动硬盘插入Ubuntu电脑
  • 开启 loopback 并寻找可用设备
sudo modprobe loop
sudo losetup -f

终端会输出当前空闲的loop,比如/dev/loop15

  • 将镜像挂载到loop设备中
sudo losetup /dev/loop15 path/ImgName.img
sudo partprobe /dev/loop15

运行第二条命令后后才会出现分区/dev/loop15p1,/dev/loop15p2

  • 检查/dev/loop15p2
sudo e2fsck -f /dev/loop15p2
  • 使用Gparted查看并调整镜像分区大小
sudo gparted /dev/loop15

在这里插入图片描述右键选择调整大小/移动®,拖动右侧条或者输入大小
在这里插入图片描述点击右下角调整大小/移动,点击右上角编辑应用全部操作

  • truncate裁减镜像文件

目的:裁减掉文件中未分配的部分
在这里插入图片描述查看镜像文件信息:fdisk -lu path/ImgName.img
输出如下:
在这里插入图片描述> 注意扇区大小512字节,末尾扇区114530303两个数据

执行裁减:

truncate --size=$[(114530303+1)*512] path/ImgName.img
  • 查看结果:右键文件属性即可查看大小
  • 解除loop设备
sudo partprobe -d /dev/loop15 
sudo losetup -d /dev/loop15 

Part3: 烧录后扩展系统可使用空间

准备

  • Gparted

操作

  • 进入烧录好的系统执行
sudo gparted
  • 在Gparted中,调整分区大小适应整个TF卡大小并应用操作

尝试过其他方法,包括QEMU-IMG、PiShrink等,奈何本人能力有限,没能成功..... 在此记录尝试且成功的方法。

  • 16
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Arduino-TF是一种结合Arduino开发板和TF的扩展模块。TF,也称为MicroSD,是一种用于存储数据的小型存储,通常用于移动设备和嵌入式系统。Arduino-TF模块允许我们将TF与Arduino开发板连接在一起,从而可以利用Arduino的功能读写TF上的数据。 使用Arduino-TF模块,我们可以通过编程实现以下功能: 1. 读写文件:可以将文件从计算机中复制到TF中,以便将数据从计算机传输到嵌入式系统中。 2. 传感器数据记录:通过将传感器与Arduino连接并将数据存储在TF中,可以实现数据记录和分析。例如,可以记录温度传感器的数据,并在需要时将其读出。 3. 多媒体播放:通过将音乐、图像或视频文件存储在TF中,并将TF与Arduino-TF模块连接,可以通过Arduino实现简单的多媒体播放功能。 4. 日志记录:可以将系统运行时的日志信息存储在TF中,以便在需要时进行故障排查和分析。 在使用Arduino-TF模块时,我们需要连接TF模块和Arduino开发板,并在Arduino编程环境中编写相应的代码。通过使用相关的库函数,我们可以方便地实现对TF的读写操作。需要注意的是,在操作TF时,我们应该遵循正确的读写流程,并进行适当的错误处理,以保证数据的完整性和可靠性。 总之,Arduino-TF模块为我们提供了一种方便的方式来扩展Arduino开发板的存储能力,使得我们能够将数据存储在TF中,实现更多有趣和实用的应用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值