要实现插上 USB 就优先从 USB 启动(通常用于运行 Armbian、CoreELEC 或 EmuELEC),你需要修改 U-Boot 环境变量,在默认的 storeboot 之前插入一段检查 USB 脚本的逻辑。 ; K& j' t0 C* L7 U4 w- L- z1 I+ H" l% e) {9 \ 请在 adb shell 或串口终端中依次执行以下命令。 0 q5 X0 N+ |5 x+ Z% J0 e0 g1 ? $ I9 c+ q; ~2 B; t+ S$ R" I第一步:定义 USB 启动检测脚本 5 G/ l( j2 g$ ?8 ^0 v我们需要创建一个名为 start_usb_autoscript 的新变量。这段脚本的作用是:启动 USB 控制器,尝试读取 aml_autoscript 或 s905_autoscript(常见的引导脚本名),如果读取成功则执行它。, J7 R$ p/ y$ Y* _6 b+ s 8 K3 S3 P2 k! ?, V0 @- t0 ]: ~在终端中输入(建议复制粘贴以避免输错):( x) v* m% Y6 U$ ]- o, u8 T ; T& t- ? Y/ U( G7 S7 W) g. @ Bash % q- f* [$ F6 q2 o; ]+ N, rfw_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"' R* L1 R- v' { [% ~ 1 v3 ]( f1 P4 u- z7 D" y 解释: : f, U3 c& H( B5 h/ e1 rusb start 0: 启动 USB 控制器 0。 " |) U* Z) c( J1 wfatload ...: 尝试从 USB 分区读取引导脚本到内存地址 1080000(这是你环境变量中定义的 loadaddr)。 6 Q% l" M# R7 {* {autoscr 1080000: 如果读取成功,就运行该内存地址的脚本。 8 ]: F2 C2 t( w. h如果找不到文件,脚本会结束并返回,不会卡死。3 L6 v9 z5 f* d \ / V6 ], X9 K, Y5 a! A+ [第二步:修改 bootcmd 启动顺序* @% t* U; }) }# g4 s6 E1 f 现在的 bootcmd 是 run storeboot。我们要把它改成先运行刚才定义的 USB 脚本,然后再运行原来的启动逻辑。 1 R3 x- [& j. z- j/ o5 l7 E7 ]- |0 m; ]* N! D# \ 输入:) s" n5 J) G* U; m7 E& H! B5 ? / I# \ h" v- m5 ` Bash 3 G8 _/ x5 U) J4 |( nfw_setenv bootcmd "run start_usb_autoscript; run storeboot"3 Q4 C- A- O7 W8 q # [4 T/ ]: c- L第三步:验证并重启 6 N4 b+ T* n% B$ c检查修改是否生效: 输入以下命令查看 bootcmd 是否已变更:- w s$ Z: i: G) Y2 l: h G& J / Z9 K: J5 M' z' d5 D6 l9 vBash 9 Q0 y4 V/ I1 r2 W0 C& \fw_printenv bootcmd , N% a/ O+ n( Q& h输出应该是:bootcmd=run start_usb_autoscript; run storeboot0 Z# c; L8 n' e! O 7 u$ e* }3 D* m! A1 B ~" K! ^重启测试: 插入写好系统(如 Armbian/CoreELEC)的 U 盘,然后执行重启: $ Q& p" Z; L1 l% ] N8 h- t / t- ^8 `% w' s5 ]/ K# C; U GBash 3 h9 e$ j w* y* q( W* S+ k" k( nreboot
您需要 登录 才可以下载或查看,没有账号?注册
举报
本版积分规则 发表回复 回帖后跳转到最后一页
查看 »
相关侵权、举报、投诉及建议等,请发 E-mail:yesdong@qq.com
Powered by Discuz! X5.0 Licensed © 2001-2026 Discuz! Team.44152102000001