!!! Внимание! Плата достаточно сильно греется и в отличных от рекомендуемых Ubuntu и Armbian может потребоваться дополнительное теплоотведение !!!
Основная статься по данной железке находится здесь В целом там всё описано и собраны образы, которые можно вкатить на 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-