загрузчика u-boot, так и ядра Linux, то всё обычно проще, ибо портирование - отдельная большая тема).
В случае со сборкой всё относительно просто - сложности начинаются, когда нужно что-то "особенное".
Общая схема обычно такая:
- собираешь u-boot
- собираешь linux
- собираешь/берешь готовый rootfs
- ???
- profit
Если с чем-то возникает конкретная проблема, то разбираться надо уже предметно.
Отдельно по u-boot, как уже упомянули, полно документации, в т.ч. официальной.
Как кросс-компилировать linux и rootfs - с howto проблем в гугле тоже особо нет.
Из готовых систем сборки: buildroot, openembedded/yocto и ещё туча менее известных костылей.
Если надо добавить безопасности, гуглить по ключевым словам: verified boot u-boot, dm-verity (а сейчас ещё и fs-verity выкатывать вроде как собираются) - смотришь результаты, читаешь доки и статьи, пробуешь, ошибаешься, исправляешь ошибки, снова пробуешь (для этого хорошо бы иметь, конечно, неубиваемую отладочную плату под рукой).
Если надо добавить автоопдейты из коробки, можно посмотреть в сторону swupdate и mender, но если не хочется лезть в оверинженерные костыли, можно и что-то своё придумать для начала.
Ещё из полностью готовых, но полупроприетарных решений, для "референса", можно просто полистать и почитать официальные доки/wiki таких проектов, как chromiumOS и android - там тоже есть что почерпнуть полезного о том, как это у взрослых дядей работает (те же a/b partition, stateless system, verified boot, OTA и т.д. и т.п.). Ну или даже в исходники отдельных "компонентов" заглянуть, если не страшно, чтобы хотя бы примерно попытаться понять, как оно выглядит и работает.
Одной большой книги о том, как это всё скрестить вместе, не встречал.
Но помимо Building embedded Linux systems ещё есть Embedded Firmware Solutions, но она, как по мне, слишком общая, хотя для общего развития полистать можно.
Пасиб, схоронил)
Обсуждают сегодня