[经验] 4.【记录】Com335X:手动制作SD卡启动盘

annysky2012   2022-10-21 11:40 楼主

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卡可能会自动卸载再挂载,导致制作过程出错。)

113846z88g0jga1ovgdlnu.png

4、先umount SD卡的分区

$ umount /media/liping/boot

$ umount /media/ liping/rootfs

注意:卸载时,通过查看挂载的SD卡属性来看挂载在哪里,不能使用/dev/sdb1和/dev/sdb2进行umount,否则会出错。可以使用mount命令或者ls /dev/sd*来查看挂的设备有哪些。

113846c9x4rgi9cjwyurrs.png

5、对SD卡进行分区

$sudo fdisk /dev/sdb

113846xaleug65j2vgv5gy.png

1)输入选项m并按下回车,列出fdisk命令列表:

113846yikob4kmkossmyo1.png

主要命令说明:

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卡具体详细:

113846p3swknps0bnjuhn0.png

从上面的信息看,当前的SD卡总共有7.5GB,8053063680字节,15728640个扇区,并且有两个分区(这是笔者之前分好的,这些信息会根据自己的情况而定)。

 

2)删除所有的SD卡分区,输入命令 d,并依次输入要删除的分区号:

113846aimb660mv0c05b75.png

 

3)如果SD卡不是255 heads,63 sectors/track,按照以下步骤建立扇区:

输入命令扩展命令x,然后输入m,输出扩展命令列表:

113846ma9n1n9xrrenqn9n.png

然后输入命令 h,改变磁头为255:

接着输入命令 s,改变扇区为63:

接着输入命令 c,改变柱面为979:

113846l0i170avdrj4ivir.png

输入命令 r,返回普通命令页面:

113846jj0ubvaffgbf0gvg.png

输入命令 p,显示SD卡信息:

113846zxm8v4v4vwp8cpyv.png

4)输入命令 n,建立第一个分区(大小5G),其中空白区命令表示ENTER键:

按照提示依次输入命令:n—>p—>1—>2048—>+5G

113846q60nef5575m7u0z5.png

改变分区属性,输入命令t,并且选择第一分区,输入分区类型码 c(注:c为W95 FAT32 (LBA)):

113846pgquxlvx99x0o1qx.png

标记第一个分区为启动盘,输入命令 a 后选择分区1:

113846cuwm40zt0tm7zz0f.png

4)输入命令 n,建立第二个分区(大小为SD卡剩余空间大小),其中空白区命令表示ENTER键:

按照提示依次输入命令:n—>p—>2—>10487808—>ENTER键

113846zic13hocegw3g2cp.png

5)输入 p,查看分区情况:

113846bwfkqrrrcfirur3p.png

6)输入命令 w,保存并写入SD卡分区属性

113846j4rv72vh7sp28spg.png

至此,SD卡分区完毕。

 

接下来进行分区格式化,此时先卸载SD卡,然后重新插入到linux系统中:

6、格式化SD卡分区

1)将第一个分区格式化为FAT32格式,并将卷标设为为“boot”(注:卷标可自定义)

$ sudo mkdosfs -F 32 /dev/sdb1 -n boot

113846ta45wxajgw6j5ebb.png

2)将第二个分区格式化为ext4格式,并将卷标设为为“rootfs”(注:卷标可自定义。此操作会消耗一点时间,请耐心等待操作完成)

$ sudo mkfs.ext4 -L rootfs /dev/sdb2

113846h5ezbxbf26e035xe.png

至此,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

 

113846manxmg3gqn2tn0pn.png

注:若没有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

113846flbaumwp88o8w8hz.png

至此,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/

没有什么不可以,我就是我,不一样的烟火! 

回复评论 (1)

好详细,谢谢分享!

默认摸鱼,再摸鱼。2022、9、28
点赞  2022-10-21 17:39
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复