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

2019-07-12 14:32发布

      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.imxsudodd 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.img8.   确保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-utils2.    执行以下指令创建一个新的img文件,大小请根据需求,但请注意img越大,之后烧写的时间会越久,假设img500MBSudo qemu-img create bbb.img 500M3.    执行以下指令为空的img文件创建两个分区,第一个分区为“W95 FAT16,大小为48MB,第二分区为Linuxsudo sfdisk --in-order --Linux --unit M a.img << EOF1,48,0xE,*,,,-EOF4.   执行以下指令sudo kpartx -av bbb.img系统将输出以下提示信息add map loop0p1 (252:0): 0 98304 linear /dev/loop0 2048add map loop0p2 (252:1): 0 923648 linear /dev/loop0100352可以发现设备被命名为loop05.   执行以下指令对a.img的两个分区进行格式化sudo mkfs.vfat -F 16 /dev/mapper/loop0p1 -n bootsudo mkfs.ext4 /dev/mapper/loop0p2 -L rootfs6.   执行以下指将uboot写入imgsudo dd if=u-boot.imx of=/dev/mapper/loop0 bs=512 seek=2 conv=fsync7.   执行以下指令挂载a.img的两个分区mkdir -p tmpmnt/bootmkdir -ptmpmnt/rootfssudo 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