简介
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,也可以调整为其他格式类型。
首先解压 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 能够允许用户直接在设备上运行,便于恢复或者更新系统。