А из initrd fw_* не работают
Лечится mkdir -p /var/lock
В итоге сделал мультизагрузку:Загружается mInitrd с меню выбора систем. По тайм-ауту 5 сек - грузит 1й пункт
После выбора - reboot + грузит выбранную систему. После перезагрузки опять mInitrd
Все через выставление uboot переменной os
Для каждого линукса нужен свой раздел на носителе rootfs=
В *Elec SYSTEM можно скопировать в NAND
Таким образом на одном носителе сколько угодно дистров с выбором
# cat s905_autoscript.cmd
if test ${bootfromrecovery} = 1; then setenv bootfromrecovery 0; saveenv; run update; fi;
if test ${bootfromnand} = 1; then setenv bootfromnand 0; saveenv; run storeboot; fi;
if test ${os} = m; then setenv ose m; saveenv; setenv rootfs "LABEL=ROOTFS"; setenv initrd m; fi;
if test ${os} = a; then setenv os m; setenv ose a; saveenv; setenv rootfs "LABEL=ROOTFS${ose}"; setenv initrd a; fi;
if test ${os} = u; then setenv os m; setenv ose u; saveenv; setenv rootfs "LABEL=ROOTFS${ose}"; setenv initrd u; fi;
if test ${os} = e; then setenv os m; setenv ose e; saveenv; fi;
setenv bootrootfs " boot=/dev/data disk=LABEL=ALEXELEC_DISK BOOT_IMAGE=kernel.img hdmitx=cecf "
if test ${ose} = e; then setenv bootargs ${bootrootfs} ${bootargs}; fi;
setenv usbdtb "if fatload usb 0 ${dtb_mem_addr} dtb.img; then echo usb dtb.img loaded; else store dtb read $dtb_mem_addr; fi;"
setenv sddtb "if fatload mmc 0 ${dtb_mem_addr} dtb.img; then echo sd dtb.img loaded; else store dtb read $dtb_mem_addr; fi;"
setenv le_usb "if fatload usb 0 ${loadaddr} kernel.img; then run usbdtb; wipeisb; bootm ${loadaddr}; fi;"
setenv le_sd "if fatload mmc 0 ${loadaddr} kernel.img; then run sddtb; wipeisb; bootm ${loadaddr}; fi;"
if test ${ose} = e; then run le_usb; fi;
if test ${ose} = e; then run le_sd; fi;
setenv kernel_loadaddr "0x11000000"
setenv initrd_loadaddr "0x13000000"
setenv condev "console=ttyS0,115200n8 console=tty0 no_console_suspend consoleblank=0"
setenv boot_start booti ${kernel_loadaddr} ${initrd_loadaddr} ${dtb_mem_addr}
setenv bootargs "root=${rootfs} rootflags=data=writeback rw ${condev} fsck.repair=yes net.ifnames=0 mac=${mac}"
if fatload usb 0 ${initrd_loadaddr} ${initrd}Initrd; then if fatload usb 0 ${kernel_loadaddr} zImage; then if fatload usb 0 ${dtb_mem_addr} dtb.img; then run boot_start; else store dtb read ${dtb_mem_addr}; run boot_start;fi;fi;fi;
if fatload mmc 0 ${initrd_loadaddr} ${initrd}Initrd; then if fatload mmc 0 ${kernel_loadaddr} zImage; then 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;fi;
Не очень понятно с dtb.img - его нет , но все работает. Не стал убирать
Можно оптимизировать - $initrd убрать - обойтись $ose