Allwinner A20 процы и подобные им семейства sunxi имеют где-то внутри прошитый на заводе загрузчик BROM прямо на кристалле, который при наличии SD-слота и правильно выставленных пинах смотрит в этот SD-слот на блочное устройство по смещению 8 килобайт, читает оттуда то-ли 8, то-ли 32KB так называемого SPL-загрузчика (Secondary Program Loader) и далее тупо исполняет код оттуда. Этот SPL может быть хоть вашей инновационной OS мигающей светодиодами, хоть тупым кодом который грузит ещё 100 мегабайт с флешки и исполняет их. Но обычно SPL содержит код, который загружает по какому-то смещению лежащий там где-то дальше U-Boot с жирностью до 32 КБ, который уже умеет парсить прям настоящие ext4 (не в полном смысле монтировать и запускать журнал, а просто хотя-бы читать), этот U-Boot выковыривает из ext4 всякие нужные ему вещи из /boot, главным образом исполняет /boot/boot.cmd, грузит ядро и дальше уже передаёт управление на linux и далее завертелось.
Так вот, вопрос в том, откуда U-Boot знает что на флешке читать надо именно ext4 раздел и на этом разделе что-то там ещё находить.
Взял я исходники U-Boot с гитхаба, кросс-компилял их с помощью arm-linux-gnueabihf-gcc-12 вот таким макаром:
export ARCH=arm
export CROSS_COMPILE=arm-linux-gnueabihf-
make Cubieboard2_defconfig
make -j2
и получил файлик
u-boot-sunxi-with-spl.bin
который закинул на SD-карту таким макаром:
sudo dd if=~/src/u-boot/u-boot-sunxi-with-spl.bin of=/dev/sda bs=1024 seek=8
На данной SD-карте 1 раздел ext4, в которой лежит корень от armbian покоцаный, но настроенный и рабочий. Воткнул это в cubieboard2 железку и она успешно загрузилась.
Я вот не пойму как этот U-Boot понял, что надо парсить именно ext4 FS на этой флешке? Я не нашёл в каких конфигах при сборке у него это было явно записано, в Cubieboard2_defconfig например этого нет.
Там в U-Boot какое-то тупое эвристическое сканирование-перебор всех разделов с попыткой их попарсить и поискать /boot/boot.scr?

