By Toradex胡珊逢
简介
Toradex Easy Installer 是 Toradex 计算机模块上出厂预装的软件,可以令开发人员首次安装不同的操作系统,同时也适生产线上模块的批量烧写作业。通常在安装系统后,Toradex Easy Installer 将被从模块的存储上擦除。本文将介绍如何使 Toradex Easy Installer 常驻在存储,并用其重装系统。
实现该操作的方法为在存储设备上创建一个专门存放 Toradex Easy Installer 的分区。每次安装系统时将 Toradex Easy Installer 写入到该分区。由于 Toradex 的 U-Boot 支持 distro_boot 功能,通过修改默认的启动命令,令 U-Boot 在启动时加载 Toradex Easy Installer 而不是 Linux 系统。
硬件介绍
这里使用 Apalis iMX6 模块进行演示。Apalis iMX6 的 eMMC 存储做如下分区规划。
Parition 1 | Parition 2 | Parition 3 | Parition 4 |
FAT32 | EXT4 | FAT32 | EXT4 |
bootfs | rootfs | tezi | user data |
第一个分区是用于存放 Linux kernel、 device tree 等文件,格式为 FAT。第二个是 Linux 的系统文件,格式 EXT4。第三个则是 Toradex Easy Installer 的相关文件,格式为 FAT。第四个是用户文件分区,这里格式为 EXT4,也可以调整为其他格式类型。
Toradex Easy Installer 更改
Toradex Easy Installer 中的 image.json 文件可以在安装系统时对存储进行分区操作,为每个分区写入对应的文件,从而实现上面规划的分区。这里我们以 Linux BSP v5.7和 Toradex Easy Installer v5.7为例,创建一个系统安装包,使其同时包含上面两个系统。
首先解压 Linux BSP 的安装文件夹,在 image.json 文件的blockdevs
下面有一个partitions
变量,这里可以指定需要创建的分区。其中label
为BOOT
和RFS
对应上面的第一和第二分区。接下来在partitions
中添加label
为TEZI
和DATA
两个分区。TEZI
分区中写入 tezi_on_emmc.tar.xz 文件。关于 image.json 配置的详细说明请参考这里。tezi_on_emmc.tar.xz 中包含了 Toradex Easy Installer 相关启动文件。解压上面下载的 Toradex Easy Installer 文件,由于不需要在恢复模式下加载,因此删除其中的 recovery 文件夹后,重新压缩其他内容。
$ cd /Apalis-iMX6_ToradexEasyInstaller_5.7.3+build.17
$ rm -rf recovery
$ tar -cJf ../tezi_on_emmc.tar.xz .
DATA
分区可以存储用户自己的数据,如应用程序或者配置文件,将其同样也打包为 EZ2files.tar.xz 文件,在安装时写入 DATA 分区。
将准备好的 tezi_on_emmc.tar.xz 和 EZ2files.tar.xz 文件都复制到解压后 Linux BSP 的安装文件夹中可以看到有如下文件。
$ tree
.
├── EZ2files.tar.xz
├── image.json
├── LA_OPT_NXP_SW.html
├── marketing.tar
├── prepare.sh
├── Reference-Minimal-Image-apalis-imx6.bootfs.tar.xz
├── Reference-Minimal-Image-apalis-imx6.tar.xz
├── SPL
├── tezi_on_emmc.tar.xz
├── toradexlinux.png
├── u-boot.img
├── u-boot-initial-env-spl
└── wrapup.sh
将上面系统安装到 Apalis iMX6 模块,重新启动后可以看到 eMMC 上存在四个分区。
mmcblk2p3 上即为存放 Toradex Easy Installer 相关文件。启动时加载该分区上的 boot-tezi.scr 便能够运行。
修改 U-Boot 启动参数
U-Boot 中默认的启动参数 distro_bootcmd
最终寻找到 BOOT 分区下的 boot.scr 文件,进而启动 Linux 系统。为了加载 TEZI 分区上的 boot-tezi.scr,在 Linux 系统中运行下面命令,修改 bootcmd
参数。Linux BSP 安装文件中的 u-boot-initial-env-spl 会在系统安装期间将 bootcmd
重新修改会默认设置,所以当安装完毕后不会再次启动 TEZI 分区上的 Toradex Easy Installer。
$ fw_setenv boot_TEZI 'setenv devtype mmc; setenv devnum 0; setenv distro_bootpart 3;
setenv bootfstype fat; setenv prefix /; load mmc 0:3 ${scriptaddr} /boot-tezi.scr; source ${scriptaddr}'
$ fw_setenv bootcmd "run boot_TEZI"
$ sync
$ reboot -f
运行上面命令并重启后,Apalis iMX6 会启动 eMMC 上的 Toradex Easy Installer。此时,用户可以再次安装系统,而不必进入恢复模式。
总结
常驻在 eMMC 上的 Toradex Easy Installer 能够允许用户直接在设备上运行,便于恢复或者更新系统。