#使用dd命令创建一个 8MB 的 test.img 镜像文件。
sudo dd if=./uboot-nano-v2018.01/u-boot-sunxi-with-spl.bin of=nanopi.img bs=1024 seek=8
#解决dd命令后改变img文件大小问题,使用cat命令把后续空间扩容,然后再分区
cat nanopi.img >> nano.img
#对镜像文件进行分区
fdisk test.img
#无意义
m
#普通分区或者扩展分区
p
#分区数
1
#第一个分区的大小
2048
+32M
#
#将镜像虚拟化成块设备
sudo losetup -f --show nano.img
#挂载虚拟文件系统
sudo kpartx -av /dev/loop0
ls -l /dev/mapper/
#格式化分区
sudo mkfs.ext4 /dev/mapper/loop0p1
sudo mkfs.vfat /dev/mapper/loop0p1
sudo mkfs.ext4 /dev/mapper/loop0p2
#挂载分区
sudo mount /dev/mapper/loop0p1 /mnt
mount -l | tail -n 1
ls -la /mnt
# 卸载挂载点
>$ sudo umount /mnt
# 卸载分区
>$ sudo kpartx -d /dev/loop0
# 卸载虚拟块设备
>$ sudo losetup -d /dev/loop0
离线
昨天晚上写的匆忙,没写什么说明,今天来补一下吧。
首先这是一个分享帖,需要用到以上这种打包方式的场景为:需要在linux服务器端编译并打包好img固件,然后在linux端或者Windows端用烧录软件把打包好的img固件烧录到SD卡中。
目前能找到的F1C100S的教程里面都没用SD卡img固件的打包方式,通常的教程都是让你直接把固件写到SD卡上。我的编译环境是云端,没法实现这个操作,所以就只能用这种方法了。
整个img生成办法总共分两步。
一、建造一个img文件,相当于创建一个虚拟硬盘。使用dd命令可以创建一个虚拟的存储文件。
但是在实际操作中发现,在往创建好的img文件写入uboot的时候,img文件的大小会变小,变小幅度与uboot大小有关。这里暂时没有好的解决办法,网上也没有找到相关的说明,所以找了个临时的替代方案:在写完uboot后,用cat命令在img文件后面补一段空间。
二、把img虚拟存储分区后,将内核和根文件系统写到虚拟分区内。
有过装机经验的同学应该对分区概念非常熟悉了,img文件在这里相当于一个没有分区过的新硬盘,需要在硬盘上创建新的分区,然后把系统装C盘,把数据装D盘。
离线