要实现插上 USB 就优先从 USB 启动(通常用于运行 Armbian、CoreELEC 或 EmuELEC),你需要修改 U-Boot 环境变量,在默认的 storeboot 之前插入一段检查 USB 脚本的逻辑。
请在 adb shell 或串口终端中依次执行以下命令。
第一步:定义 USB 启动检测脚本
我们需要创建一个名为 start_usb_autoscript 的新变量。这段脚本的作用是:启动 USB 控制器,尝试读取 aml_autoscript 或 s905_autoscript(常见的引导脚本名),如果读取成功则执行它。
在终端中输入(建议复制粘贴以避免输错):
Bash
fw_setenv start_usb_autoscript "if usb start 0; then if fatload usb 0 1080000 aml_autoscript; then autoscr 1080000; fi; if fatload usb 0 1080000 s905_autoscript; then autoscr 1080000; fi; fi"
解释:
usb start 0: 启动 USB 控制器 0。
fatload ...: 尝试从 USB 分区读取引导脚本到内存地址 1080000(这是你环境变量中定义的 loadaddr)。
autoscr 1080000: 如果读取成功,就运行该内存地址的脚本。
如果找不到文件,脚本会结束并返回,不会卡死。
第二步:修改 bootcmd 启动顺序
现在的 bootcmd 是 run storeboot。我们要把它改成先运行刚才定义的 USB 脚本,然后再运行原来的启动逻辑。
输入:
Bash
fw_setenv bootcmd "run start_usb_autoscript; run storeboot"
第三步:验证并重启
检查修改是否生效: 输入以下命令查看 bootcmd 是否已变更:
Bash
fw_printenv bootcmd
输出应该是:bootcmd=run start_usb_autoscript; run storeboot