N1盒子U盘跑LINUX,n1盒子的uboot u盘引导armbian/linux系统

查看uboot的默认变量,保存在/dev/env设备中,armbian4.18内核不能识别此设备,3.14内核可以,查看默认启动命令为start_autoscripC k Ut:

fw_printenv | grep bootcmdV p C + l U 1

booB = i n 2tcmd=run start_autoscript; run stv M H L ] ?oreboot;

stq ^ L ^ i i G Tart_autoscript判断有u3 l e i _ K e lsb刚执行start_usb_autoscript命令,mmc执行start_mmc_autoscript,具体如下:

sta; | I w trt_autoscript=if usb- @ 4 start ; then run start_usb_^ V - |autoscript; fi; run start_mmc_autoscript;

start_mmc_autoscript=if fatload mmc 0 1020000 s905_autoscript; then autoscr 1020000; fi;if fatload mmc 1 1020000 s905_autoscript; then autoscr 1020000; fi;

start_emmc_autoscript=if fatload mmc 1 1020000 emmc_autoscript; then autoscr 1020000; fi;

start_usb_autoscript=if fatload usb 0 1020000 s905_autoscript; then autoscr 1020000; fi; if5 r 0 q x + ; fatload usb 12 I o u f / 1020000 s905_autoscript; then autoscr 1020000; fi? ! @ r; if fatload usb 2 1020000 s905_autoscript; then autoscr 1020000; fi; ifD @ 7 W , & q K fatload usb 3 1020000 s905_autoscript; then autoscr 1020000; fi;

staT ^ m f } Grt_usb_autoscript 加载usb设备1和2 f: Z t w j 6 tat分区根目录s905_autoscript文件并执行,s905_E E 5 rautoscript内容如下:

sen Y ( - G 6tenv env_addr Z Z L @"0x10400000"

setenv kernel_addr "0x1] & )1d 9 o000000"

setenv initrd_addr "0x13000000"

setenv boot_start booti ${kernel_addr}K 0 0 d 4 * s ${initrd_addr} ${dtb_mem_addr}

if fatload usb 0 ${kernel_addr} zImageh . w m q v; then if fatload usb 0 ${initrd_addr} uInitrd; then if fatlW j j I u Voad usb 0 ${env_addr} uEnv.ini; then env import -tc % G ] ! : j q ${env_addr} $q P {{filesize};run cmdline_keys;fi; if fatload usb 0 ${dtb_mem_addr} dtb.img; then run boot_start! H A; else store dt& I s H e L Rb read ${dtb_mem_addr}; run boot_start;fi;fi;fi;

if fatload usb 1 ${kernel_addr} zImage; then if fatload usb 1 ${inf ~ [ v L | Sitrd_addr} uInitrd; then if fatload usb 1 ${env_addr} uEnv.ini; then env import -t ${env_addry ! K f} ${filesize};run cmdline` G b I e y + ) b_keys;fi; if fatload usb 1 ${dtb_mem_addr} dtb.img; then run boot_start; else store dtb read ${dtb_mem_addr}; run boot_start;fi;fi;fi;

if fa5 O d d ~ N 6tload mmc 0 ${kernel_addr} zImage; then if fatload mmc 0 ${initrd_addr} uInitrd; then if fatload mmc 0 ${env_addr} uEnv.ini; then env import -t ${env_addr} ${filesize};runB q 4 : V cmdline_keys;fi; if fatload mmc 0 ${dtb_mem_addr} dtb.img; then run boot_start; else store dtb read ${dtb_mem_addr}; run boot_start;fi;fi;fS G 2i;

if fatload mmc 1 ${kernel_addr} zImage; then iu H 2 % rf fatload mmc 1 ${initrd_addr} uInitrd; then if fatload mmc 1 ${env_addr} uEnv.ini; then env importB 0 7 2 ! -t ${p ) , c K + 6env_addr} ${filesize};run cmdline_keys;fi; if fatload mmc 1 ${dtb_= Z w J ) ; f ?mem_addr} dtb.img; then run boot_start; else store dtb read ${dtb_mem_addr}; run boot_start;fi;fi;fi;

s905_autoscript加载所在分区zImage、uInitrd、dtb.img、uEnv.ini文件,并引导系统启动。

更改uboot变量方法如下:

/usr/sbin/fw_setenv start_a8 g ) n 6 * V Xutoscript "if usb start/ 2 T o K + j & $ ; then run start_usb_autoscript; fi; run start_mmc_autoscript;"

/usr/sbin/fw_setenv start_mmc_autoscript "if fa_ 1 ( d k ktload mmc 0 1020000 s905_autoscript; then autoscr 1020000; fi;if fatload mmc 1 1020000 s905_autoscript; then autoscr 1020000; fi;"

对于s905_autoscript文件可用mkimage生成:

mkimage -C none -A arm -T script -d /boot/s905_O N O w ^ O m 3autoscript.cmd /boot/s905_autoscript

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值