В общем, есть 3 варианта:
-
- создать переменную first_boot со значением 1, при первой загрузке прошивать barebox, изменять значение first_boot на 2, перегружаться, прошивать device_tree, zImage, rootfs, изменять first_boot на 0, перегружать железку и этим же скриптом, который проверяет значение first_boot, грузить железку в дальнейшем.
минусы: если что-то случится со скриптом или переменной, то загрузка станет невозможной
плюсы: защите от дурака при прошивке, вообще ничего писать не надо в консоле, все прошивается в автоматическом режиме
-
- создать переменную first_boot и при прошивке входить в меню barebox, монтировать tftp, запускать скрипт /mnt/tftp/boot.sh, который проверяет переменную first_boot и в зависимости от нее или прошивает barebox или device_tree, zImage, rootfs.
минусы: более сложная схема прошивки устройства
плюсы: загрузка не зависит от каких-то там переменных и происходит в той последовательности, которую придумал разработчик barebox
-
- сделать 2 скрипта, один прошивает barebox, другой device_tree, zImage, rootfs
минусы: максимально сложная схема прошивки устройства, нужно 2 раза входить в меню barebox и в нужном порядке вызывать скрипты
плюсы: максимально kiss
прошивка устройства состоит из 2-х этапов, сперва прошивается barebox, потом перезагрузка, потом прошивается zImage и т.д., это если я правильно понял документацию
что выбрать? решил делать первй вариант, а там как пойдет
ps, нет тега barebox, так что тег u-boot