制作 img系统镜像的详细方法

      I.MX6开发板目前支持从TF卡和eMMC启动,启动时,由于各个不同的启动文件对路径有不同的要求,例如uboot文件要求位于启动设备的某个块,dtb文件要求在FAT分区上,文件系统要求在Linux分区上,基于此,我们目前采用将映像制作成img文件的方式,这样可以更简单完成对启动卡的制作。

关于如何制作img,方法如下:


方法一  Windows下面利用Win32工具

1.   准备我司提供的img文件,假设文件名:EVK-SM9300.img(注意img所在目录的目录名不能有中文)

2.   准备一张MicroSD卡,用读卡器连接至电脑,假设被识别为H盘

3. 运行Win32DiskImager.exe

  

4.   选择需要烧写的映像文件:EVK-SM9300.img和移动设备

5.   点击“Write”按钮,img文件将被写至MicroSD卡。

6.   根据需求修改对应的文件:

1)Uboot的修改方法:在Linux下执行以下命令将新的u-boot.imx

sudodd if=u-boot.imx of=/dev/sdx bs=512 seek=2 conv=fsync

其中/dev/sdx为MicroSD设备名,请根据实际进行修改

2)Dtb和zImage文件的修改:将文件拷贝至MicroSD卡的FAT分区

3)文件系统的修改:在Lnux下挂载MicroSD卡的第二分区,根据需求修改文件

7.   新建一个文本文档a.txt,然后重命名为a.img

8.   确保MicroSD卡被读卡器连接至电脑

9.   再次运行Win32DiskImager.exe,选择a.img和MicroSD卡的盘符(如H盘),然后单击“Read”按钮,当提示完成时,即成功生成新的img文件a.img


在Linux下制作img文件

在Ubuntu下制作img文件

1.   执行以下命令安装一些制作img时需要用到的工具

sudo apt-get install util-linux kpartx dosfstools e2fsprogsgddrescue qemu-utils

2.    执行以下指令创建一个新的img文件,大小请根据需求,但请注意img越大,之后烧写的时间会越久,假设img500MB

Sudo qemu-img create bbb.img 500M

3.    执行以下指令为空的img文件创建两个分区,第一个分区为“W95 FAT16,大小为48MB,第二分区为Linux

sudo sfdisk --in-order --Linux --unit M a.img << EOF

1,48,0xE,*

,,,-

EOF

4.   执行以下指令

sudo kpartx -av bbb.img

系统将输出以下提示信息

add map loop0p1 (252:0): 0 98304 linear /dev/loop0 2048

add map loop0p2 (252:1): 0 923648 linear /dev/loop0100352

可以发现设备被命名为loop0

5.   执行以下指令对a.img的两个分区进行格式化

sudo mkfs.vfat -F 16 /dev/mapper/loop0p1 -n boot

sudo mkfs.ext4 /dev/mapper/loop0p2 -L rootfs

6.   执行以下指将uboot写入img

sudo dd if=u-boot.imx of=/dev/mapper/loop0 bs=512 seek=2 conv=fsync

7.   执行以下指令挂载a.img的两个分区

mkdir -p tmpmnt/boot

mkdir -ptmpmnt/rootfs

sudo mount /dev/mapper/loop0p1 tmpmnt/boot/

sudo mount /dev/mapper/loop0p2 tmpmnt/rootfs/

8.    zImagedtbuEnv.txt文件拷贝至第一个分区

9.    rootfs放到第二分区

10.  执行以下命令完成a.img的制作

sudo umount tmpmnt/boot/

sudo umounttmpmnt/rootfs/

sudo kpartx -dvbbb.img




展开阅读全文

没有更多推荐了,返回首页