Com335X:手动制作SD卡启动盘
开始准备条件:
* Com335x评估板(含电源线,串口调试线,网线)
* PC一台,带串口和网口。
* 网络Hub一个,或者PC和Com335x能接入同一个局域网即可。
* SD卡一张(容量小于16G,以8G最好)。
1、在PC机上打开并启动Linux操作系统。
2、将资料中emmc文件夹下的sd-boot.tar.gz、sd-rootfs.tar.gz以及creat-sdcard.sh文件拷贝到Linux操作系统中的一个目录下(可使用FileZilla Client进行Window和Linux互传文件),笔者这里将放在/home/liping/linux/evb335x/emmc/tf_linux目录下。
(注意:其中 sd-boot.tar.gz是包括了MLO、u-boot.img、uImage、logo.bmp、uEnv.txt文件的压缩包,sd-rootfs.tar.gz则是文件系统源码的压缩包,creat-sdcard.sh是制作TF卡启动盘的脚本文件。)
3、将SD卡通过读卡器接入电脑并连接到linux操作系统中,此时linuxx系统会自动挂载SD卡,笔者的SD卡有两个分区如图所示:(注意:尽量选择稳定的SD卡和读卡器,否则在制作SD卡启动盘过程中,SD卡可能会自动卸载再挂载,导致制作过程出错。)
4、先umount SD卡的分区
$ umount /media/liping/boot
$ umount /media/ liping/rootfs
注意:卸载时,通过查看挂载的SD卡属性来看挂载在哪里,不能使用/dev/sdb1和/dev/sdb2进行umount,否则会出错。可以使用mount命令或者ls /dev/sd*来查看挂的设备有哪些。
5、对SD卡进行分区
$sudo fdisk /dev/sdb
1)输入选项m并按下回车,列出fdisk命令列表:
主要命令说明:
1. 输入 m 显示所有命令列示。
2. 输入 p 显示硬盘分割情形。
3. 输入 a 设定硬盘启动区。
4. 输入 n 设定新的硬盘分割区。
5. 输入 e 硬盘为[扩展]分割区(extend)。
6. 输入 p 硬盘为[首要]分割区(primary)。
7. 输入 t 改变硬盘分割区属性。
8. 输入 d 删除硬盘分割区属性。
9. 输入 q 结束不存入硬盘分割区属性。
10. 输入 w 结束并写入硬盘分割区属性。
11. 输入x 进入扩展命令模式。
输入命令 p ,查看SD卡具体详细:
从上面的信息看,当前的SD卡总共有7.5GB,8053063680字节,15728640个扇区,并且有两个分区(这是笔者之前分好的,这些信息会根据自己的情况而定)。
2)删除所有的SD卡分区,输入命令 d,并依次输入要删除的分区号:
3)如果SD卡不是255 heads,63 sectors/track,按照以下步骤建立扇区:
输入命令扩展命令x,然后输入m,输出扩展命令列表:
然后输入命令 h,改变磁头为255:
接着输入命令 s,改变扇区为63:
接着输入命令 c,改变柱面为979:
输入命令 r,返回普通命令页面:
输入命令 p,显示SD卡信息:
4)输入命令 n,建立第一个分区(大小5G),其中空白区命令表示ENTER键:
按照提示依次输入命令:n—>p—>1—>2048—>+5G
改变分区属性,输入命令t,并且选择第一分区,输入分区类型码 c(注:c为W95 FAT32 (LBA)):
标记第一个分区为启动盘,输入命令 a 后选择分区1:
4)输入命令 n,建立第二个分区(大小为SD卡剩余空间大小),其中空白区命令表示ENTER键:
按照提示依次输入命令:n—>p—>2—>10487808—>ENTER键
5)输入 p,查看分区情况:
6)输入命令 w,保存并写入SD卡分区属性
至此,SD卡分区完毕。
接下来进行分区格式化,此时先卸载SD卡,然后重新插入到linux系统中:
6、格式化SD卡分区
1)将第一个分区格式化为FAT32格式,并将卷标设为为“boot”(注:卷标可自定义)
$ sudo mkdosfs -F 32 /dev/sdb1 -n boot
2)将第二个分区格式化为ext4格式,并将卷标设为为“rootfs”(注:卷标可自定义。此操作会消耗一点时间,请耐心等待操作完成)
$ sudo mkfs.ext4 -L rootfs /dev/sdb2
至此,SD卡分区格式化完成。可将SD卡拔出后重新插入电脑,待Linux重新识别和自动挂载SD卡。
7、拷贝系统启动文件和根文件系统到SD卡
1)进入到存放文件的目录中:
$ cd linux/evb335/emmc/tf_linux/
2)将准备好的系统启动相关文件(MLO、u-boot.img、uImage等)拷贝到boot分区,以系统启动文件放在/home/liping/linux/evb335/emmc/tf_linux/sd-boot/目录下为例:
$ sudo cp /home/liping/linux/evb335/emmc/tf_linux/sd-boot/* /media/liping/boot/
3)将准备好的根文件系统文件拷贝到rootfs分区,以根文件系统放在/home/liping/linux/evb335/emmc/tf_linux/sd-bootfs目录下为例:
$ sudo cp /home/liping/linux/evb335/emmc/tf_linux/sd-rootfs/* /media/liping/rootfs/ -a
注:若没有sd-toorfs文件夹,可以按如下命令进行创建并解压文件:
$ mkdir sd-rootfs
$ sudo tar -xvf sd-rootfs.tar.gz -C /home/liping/linux/evb335/emmc/tf_linux/sd-rootfs/
解压完毕后:输入以下命令查看:
$ cd sd-rootfs
$ ls
至此,SD卡启动盘制作完成。如果此时系统仍不能从SD卡启动,请在windos系统下将SD卡第一个分区格式化为FAT32,请勿选择快速格式化!然后重新拷贝系统启动文件到SD卡第一个分区即可。
特别说明:为了能够在使用SD卡启动后,通过输入命令将制作emmc启动盘,我们在制作SD卡启动盘的时候,将根文件系统sd-rootfs/emmc/文件下的emmc-rootfs在linux系统下进行解压:
$ cd sd-rootfs/emmc/
$ ls
注:若没有emmc文件下没有emmc-toorfs文件夹,可以按如下命令进行创建并解压文件:
$ mkdir emmc-rootfs
$ sudo tar -xvf rootfs_emmc_qt_cap_nologin_evb335xii.tar -C /home/liping/linux/evb335/emmc/tf_linux/sd-rootfs/emmc/emmc-rootfs/