1、ubuntu实现SD-Flasher.exe原理
友善官方给出的烧录uboot的工具是SD-Flasher.exe,这个工具只能在windows下使用。由于本人电脑无法打开这个工具,所以在windows下无法制作sd启动卡。
看了官方文档介绍,SD-Flasher.exe原理是在sd卡前面预留130M,然后在这个空白的130M区域内烧入uboot,在ubuntu下可以使用fdisk和dd命令实现同样的操作。
2、格式化sd卡
在进行该操作前,需要先将sd卡分区,使用fdisk命令进行分区。
插入sd卡,先对sd卡进行格式化。查看sd卡在/dev下的设备名称,一般名称为/dev/sdb或者/dev/sdc等
查看sd卡挂载情况
mount -l | grep sdb
/dev/sdb1 on /media/chen/5B69-318F type vfat (rw,nosuid,nodev,uid=1000,gid=1000,shortname=mixed,dmask=0077,utf8=1,showexec,flush,uhelper=udisks2)
/dev/sdb3 on /media/chen/5BA3-8E79 type vfat (rw,nosuid,nodev,uid=1000,gid=1000,shortname=mixed,dmask=0077,utf8=1,showexec,flush,uhelper=udisks2)
可以看到我的sd卡分别挂载了1和3分区,现将这两个分区卸载
umount /media/chen/5B69-318F
umount /media/chen/5BA3-8E79
格式化sd卡成fat32格式
sudo mkfs.vfat -I /dev/sdb
清空sd卡的分区表
sudo dd if=/dev/zero of=/dev/sdb bs=512 count=1
3、制作sd启动盘:
sudo dd iflag=dsync oflag=dsync if=tiny210v2-uboot.bin of=/dev/sdb seek=1
这里seek=1,跳过sd卡第一个block,因为sd卡开始的512个字节用来存放分区表。其中tiny210v2-uboot.bin来自http://blog.csdn.net/liukun321/article/details/7438880
4、创建uboot和kernel分区
在sd卡起始130M的地方创建第一个分区,前面按照友善文档预留130M,其实可以不需要预留这么大空间。
这里我们设定第一个分区的大小为100M。
sudo fdisk /dev/sdb
Device contains neither a valid DOS partition table, nor Sun, SGI