Не скажу за всех, но периодически вспоминать нюансы по сборке образа и тратить на это время бесит. Пусть будет туториал.

В руках у меня оказалась невзрачная черная коробочка — KM8p, сердцем которой бился восьми ядерный кристалл s912, с двумя гигабайтами оперативной памяти и восемью гигабайтами встроенного хранилища. Задача — вдохнуть в нее жизнь, установив легковесную графическую среду xfce, единственную, что под силу этой скромной оперативе.

Мой путь лежал через дистрибутив armbian, версию 26.02.0-trunk. Но это был не простой установочный образ, а целый лабиринт, полный не очевидных ловушек и правил, будто составленных загадочным архитектором.

Первый закон: Запрет на чужие земли

Систему нельзя было разворачивать где попало. Только там, откуда она сама же и загрузилась — на том же самом блочном устройстве, где уже смонтирован корень '/'. Попытка нарушить это правило грозила погружением в хаос.

Второй закон: Чистота перед творением

Перед каждым новым актом сборки требовалось ритуальное очищение. Следовало безжалостно стереть временные каталоги:./cache,./.tmp,./output,./userpatches. Будто стирая следы прошлых попыток, ты даешь пространству для новой магии.

Третий закон: Власть не для корня

Собирать следовало не под всесильным root, а под основным, смертным пользователем. И файловая система для этого действа предписывалась только ext4 — проверенный временем фундамент.

Четвертый закон: Свобода от докера

Мне не потребовался Docker. Вместо этого, в определенный момент, когда на экране начинал тикать обратный отсчет, от меня ждали лишь одного: вовремя нажать 'Enter', подтверждая свое присутствие и готовность.

Пятый закон: Табу на конфиги

Соблазн добавить свои настройки в./build/config/boards/ был велик, но туда путь был заказан. Там царил хаос динамических имен, завязанных на имена dts‑файлов железа. Вмешательство сулило только конфуз.

Шестой закон: Смотри в суть

Настоящие секреты таились глубже — в скриптах по адресу./build/lib/functions/compilation/. Именно эти заклинания по частям собирали uboot, kernel и прочие кирпичики системы.

Седьмой закон, самый коварный: Образ‑призрак

Собранный по умолчанию образ armbian был подобен телу без души. На месте загрузчика uboot в нем зияли лишь нули. Залить такой образ на emmc и ждать загрузки было безумием. Он никогда бы не стартовал.

Но в безднах скриптов, среди тысячи строк кода, таился спасительный флаг — 'EXTENSION_BUILT_UBOOT=yes'. Его активация заставляла машину собрать и вшить загрузчик в образ. Правда, следовало на свой страх и риск проверить, есть ли в репозитории u‑boot нужный dts‑файл для моего процессора. Игра стоила свеч.

Финальный ритуал — команда великой сборки:

./compile.sh build BOARD=khadas-vim2 BRANCH=current BUILD_DESKTOP=yes \
BUILD_MINIMAL=no DESKTOP_APPGROUPS_SELECTED='browsers editors internet multimedia' \
DESKTOP_ENVIRONMENT=xfce DESKTOP_ENVIRONMENT_CONFIG_NAME=config_base \
KERNEL_CONFIGURE=no RELEASE=noble EXTENSION_BUILT_UBOOT=yes            

И даже когда, после долгих часов компиляции, система наконец оживала, ее ждал последний штрих. Ethernet на KM8p в таком виде молчал. Чтобы пробудить проводную связь, требовалось принудительно сменить ее цифровое «платье» — Device Tree. В файле «/boot/armbianEnv.txt» нужно было вписать заклинание:

fdtfile=amlogic/meson-gxm-q201.dtb

Этот файл давал жизнь только проводам. За магию Wi‑Fi предстояло охотиться отдельно, в дебрях даташитов и форумов.

Так, шаг за шагом, обходя ловушки и следуя странным правилам, капризный кристалл s912 оживал, превращаясь из черной коробочки в полноценный миниатюрный компьютер, готовый к работе.

P. S. Тут собраны нюансы для сборки своего образа на базе armbian, если кто то знает что то еще, можно дополнить. В качестве примера был ТВ бокс KM8p и его перевод на ubuntu для дальнейшей эксплуатации в качестве сервера, но это уже совсем другая история :‑)