Если не загрузилось - надо менять ядро с модулями и dtb
Где лучше брать ядра и как выбирать?
Ядро не меняем. Добавляем правильный dtb файл. Копируем из каталога "dtb" (это каталог на записанном носителе с набором готовых dtb файлов) в корень нужный вариант (от своей модели платы) и переименовываем его в dtb.img
Проверяем запуск, если не пошло (в течении 5-10 минут на экране нет ни каких сообщений), пробуем другой файл.
dtb и ядро никак между собой не связаны? Т.е. выдрал свое dtb и экспериментируй с любыми ядрами?
dtb и ядро - связанные элементы. Описание переменных в dtb должно совпадать с принятым набором в ядре. Поэтому просто так любое ядро с любым dtb - работать не будет. Но при сборке прошивок , производители часто используют общую основу (так называемые buildroot от Amlogic) и если версия сборочной среды buildroot совпадает - ядро и dtb будут совместимы. Поэтому у тебя часть образов запускается без ручного копирования - ядро, которое используется совпадает по версии с текущим dtb в памяти.
Как выдрать нужный dtb?
Вот хорошая инструкция, как можно вытащить нужный dtb и получить из него dts (это исходник, по которому можно собрать dtb с нужным ядром).
https://forum.armbian.com/index.php?/topic/2138-armbian-for-amlogic-s912/&do=findComment&comment=20906Мультизагрузочную флэшку можно сделать?
А ядро грузить с флэша, а остальное (корень) поместить в ROM?
Можно, но зачем ? Ядро и вся система ставятся либо на внешний носитель, либо в eMMC.
1. img обязательно заливать dd? Т.е. там спец. mbr и т.п. У меня получилось просто отформатировать флэшку, назвать BOOT(fat) и ROOTFS и переписать
При записи образа через dd (или прогами типа Rosa Imgwriter), на носителе записывается и u-boot (который обычно находиться в первом мегабайте).
Без него система будет нормально работать, если есть загрузчик на eMMC и скрипт который управляет запуском. Если нужна восстановительная система, когда u-boot полностью убит\удалён с eMMC, тогда он нужен.
2. fat необходим или можно один ext4 ?
Во всех uboot , которые используются в ТВ боксах, нет команды загрузки данных с ext разделов. Дальше сам понимаешь, почему FAT нужен обязательно. На девелоп платах , там где свой вариант u-boot (со всми нужными командами) есть возможность грузить систему с ext, поэтому - можно делать любую систему, хоть с несколькими разделами, как на обычном ПК.
3. ext4 - оптимально для флэша?
Вполне. Кстати, разделы с системой и данными в Android так же ext4
4. Можно пояснить назначение файлов на fat
aml_autoscript - сам банарный скрипт, который выполняет активацию мультиазгрузки
aml_autoscript.zipt - zip архив, который нужен исключительно для того, что-бы обмануть штатную систему Android и заставить ее включить режим обновления (исполняется скрипт с именем aml_autoscript в момент запуска ТВ бокса), содержимое и имя не имеют значения, хоть пустышка.
amlogics905x_init.sh - скрипт активации монитора с настройками
boot.bmp - по идее должен использоваться как заставка при старте, но не доходят руки все прикрутить
dtb - каталог с файлами
config-3.14.29 - конфиг ядра, которое используется, бывает нужен для пересборки или иных целей в текущей системе
initrd.img-3.14.29 - не обработанный initrd, для тех же целей, что и конфиг
linux.img - собранный и обработанный для использования u-boot образ ядра+initrd+тестовый_dtb_заглушка , он используется при установке системы во внутреннюю память, точнее - это и есть то ядро, котрое используется при старте Linux из eMMC
s905_autoscript - бинарный скрипт, который управляет процессом запуска системы с внешнего носителя
s905_autoscript.cmd - текстовый файл , из которого можно собрать свой вариант (после редактирования)
System.map-3.14.29 - конфиг ядра для сборки initrd
uInitrd - initrd обработанный специальной утилитой (mkimage) что-бы его мог использовать u-boot, без этого он не работает
zImage - ядро