mkimage.sh解析
sudo ./make_sdimage.py -f -P preloader.img,u-boot.img,num=3,format=raw,size=10M,type=A2 -P rootfs/*,num=2,format=ext3,size=900M -P zImage,u-boot.scr,soc_system.rbf,socfpga.dtb,num=1,format=fat32,size=90M -s 1G -n sdcard.img
这里-P代表一个分区,num代表分区编号,format代表分区的格式,size代表分区大小,-n代表生成镜像的名称,-s代表整个系统镜像大小。
将mkimage.sh改成
sudo ./make_sdimage.py -f -P preloader.img,u-boot.img,num=3,format=raw,size=10M,type=A2 -P rootfs/*,num=2,format=ext3,size=14G -P zImage,u-boot.scr,soc_system.rbf,socfpga.dtb,num=1,format=fat32,size=90M -s 15G -n sdcard.img
烧写SD卡镜像步骤提示:1、先用sudo fdisk -l 找到SD卡所在的硬件位置(类似/dev/sdb),再使用df -h查看sd卡是否已经被使用(挂载),如果被挂载需要使用umount卸载,时sd卡设备处于空闲中,接着用dd命令将linux的镜像文件拷贝到SD卡中(小技巧:可以在另外一个终端观察运行情况,使用 sudo watch kill -USR1 $(pgrep ^dd) watch观察命令的运行,kill命令发送一段信号,-USR1是dd专用的信号,它接收到该信号,就会显示刻录的进度。)。
发现生成SD卡镜像的时候有的时候会失败,提示losetup sdcard.img failed to set up loop device Resource temporarily unavailable,error failed to get a loopback device,原因不明,有的时候多编译几次就能成功。尝试了制作更大容量的SD卡,10G的,但是需要烧录的时间太长,烧录过程中会断连,目前没烧成功过,怀疑是虚拟机环境不稳定,由于串口先连到windoiws环境再通过虚拟机到linux环境,途径的环境太复杂,不太好排查问题,只能想办法使环境更加单一稳定一点,下一篇文章介绍如何在windows下烧写嵌入式linux镜像sdcard.img到sd卡。