Различия
Здесь показаны различия между выбранной ревизией и текущей версией данной страницы.
— |
arm:u-boot [2019/01/19 11:06] (текущий) |
||
---|---|---|---|
Строка 1: | Строка 1: | ||
+ | ====== U-Boot ====== | ||
+ | *[[wpru>Das_U-Boot]] | ||
+ | *https://www.denx.de/wiki/U-Boot + [[http://u-boot.10912.n7.nabble.com/|форум]] | ||
+ | *http://www.gentoo.ru/node/21898 | ||
+ | *[[https://habrahabr.ru/post/264259/|Banana Pi: через U-Boot к Arch Linux]] | ||
+ | ====== Устройства на Amlogic S905 S905X S912 \ S805 S802 S812 ====== | ||
+ | Продаются с [[wpru>Android]]. Можно установить Linux или других систем, с внешних носителей USB накопители (флэшки, внешние жёсткие диски), SD и microSD карты, загрузка по TFTP. | ||
+ | ===== s905_multi_boot - включение загрузки с внешних носителей (SD и USB). ===== | ||
+ | https://github.com/150balbes/Amlogic_s905/wiki/s905_multi_boot | ||
+ | ===== Разметка носителя ===== | ||
+ | *При заливке [[https://github.com/150balbes/Amlogic_s905/wiki/s905_LInux_SD_USB|образа]] не требуется. Если носитель больше образа - второй раздел ext4 оптимально растянуть gparted на весь носитель | ||
+ | *https://etcher.io/ | ||
+ | *xz -dc img.xz |dd of=/dev/sda bs=4096 status=progress | ||
+ | *Вручную можно делать под любым Linux, например, с помощью gparted. Все разделы - основные. Первый - с флагом 'boot' | ||
+ | -Раздел fat32. Загрузочный (ядро initrd и пр.). Во всех uboot , которые используются в ТВ боксах, нет команды загрузки данных с ext разделов | ||
+ | -Раздел ext4. Корень системы. Файлы переписывать с сохранением прав | ||
+ | -[[https://github.com/150balbes/Amlogic_s905/wiki/s905_Unbrik_Amlogic_S905|Залить загрузчик]] | ||
+ | ===== Назначение файлов на загрузочном fat разделе ===== | ||
+ | *aml_autoscript - прошивка загрузки с флэша - см. выше | ||
+ | *aml_autoscript.zip - прошивка загрузки с флэша - см. выше | ||
+ | *amlogics905x_init.sh - скрипт активации монитора с настройками через /etc/rc.local | ||
+ | *[[http://www.armadeus.org/wiki/index.php?title=Kernel-with-device-tree|dtb]]. [[http://forum.puppyrus.org/index.php?topic=19787.msg130842#msg130842|Подробности]] | ||
+ | *linux.img - собранный и обработанный для использования u-boot образ ядра+initrd+тестовый_dtb_заглушка , он используется при установке системы во внутреннюю память, точнее - это и есть то ядро, котрое используется при старте Linux из eMMC | ||
+ | *s905_autoscript - бинарный скрипт, который управляет процессом запуска системы с внешнего носителя | ||
+ | *s905_autoscript.cmd - конфиг для сборки s905_autoscript | ||
+ | *uInitrd - initrd обработанный специальной утилитой (mkimage) что-бы его мог использовать u-boot, без этого он не работает | ||
+ | *zImage - ядро | ||
+ | ===== s905_autoscript - загрузка ядра и initrd ===== | ||
+ | *https://github.com/150balbes/Amlogic_s905 | ||
+ | ==== Пример: запуск AlexElec через s905_multi_boot ==== | ||
+ | *Заливаем [[http://www.alexelec.in.ua/alexelec-arm-2-2-1-amlogic-s805-s812-905-905x/|образ]] на носитель | ||
+ | *Копируем на fat и [[https://github.com/150balbes/Amlogic_s905/blob/master/script/S905_LIBREELEC/s905_libreelec_v7/s905_autoscript.txt|правим шаблон под alexElec]] | ||
+ | <code> | ||
+ | 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 | ||
+ | </code> | ||
+ | *Собираем s905_autoscript <code>mkimage -A arm -O linux -T script -C none -d s905_autoscript.txt s905_autoscript</code> | ||
+ | |||
+ | ==== Сборка uInitrd - смена ядра==== | ||
+ | Ядро и initrd.xz собираются или устанавливаются из репозитория используемого дистрибутива | ||
+ | <code>mkimage -A arm64 -O linux -T ramdisk -C gzip -a 0x0 -e 0x0 -n initrd -d initrd.xz uInitrd</code> | ||
+ | Если названия файлов ядра и 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 | ||
+ | [[setups/initrd-repack#%D1%80%D0%B0%D1%81%D0%BF%D0%B0%D0%BA%D0%BE%D0%B2%D0%BA%D0%B0|Далее]] |