NanoPi Neo 2 Plus

!!! Внимание! Плата достаточно сильно греется и в отличных от рекомендуемых Ubuntu и Armbian может потребоваться дополнительное теплоотведение !!!

Основная статься по данной железке находится здесь В целом там всё описано и собраны образы, которые можно вкатить на SD-карту и спокойно ехать, однако мы не привыкли отступать и будем собирать свой собственный образ.

Подготовка SD-карты

Я использую для своей NanoPi SD-карту Class 10 от МегаФон (какая была в магазине, вроде ничего так, работает) на 16 гигабайт. Разбил её по инструкции:

mmcblp0p1 /boot vfat 1G
mmcblk0p2 swap  swap 2G
mmcblk0p3 /     ext4 13G

Загрузчик системы

В роли загрузчика выступает U-Boot. Маленький, проворный, но немного странный. Документацию можно получить здесь Сборка же под нашу железку описана вот здесь (наша архитектура H5), однако сам U-Boot по данной инструкции у меня собрать не получилось, поэтому напишем свою.

Для начала готовим cross-компилятор (в chroot у меня собрать не получилось, сыпятся ошибки о превышении стека, ну и сборка кросс-компилятором в хостовой системе идёт в разы быстрее, чем в виртуальном окружении)

# emerge -avq crossdev dtc
# crossdev --stable -t aarch64-unknown-linux-gnu

После этого у нас в системе появляется пачка утилит, которые позволяют нам собирать под чужую архитектуру (в нашем случае arm64)

Далее клонируем репозиторий U-Boot

# git clone git://git.denx.de/u-boot.git

Я оставил сборку на мастере (на момент написания коммит 3ea0520512089cffbe02b7d6eb645cdfddb09c5c), но можно, наверное, выбрать и другие ветки. Следующим шагом конфигурируем исходники и собираем загрузчик

# make CROSS_COMPILE=aarch64-unknown-linux-gnu- -j4 nanopi_neo2_defconfig
# make CROSS_COMPILE=aarch64-unknown-linux-gnu- -j4

Если звёзды сложились правильно, то на выходе всё должно собраться без ошибок (ворнинги не в счёт). Следующим шагом закатываем всё это на SD-карту

# dd if=spl/sunxi-spl.bin of=/dev/mmcblk0 bs=1024 seek=8
# dd if=u-boot.itb of=/dev/mmcblk0 bs=1024 seek=40

mmcblk0 - текущее название sd-карты в системе.

Сборка ядра

Здесь всё прошло хорошо, поэтому отступлений от основной статьи совсем немного.

Качаем сорцы и переключаемся на нужную ветку

# git clone https://github.com/friendlyarm/linux.git
# cd linux
# git checkout sunxi-4.11.y

Далее готовим их для нашего оборудования

# touch .scmversion
# make sunxi_arm64_defconfig ARCH=arm64 CROSS_COMPILE=aarch64-unknown-linux-gnu-