嵌入式Linux SD系统启动卡制作方法

2019-07-12 18:02发布

SD 卡启动是开发板系统启动方式的一种。 SD 系统启动卡共有 FAT32、 EXT3 两个格式分区,还包含 RAW 格式的无名分区。其中 FAT32 格式分区在 Windows 系统下可见,EXT3 格式分区在 Windows 系统下不可见,两分区在 Linux 系统下均可见。无名分区在Windows 和 Linux 操作系统下均不可见。 无名分区存放 u-boot.ais, FAT32 格式分区存放内核文件 uImage、系统启动脚本等文件, EXT3 格式分区存放文件系统。
开发板出厂时已经提供一个正常使用的 Linux SD 系统启动卡,以下步骤是 Linux SD系统启动卡的制作过程
注:
启动卡的制作需要用到uboot里面的制作工具mkimage,需要先安装mkimage。 两种途径得到mkImage工具uImage:
解决方法:
方法一:
安装mkimage工具,载ubuntu11.10下执行以下命令进行安装:
#sudo apt-get install uboot-mkimage
方法二:
编译uboot源码,编译成功后载uboot/tools目录下会生成mkimage工具,将mkimage工具拷贝到/usr/bin/目录下即可。
1 SD 系统启动卡制作步骤
(1) 将光盘 images 目录 u-boot.ais、 uImage 文件拷贝到光盘”shell/mksdboot-tl/boot”目录中,将光盘 Linux 目录 rootfs.tar.bz2 文件系统拷贝到光盘”shell/mksdboot-tl/filesystem”目录中, 然后将整个 mksdboot-tl 目录拷贝到 Ubuntu 任意目录下。
图1
(2) 将 SD 卡插入到 Ubuntu, 系统会自动弹出 SD 卡分区。
图2
( 3) 输入如下命令(先不要按回车):
Host# ls /dev/sd, 再按 2 次左上角的 Tab 补全键,显示如下:
这里写图片描述
可以看到 SD 卡节点的真正名字是 sdb,其中有 1 个分区,分区名字是 sdb1。 SD 卡节点名字是可变的,一般插拔多次或者不同的卡插拔后,可能会显示 sdc 或者 sdd 甚至sde。 ( 4) 在 mksdboot-tl 目录下执行以下命令制作 SD 启动卡:
Host# sudo ./mksdboot-tl.sh –device /dev/sdb
备注: SD 卡如错误输入其他存储介质的节点名,将会造成存储介质数据的损坏。
这里写图片描述
等待 3~5 分钟左右, SD 系统启动卡制作完成,提示如下类似信息:
这里写图片描述
备注: SD 卡和读卡器质量会影响正常分区,若不能正常分区,请更换 SD 读卡器或者 SD卡。 2 SD 系统启动卡制作脚本作用说明
SD 系统启动卡制作脚本作用如下:
( 1) 将 SD 卡格式化成无名分区( RAW 格式)、 boot 分区( FAT32 格式)和 rootfs分区( EXT3 格式)。
在 SD 系统启动卡制作完成后重新插拔一下 SD 卡, 即可看到 Ubuntu 桌面出现 boot分区和 rootfs 分区,而无名分区不可见。
( 2) 拷贝 mksdboot-tl 目录相关文件到 SD 卡对应分区。
“mksdboot-tl/boot” 目 录 下 的 u-boot.ais 文 件 被 烧 写 到 SD 卡 无 名 分 区 ;”mksdboot-tl/boot”目录下所有文件被拷贝到 SD 卡 boot 分区; “mksdboot-tl/filesystem”目录下”.tar.bz2”格式文件系统被解压到 SD 卡 rootfs 分区。 如有更换文件系统,后缀务必为”.tar.bz2”格式。
( 3) 在 boot 分区生成 SD 卡启动脚本源文件和 SD 卡启动脚本镜像。
SD 卡启动脚本源文件是 boot.cmd, SD 卡启动脚本镜像是 boot.scr。 boot.cmd 由 SD系统启动卡制作脚本产生, boot.scr 由 boot.cmd 通过 SD 系统启动卡制作脚本编译得到。
默认的 SD 卡启动脚本参数可打开 boot.cmd 文件查看:
图10
如需更换 SD 卡启动脚本,请参考 SD 卡启动脚本制作方法章节。 如在开发过程中只更新 u-boot.ais,可以使用如下命令单独烧写 u-boot.ais 到 SD 卡无
名分区:
Host# sudo dd if=u-boot.ais of=/dev/sdb seek=10
图11
重新插拔 SD 卡后不能直接拔掉 SD 卡, 为防止数据丢失,请使用如下命令卸载:
Host# umount /media/boot
Host# umount /media/rootfs
以上命令会先将数据写回才卸载 SD 卡。
3 检查 SD 系统启动卡是否可以正常使用
开发板断电,将开发板的拨码开关编号 1~5 对应拨到 00111,这个档位是 SD 卡启动模式。 连接好调试串口 UART2, 开发板上电,串口会有类似如下的启动信息。如有接LCD 显示屏,将会有系统界面出现。
图12 4 SD 系统启动卡恢复为普通 SD 卡方法
SD系统启动卡恢复为普通 SD卡的方法是在 Linux 下使用硬盘 fdisk命令删除多个 SD
卡分区后新增一个分区, 再将新增分区格式化为普通 SD 卡分区,具体步骤如下:
( 1) 卸载 SD 卡分区。
在使用 fdisk 命令前,请使用如下命令卸载 boot 分区和 rootfs 分区:
Host# umount /media/boot
Host# umount /media/rootfs
( 2) 确认 SD 卡节点名字。
输入如下命令(先不要按回车):
Host# ls /dev/sd, 再按 2 次左上角的 Tab 补全键,显示如下:
图13
可以看到 SD 卡节点的真正名字是 sdb,其中有 2 个分区, 分别是 sdb1 和 sdb2。 SD
卡节点名字是可变的,一般插拔多次或者不同的卡插拔后,可能会显示 sdc 或者 sdd 甚至
sde。
( 3) 删除 SD 卡分区。
执行如下命令开始对 SD 卡进行操作:
Host# sudo fdisk /dev/sdb
图 14
输入 m, 可看到所有 fdisk 命令操作指令。
图15
先后输入 d 和 1, 即可删除第一个分区。
图16
输入 d, 即可删除第二个分区。
图17
( 4) 增加一个新分区。
先后输入 n、 p、 1、回车键、回车键, 即新增一个分区。
图18
( 5) 保存分区修改。
输入 w,即可保存分区修改。
图19
( 6) 格式化为普通 SD 卡格式分区,命令如下:
Host# sudo mkfs.vfat /dev/sdb1
图20