当前位置: 首页 > article >正文

荔枝派Zero(全志V3S)制作 IMG 镜像文件

文章目录

  • 前言
  • 一、安装工具
  • 二、生成新的 img 文件
  • 三、分割虚拟磁盘
  • 四、挂载虚拟磁盘并格式化
    • 1、首先建立虚拟磁盘并分区
    • 2、格式化虚拟磁盘分区
  • 五、开始备份
  • 六、卸载虚拟磁盘
  • 七、dd 烧录系统
  • 八、运行测试


前言

之前在玩板子时每次烧录镜像都是先烧录 uboot 到 SD 卡 8k 偏移处,再拷贝 zImage 镜像文件和 sun8i-v3s-licheepi-zero-dock.dtb 设备树文件到 sd 卡的 kernel 分区,再把 rootfs.tar 解压到 SD 卡的 rootfs 分区,总的来说感觉有些麻烦,因此本文将制作一个 img 镜像文件可以在 windows 下直接用 Win32DiskImager 一键烧录,或者在 linux 下直接使用 dd 烧录。

一、安装工具

在 ubuntu 终端依次执行下列命令

sudo apt-get install dosfstools
sudo apt-get install dump
sudo apt-get install parted
sudo apt-get install kpartx

二、生成新的 img 文件

1、先df -h查看下实际使用空间然后在决定生成文件大小

df -h

在这里插入图片描述
可以看到我一共用了 51M+4.4M=55.4M 的空间,所以我弄个100M大小的 img 就足够了
2、做个 100M 的空镜像

sudo dd if=/dev/zero of=lichee_zero.img bs=1M count=100
sync

这里要写1M,1MiB也就是1024kb,这样大小不会错,如果写 kb 可能太小就会出错。
还有/dev/zero这个文件的输出全是 0,所以我现在只是有个了一个空 img 文件而已。
在这里插入图片描述
使用 hexdump 看一下前 256 个字节的数据,并且输出十六进制和对应字符

hexdump -n 256 -C lichee_zero.img

可以看到全为 0
在这里插入图片描述

三、分割虚拟磁盘

1、lichee_zero.img 会将 SD 卡里面对应的内容,填充进来
SD卡目前是分成两个部分的,一个 KERNEL,一个 rootfs
在这里插入图片描述
除此之外,在制作SD的时候,boot 部分,前面还空了一段空间,要制作 img,这些位置不能错了,查一下数据的实际位置

sudo fdisk -l

在这里插入图片描述
2、利用parted将刚才生成的虚拟盘分割成两个分区
按照实际 SD 卡的分配,将 img 划分一下

sudo parted lichee_zero.img --script -- mklabel msdos #制作一个msdos分区
sudo parted lichee_zero.img --script -- mkpart primary fat16 2048s 67583s
sudo parted lichee_zero.img --script -- mkpart primary ext4 67584s -1
sudo parted lichee_zero.img #查看分配情况

这里的size指的是MB 我分区的时候是要 32M 这里就是33.6MB
在这里插入图片描述

四、挂载虚拟磁盘并格式化

这个过程就是将 img 虚拟成 SD 卡一样,挂载到电脑,然后格式化它

1、首先建立虚拟磁盘并分区

sudo losetup /dev/loop0 lichee_zero.img
sudo kpartx -av /dev/loop0

执行 sudo losetup /dev/loop0 lichee_zero.img 报错了,显示设置回环设备失败: 设备或资源忙
在这里插入图片描述

ll /dev/loop*

查看了一下, loop设备编号挺多的:在这里插入图片描述
解决办法:
使用命令 sudo losetup -f 自动查找空闲的设备

sudo losetup -f 

在这里插入图片描述
重新设置到找出的空闲设备上

sudo losetup /dev/loop21 lichee_zero.img
sudo kpartx -av /dev/loop21

在这里插入图片描述

2、格式化虚拟磁盘分区

现在还没有磁盘,因为都是空的,需要格式化,写入文件系统的相关数据进去

sudo mkfs.msdos /dev/mapper/loop21p1
sudo mkfs.ext4 /dev/mapper/loop21p2

在这里插入图片描述
能查询到挂载的设备

ls /dev/mapper

在这里插入图片描述
电脑上多出两个盘符,内容是空的
在这里插入图片描述

五、开始备份

1、我这里将 SD 卡里面的东西拷贝出来放到 image_file 里面
接下来就是 SD 卡里面有什么,就让 img 里面有什么就行了

ls
tree -L 2

在这里插入图片描述
2、烧录uboot

sudo dd if=./uboot/u-boot-sunxi-with-spl.bin of=/dev/loop21 bs=1024 seek=8
sync

在这里插入图片描述
3、拷贝 kernel

sudo mount /dev/mapper/loop21p1 /mnt/	# 挂载
sudo  cp ./kernel/* /mnt	# 内容拷贝
sudo umount /mnt	# 卸载

在这里插入图片描述
4、拷贝 rootfs

sudo mount -t ext4 /dev/mapper/loop21p2 /mnt/	# 挂载
sudo cp -rf ./rootfs/* /mnt/	# 内容拷贝
sudo umount /mnt	# 卸载

在这里插入图片描述

六、卸载虚拟磁盘

sudo kpartx -d lichee_zero.img

七、dd 烧录系统

1、格式化SD卡
在这里插入图片描述
格式化成功
2、烧录
将 lichee_zero.img 文件烧录到 SD 卡
在这里插入图片描述
烧录成功
在这里插入图片描述

八、运行测试

把 SD 卡插到板子上运行
在这里插入图片描述
参考文章:
https://www.cnblogs.com/ZQQH/p/8453763.html
https://blog.csdn.net/Jun626/article/details/100008516


我的qq:2442391036,欢迎交流!



http://www.kler.cn/a/16824.html

相关文章:

  • 基于微信小程序的农场管理系统的设计与实现,LW+源码+讲解
  • Docker 篇-Docker 详细安装、了解和使用 Docker 核心功能(数据卷、自定义镜像 Dockerfile、网络)
  • 【计算机网络】UDP网络程序
  • kafka面试题解答(四)
  • DataWorks on EMR StarRocks,打造标准湖仓新范式
  • WebGIS三维地图框架--Cesium
  • 兴寿镇“春踏青,兴寿行”特色旅游线路点靓辛庄
  • 【Python入门知识】NumPy数组迭代及连接
  • 2.rabbitMQ之交换机
  • 【SCI征稿】中科院2区SCI,CCF推荐,评职代表作首选快刊
  • LC正弦波振荡器【高频电子线路】【Multisim】
  • thread-最佳时间
  • BetaFlight统一硬件配置文件研读
  • PAT A1012 The Best Rank
  • iOS---iOS10适配iOS当前所有系统的远程推送
  • Ansible的基础了解
  • docker容器:本地私有仓库、harbor私有仓库部署与管理
  • 【Unity入门】24.碰撞检测
  • 滴水逆向三期笔记与作业——02C语言——02数据类型
  • JDBC详解(四):操作BLOB类型字段(超详解)
  • Python做个猫狗识别系统,给人美心善的邻居
  • matlab for循环详解
  • 其他自定义代码片段
  • 设计模式--装饰者模式
  • JSP+Struct+MySql基于BBS管理系统设计与实现(源代码+论文+中英资料+开题报告+答辩PPT)
  • Java 怎样实现代理模式,有什么优缺点