U-Boot加载 Easy Installer

上一篇 / 下一篇  2018-06-06 17:07:36

By Toradex胡珊逢

1). 简介

Toradex在去年推出了Toradex Easy Installer 操作系统安装工具。用户借助该工具能够以图形化界面的操作方式,在Toradex的 Arm 计算机模块上方便地安装所需的操作系统,如 Linux、WinCE 以及Toradex合作伙伴提供的其他系统包括 QNX、安卓等。这极大降低了用户安装嵌入式系统的难度,同时也让产品的量产编程变得简单。


对于已经使用Toradex Easy Installer 安装完系统的用户,如果仍旧想要借助Toradex Easy Installer 更新系统,需要进入 Arm 计算机模块的恢复模式,连接 USB 接口至电脑。这种连接方法在有些场合下可能并不容易实现和操作。Linux 用户则可以使用 U-Boot 的distroboot 功能,直接从外部存储介质上启动 Toradex Easy Installer,并进行系统安装。通过这种方法可以实现本地更新系统。下面将介绍如何在 Toradex 的 Arm 计算机模块上使用该功能。


2). 启用 U-Boot distroboot 功能

Toradex 默认的 U-Boot 并没有启用 distroboot,需要在对应模块的配置文件添加 CONFIG_DISTRO_DEFAULTS,例如 Colibri iMX6 模块在 colibri_imx6_defconfig 末尾添加

---------------------------------

u-boot-toradex/configs/colibri_imx6_defconfig

CONFIG_DISTRO_DEFAULTS=y

---------------------------------


然后重新编译生成 U-Boot 并更新到模块

---------------------------------

user@user-pc:~/Toradex/u-boot-toradex$ make colibri_imx6_defconfig

user@user-pc:~/Toradex/u-boot-toradex$ make -j4

---------------------------------


3). 制作启动文件

Toradex U-Boot distroboot 支持从 U 盘、SD 卡或者网络(tftp)启动。你需要在 U 盘、SD 卡或者 tftp 根目录下存放 boot.scr 等相关文件。Toradex Easy Installer 已经包含所有的文件,解压后复制到对应目录即可。


Toradex Easy Installer 也是基于 Linux ,常用的 cmdline 同样也适用。如果你需要在 Toradex Easy Installer 启动时加载其他功能,例如修改 device tree,启用电容触摸屏功能,可以创建如下 boot.cmd 文件

---------------------------------

# Set timings for 7" multitouch

setenvbootargs console=ttymxc0,115200 quiet video=mxcfb0:dev=lcd,FusionF07A,if=RGB666 rootfstype=squashfs root=/dev/ram autoinstallfullscreen ${teziargs}

# Reenablefdt relocation since in place fdt edits corrupt the ramdisk

# in a FIT image...

setenvfdt_high

# Load FIT image from location as detected by distroboot

load ${devtype} ${devnum}:${bootpart} ${ramdisk_addr_r} ${prefix}tezi.itb

bootm start ${ramdisk_addr_r} &&bootmloados&&bootmramdisk&&bootmfdt

# Enable capacitive multitouch driver

fdt set /soc/aips-bus@02100000/i2c@021a8000/atmel_mxt_ts@4a status okay

bootm prep &&bootm go

---------------------------------


然后生成用于启动的 boot.scr

---------------------------------

user@user-pc:~/$ mkimage -A arm -O linux -T script. -C none -a 0 -e 0 -n "Distro boot script" -d boot.cmd boot.scr

---------------------------------


4). U-Boot 启动 Toradex Easy Installer

将准好的 U 盘、SD 卡连接至 Toradex Arm 计算机模块,进入 U-Boot 命令模式,运行下面命令将启动 Toradex Easy Installer,而无需连接电脑并进入模块的恢复模式。

---------------------------------

Colibri iMX6 # rundistro_bootcmd

---------------------------------


在 Toradex Easy Installer 中你可以更新操作系统。


默认情况下上电启动后 U-Boot 会直接加载模块 Flash 上 Linux 内核并启动。我们可以修改 U-Boot 参数,使其优先从外部介质上的文件启动。在没有连接启动 SD 卡或者 U 盘的情况下再从模块上的 Flash 启动所安装的系统。由于网络 tftp 启动有一定的超时等待时间,为了不影响系统启动时间,我们将禁用 tftp 启动功能,保留从 SD 卡或者 U 盘寻找启动文件。

---------------------------------

Colibri iMX6 # setenvboot_targets 'mmc1 usb0'

Colibri iMX6 # setenvbootcmd 'run distro_bootcmd ; run emmcboot ; echo ; echo emmcboot failed ; usb start ;setenvstdoutserial,vga ; setenvstdinserial,usbkbd'

Colibri iMX6 # saveenv

---------------------------------


同时结合 Toradex Easy Installer 的 autoinstall 功能,我们可以实现 U-Boot 启动 Toradex Easy Installer 后自动安装指定的操作系统。例如在 SD 卡存放 Toradex Easy Installer 所有的启动文件,并在根目录下创建 Colibri-Imx6_Console-Image-Tezi_2.7b5 文件夹,启动存放所要安装系统的 tezi 格式镜像文件和配置文件等,如下面 SD 卡上的文件。

image001.png


通过上面的配置,默认情况下 Colibri iMX6 将从启动 Flash 上的 Linux 系统,然后正常运行用户的应用程序。如果插入包含 Toradex Easy Installer 启动文件和用户镜像安装文件的 SD 卡或者 U 盘,那么 Colibri iMX6 自动更新所要安装的系统。


5). 总结

借助 U-Boot distroboot 和 Toradex Easy Installer 自动安装功能,用户可以实现 SD 卡或者 U 盘本地更新操作系统。需要注意的是,由于默认的 U-Boot distroboot 没有验证启动文件 boot.scr 合法性的功能,在使用优先从外部介质上的启动时,任何可以在 Arm 计算机模块上启动的系统都可以通过 boot.scr 被加载执行。从而在模块执行其他功能的系统,甚至是带有恶意功能的软件。因此在使用 distroboot 功能时,建议用户根据自己安全需求,修改 U-Boot 代码,防止非法程序在平台上运行。






参考:

https://developer.toradex.com/software/toradex-easy-installer#configuration-files



TAG: ARM Arm arm easy Toradex toradex Easy Installer

 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

Open Toolbar
博聚网