中国电子技术网

设为首页 网站地图 加入收藏

 
 

如何制作Linux SD系统启动卡?

关键词:SD卡 boot分区 开发板

时间:2019-08-28 13:21:32      来源:网络

SD卡启动是开发板系统启动方式的一种。SD系统启动卡共有boot分区、rootfs分区和rootfs-backup分区三个分区,其中boot分区为FAT32格式、rootfs分区和rootfs-backup分区为EXT4格式。FAT32格式分区在Windows系统下可见,EXT4格式分区在Windows系统下不可见,三个分区在Linux系统下均可见。boot分区存放U-Boot、内核、设备树等;rootfs分区存放文件系统;rootfs-backup分区用于备份文件系统,系统固化时将其拷贝并固化到eMMC。

1 SD系统启动卡说明

SD卡启动是开发板系统启动方式的一种。SD系统启动卡共有boot分区、rootfs分区和rootfs-backup分区三个分区,其中boot分区为FAT32格式、rootfs分区和rootfs-backup分区为EXT4格式。FAT32格式分区在Windows系统下可见,EXT4格式分区在Windows系统下不可见,三个分区在Linux系统下均可见。boot分区存放U-Boot、内核、设备树等;rootfs分区存放文件系统;rootfs-backup分区用于备份文件系统,系统固化时将其拷贝并固化到eMMC。

开发板出厂时已经提供一个正常使用的Linux SD系统启动卡。以下步骤是Linux SD系统启动卡的制作过程。

l 操作环境:

Ubntu 14.04.3 64bit

l 制作文件说明

制作文件为光盘“ShellLinux-4.4.19-mksdboot.tar.gz”压缩包,基于Linux-4.4.19内核,适用于TL5728-EasyEVM、TL5728-IDK。

根据制作文件制作的SD卡默认支持TL5728-EasyEVM开发板,若要支持其它型号开发板,需要设置系统启动的U-Boot环境变量。

2 SD系统启动卡制作步骤

2.1 拷贝启动卡制作文件到Ubuntu

打开Ubuntu,执行如下命令创建“/home/tronlong/AM57xx/Linux-4.4.19-mksdboot”目录,将光盘“ShellLinux-4.4.19-mksdboot.tar.gz”压缩包复制到该目录下,进入制卡压缩包所在路径执行如下指令将其解压到当前目录:

Host#        mkdir -p /home/tronlong/AM57xx/Linux-4.4.19-mksdboot

Host#        cd /home/tronlong/AM57xx/Linux-4.4.19-mksdboot

Host#        tar -xvf Linux-4.4.19-mksdboot.tar.gz -C .

解压后的Linux-4.4.19-mksdboot文件夹内容结构大致如下图:

boot目录:

该目录下的MLO、u-boot.img和uEnv.txt文件会复制到SD卡的boot分区,该目录下的zImage文件和dtb目录下的全部文件会复制到SD卡rootfs分区的boot目录下。

Ø MLO:U-Boot一级启动镜像;

Ø u-boot.img:U-Boot二级启动镜像;

Ø zImage:Linux内核镜像;

Ø dtb目录:存放.dtb设备树文件,由内核编译步骤产生。

filesystem目录:

该目录存放了将要复制到SD卡rootfs分区的文件系统。

Ø modules目录:内核驱动压缩包,和内核版本对应;

Ø product-test目录:生产测试压缩包,会解压到rootfs分区的opt目录下;

Ø rootfs目录:存放根文件系统压缩包;

Ø tools目录:tools目录里存放着部分shell脚本,会被复制到SD启动卡的boot分区;

Ø mksdboot.sh:Linux SD系统启动卡制作脚本。

以上文件如需替换,务必保证命名、格式与原文件保持一致。

2.2 识别SD卡

将Micro SD卡通过读卡器连接到计算机,虚拟机Ubuntu系统识别后会自动识别SD卡分区,如下图所示:

如果没有自动识别,请右击右下角的USB大容量存储设备图标,再点击“Connect (Disconnect from Host)”。

如果没有以上图标或者连接不成功,请尝试如下方法:

l 请将Micro SD卡通过读卡器插到USB 2.0接口,而不是USB 3.0接口,部分版本VMware可能不支持USB 3.0。

l 请将Micro SD卡插在PC上,然后重启Ubuntu,在Ubuntu重启过程中不要拨出来,开机后图标会重新出现。

2.3 确认SD卡设备节点名

执行如下命令,确认SD卡设备节点名:

Host#        sudo fdisk -l

可以看到SD卡设备节点是sdb,其中有1个分区,分区名字是sdb1。SD卡设备节点名字是可变的,一般插拔多次或者不同的卡插拔后,可能会显示sdc或者sdd甚至sde。

2.4 运行SD系统启动卡制作脚本

系统启动卡制作脚本mksdboot.sh主要有如下作用:

l 将SD卡格式化为boot分区、rootfs分区和rootfs-backup分区。

l 将rootfs文件夹中的文件系统压缩包解压安装到rootfs分区,同时还将文件系统压缩包解压备份到rootfs-backup分区。

l 将boot目录下的U-Boot镜像文件MLO、u-boot.img拷贝到boot分区。SD卡模式启动时,系统会使用boot分区U-Boot镜像文件。

l 将“boot/dtb”目录下的所有dtb设备树文件,拷贝到rootfs分区“/boot”目录。在U-Boot命令行下,通过修改环境变量board_name的参数值,系统会根据修改加载rootfs分区“/boot”目录下不同型号开发板对应的设备树文件。

l 将boot目录下的内核镜像文件zImage拷贝到rootfs分区“/boot”目录。SD卡模式启动时,系统会使用rootfs分区“/boot”目录下的内核镜像文件。

使用SD系统启动卡启动系统时,如需替换U-Boot镜像、设备树、内核镜像、文件系统,有如下方法:

(1)使用新的U-Boot镜像文件,保持文件名与原文件一致,替换SD系统启动卡boot分区下的对应文件;使用新的设备树文件,替换SD系统启动卡rootfs分区“/boot”目录下的对应文件;使用新的内核镜像文件,保持文件名与原文件一致,替换SD系统启动卡rootfs分区“/boot”目录下的对应文件,同时还需替换与新内核版本对应的内核驱动压缩包;先删除SD系统启动卡rootfs分区所有内容,再使用新的文件系统压缩包,将其解压到SD系统启动卡rootfs分区,并将设备树文件、内核镜像文件拷贝到SD系统启动卡rootfs分区“/boot”目录。

(2)使用新的U-Boot镜像文件、设备树文件、内核镜像文件、文件系统压缩包,保持文件名与原文件一致,替换SD系统启动卡制作文件目录下的对应文件,然后重新制作SD系统启动卡。

进入Linux-4.4.19-mksdboot目录下的mksdboot文件夹,执行如下命令,运行SD系统启动卡制作脚本。

Host#        cd /home/tronlong/AM57xx/Linux-4.4.19-mksdboot/mksdboot/

Host#        sudo ./mksdboot.sh --device /dev/sdb

“/dev/sdb”为SD卡设备节点。请再次确认SD卡设备节点一致,如错误输入其他存储介质设备节点,将会造成存储介质数据损坏。

按回车键,进行SD系统启动卡制作,耗时约30 min,制卡耗时跟SD卡容量和接口性能有关。SD系统启动卡制作完成,如下图所示:

2.5 从SD系统启动卡启动Linux系统

根据以上步骤制作的SD系统启动卡默认支持TL5728-EasyEVM开发板。开发板断电,将开发板的拨码开关拨为01000(1~5),这个档位是Micro SD卡(MMC1)启动模式。

使用Micro USB线连接PC和开发板的USB转串口调试口,然后将开发板上电,串口终端会打印以下启动信息,并可以成功登陆系统,说明SD系统启动卡制作成功,如下图所示:

 

 

  • 分享到:

 

猜你喜欢

  • 主 题:平稳控制与位置服务中至关重要的ADI MEMS IMU
  • 时 间:2020年07月28日
  • 公 司:Arrow&ADI

  • 主 题:ADI音频产品和方案介绍
  • 时 间:2020年07月30日
  • 公 司:ADI

  • 主 题:ADI基于ADPD188BI的烟雾探测器集成解决方案
  • 时 间:2020年08月12日
  • 公 司:Arrow&ADI