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

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

目录
相关文章
荔枝派Zero(全志V3S)运行Qt5程序
本文重新配置 buildroot,利用 buildroot 重新交叉编译 Qt,编译完成后将编译产生的可执行文件拷贝到 SD 卡,板子上电后跑到文件系统下再手动运行。
190 0
|
4月前
|
搜索推荐
想要刻录蓝光光盘吗? 快来了解最好的蓝光刻录软件!
在数字娱乐蓬勃发展的今天,追求高清震撼的视听体验已成为趋势。面对众多高清视频制作工具的选择难题,DVDFab Blu-ray Creator脱颖而出,被誉为最佳蓝光刻录软件。它不仅支持多种视频格式输入(如MP4, MKV)及高清1080p输出,还能制作个性化菜单,兼容不同输出介质(BD-R, BD-RE等)。只需几步即可完成从视频导入到成品输出的全过程,无论是家庭回忆还是专业项目都能完美呈现。
|
5月前
HarmonyOS-UIAbitity-Text——【坚果派-红目香薰】
HarmonyOS-UIAbitity-Text——【坚果派-红目香薰】
24 0
|
开发者
用D3制作一个旋转的大风车SVG庆祝国际儿童节
写于2023年的六一国际儿童节,用D3做一个大风车庆祝一下这个快乐的节日,借此机会介绍一下SVG滤镜的使用,代码也是非常简短的
105 0
用D3制作一个旋转的大风车SVG庆祝国际儿童节
|
Linux Windows
荔枝派Zero(全志V3S)驱动开发之USB摄像头 2
荔枝派Zero(全志V3S)驱动开发之USB摄像头
168 0
|
Ubuntu Linux
荔枝派Zero(全志V3S)驱动开发之USB摄像头 1
荔枝派Zero(全志V3S)驱动开发之USB摄像头
167 0
|
Linux
荔枝派Zero(全志V3S)基于QT实现在LCD显示图片
有这样一个需求,通过配置 QT,在 linux 下实现显示我所想要显示的图片,实现的方式是我可以在命令行将图片的路径作为入参传入进去,从而对其进行显示,在之前的文章中已实现了在板子上运行 QT5 程序,此需求要自己写个 QT 程序,且需要对 buildroot 进行裁剪支持一些常用的图片格式即可。
349 2
|
存储 编解码 Linux
荔枝派Zero(全志V3S)驱动开发之RGB LCD屏幕显示bmp图片
了解 framebuffer 字符设备 了解 bmp图片格式 通过操作 /dev/fb0 字符设备来实现在 RGB LCD 屏幕上显示 bmp 图片。
422 1
|
Linux 编译器 调度
荔枝派Zero(全志V3S)编译rootfs
rootfs翻译过来就是根文件系统。顾名思义,它属于文件系统范畴,文件系统的作用就是用来管理、储存文件的。文件的概念对于linux来说很重要,不是有一句话叫”一切皆文件“,Linux的一切行为与操作都反映在文件上。
444 0
|
编译器 Linux
荔枝派Zero(全志V3S)驱动开发之RGB LCD屏幕显示jpg图片
由于从上篇博文 “荔枝派Zero(全志V3S)驱动开发之RGB LCD屏幕显示bmp图片” 中只实现了显示 bmp 图片,实际上我们很常用到的图片多数是 jpg 格式图片,因此我们需要折腾一下,实现 jpg 文件的显示。
209 0