Не хотел пользоваться Armbian, откуда мне знать что там накрутили, даже сборка армбиана из исходников мне не понравилась, так как там внешние компиляторы качаются извне. Рассказываю как собирал Debian для Orange Pi 3 LTS. Инструкция может быть не точной.
Пользовался Debian 11, склонировал репозиторий армбиана
https://github.com/armbian/build, откатился на тег v22.11 e323753fe7fb26f833dbfeab94351b38fe97550d, так как более свежие версии требуют свежего дебиана. Далее прогнал сборку образа и отдельно ядра и загрузчика с дебагом баша:
sudo bash -x ./compile.sh BOARD=orangepi3-lts RELEASE=bullseye 2>/home/user/compile.txt
sudo bash -x ./compile.sh BOARD=orangepi3-lts RELEASE=bullseye KERNEL_ONLY=yes 2>/home/user/compile_kernel.txt
Накатил собранный образ на microsd, загрузился, всё работает, дальше начал экспериментировать. Полностью удалил все файлы на разделе, накатил дебиан через debootstrap --arch=arm64 bullseye /mnt/sda1/
https://deb.debian.org/debian систему, закинул /boot и /etc/fstab из собранного образа, попробовал загрузиться - грузится. Попробовал обновить ядро из бэкпортов дебиана - тоже получилось, но надо было сгенерировать uInitrd: mkimage -A arm64 -O linux -T ramdisk -C gzip -n uInitrd -d /boot/initrd.img-6.1.0-0.deb11.21-arm64 /boot/uInitrd-6.1.0-0.deb11.21-arm64. И возможно обновить boot.scr: mkimage -C none -A arm -T script -d /boot/boot.cmd /boot/boot.scr.
С ядром разобрался, решил попробовать накатить чистый дебиан самостоятельно. Занулил микросд, разметил начало первого раздела с 8192 блока, отформатировал раздел, подглядел в compile*.txt как накатывается первичный uBoot загрузчик:
+ dd if=/dev/zero of=/dev/loop0 bs=1k count=1023 seek=1 status=noxfer
+ dd if=/tmp/tmp.wsKbG8hLG5/usr/lib/linux-u-boot-current-orangepi3-lts_22.11.2_arm64/u-boot-sunxi-with-spl.bin of=/dev/loop0 bs=1024 seek=8 status=noxfer
Нашёл у себя файл u-boot-sunxi-with-spl.bin, записал его при помощи dd на микросд, дебутстрапнул дебиан, затем накатил все пакеты, сгенерированные с KERNEL_ONLY=yes. Прописал /etc/fstab и armbianEnv.txt (подглядел в сгенерированном образе), система загрузилась. По сути, дальше можно смотреть в содержимое этих пакетов:
linux-u-boot-current-orangepi3-lts_22.11.2_arm64.deb - содержит u-boot-sunxi-with-spl.bin
linux-image-current-sunxi64_22.11.2_arm64.deb - ядро
linux-dtb-current-sunxi64_22.11.2_arm64.deb - device tree, которые в /boot/dtb лежат, arm устройствам нужны для загрузки
Message too long. Click here to view full text.