Содержание

U-Boot

Устройства на Amlogic S905 S905X S912 \ S805 S802 S812

Продаются с Android. Можно установить Linux или других систем, с внешних носителей USB накопители (флэшки, внешние жёсткие диски), SD и microSD карты, загрузка по TFTP.

s905_multi_boot - включение загрузки с внешних носителей (SD и USB).

https://github.com/150balbes/Amlogic_s905/wiki/s905_multi_boot

Разметка носителя

  1. Раздел fat32. Загрузочный (ядро initrd и пр.). Во всех uboot , которые используются в ТВ боксах, нет команды загрузки данных с ext разделов
  2. Раздел ext4. Корень системы. Файлы переписывать с сохранением прав

Назначение файлов на загрузочном fat разделе

s905_autoscript - загрузка ядра и initrd

Пример: запуск AlexElec через s905_multi_boot

if test ${bootfromrecovery} = 1; then setenv bootfromrecovery 0; saveenv; run update; fi;
if test ${bootfromnand} = 1; then setenv bootfromnand 0; saveenv; run storeboot; fi;
setenv bootrootfs " boot=LABEL=ALEXELEC disk=LABEL=ALEXELEC_DISK BOOT_IMAGE=kernel.img hdmitx=cecf "
setenv bootargs ${bootrootfs} ${bootargs}
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;"
run le_usb
run le_sd

Сборка uInitrd - смена ядра

Ядро и initrd.xz собираются или устанавливаются из репозитория используемого дистрибутива

mkimage -A arm64 -O linux -T ramdisk -C gzip -a 0x0 -e 0x0 -n initrd -d initrd.xz uInitrd

Если названия файлов ядра и uInitrd изменились - нужно исправить и пересобрать s905_autoscript

Разборка uInitrd

https://unix.stackexchange.com/questions/113827/how-to-extract-files-from-uimage

tail -c+65  < uImage  > initrd.gz

Определить тип сжатия:

file initrd.gz

Далее