Собери сам (примеры сборок)
Здесь мы опишем, как самостоятельно собрать образ NapiLinux с использованием OpenEmbedded/Yocto Project.
Доступные варианты сборки:
- Базовый образ (nnz-napi-image) — минимальная система
- Frontcontrol (nnz-frontcontrol-image) — система сбора данных с визуализацией, включает influxdb2, telegraf, grafana, flask
- Dev-версии — образы для разработки с дополнительными инструментами
Требования к хост-системе:
Сборку рекомендуется вести на Linux-хосте (например, Ubuntu 22.04 или новее). Должны быть установлены пакеты, необходимые для сборки Yocto Project.
Для Ubuntu/Debian:
sudo apt-get install gawk wget git-core diffstat unzip texinfo gcc-multilib \
build-essential chrpath socat libsdl1.2-dev
Для других систем смотрите документацию: https://docs.yoctoproject.org/brief-yoctoprojectqs/index.html
💥 Нужно выделить не менее 80Гб свободного места на диске.
ШАГ 1. Скачиваем исходники
Создаём рабочий каталог и клонируем необходимые репозитории:
~ $ mkdir yocto
~ $ cd yocto
~/yocto $ git clone --depth 1 git://git.yoctoproject.org/poky -b scarthgap
~/yocto $ cd poky
~/yocto/poky $ git clone --depth 1 git://git.openembedded.org/meta-openembedded.git -b scarthgap
~/yocto/poky $ git clone --depth 1 git://git.yoctoproject.org/meta-arm.git -b scarthgap
~/yocto/poky $ git clone --depth 1 https://gitlab.nnz-ipc.net/pub/napilinux/meta-influx.git -b scarthgap
~/yocto/poky $ git clone --depth 1 https://gitlab.nnz-ipc.net/pub/napilinux/meta-nnz.git -b scarthgap
~/yocto/poky $ git clone --depth 1 https://github.com/sbabic/meta-swupdate -b scarthgap
Дополнительные слои (опционально):
Для поддержки Raspberry Pi:
~/yocto/poky $ git clone git://git.yoctoproject.org/meta-raspberrypi -b scarthgap
Для поддержки Intel x86:
~/yocto/poky $ git clone git://git.yoctoproject.org/meta-intel -b scarthgap
Все репозитории теперь используют ветку scarthgap — актуальную стабильную версию Yocto Project.
ШАГ 2. Настраиваем окружение
Инициализируем окружение сборки:
~/yocto/poky $ source oe-init-build-env
ШАГ 3. Настраиваем bblayers.conf
Выберите нужный файл конфигурации слоёв в зависимости от целевой платформы:
Для базового образа NapiLinux:
~/yocto/poky/build $ cp ../meta-nnz/conf/bblayers.conf.sample.napi conf/bblayers.conf
Для образа Frontcontrol:
~/yocto/poky/build $ cp ../meta-nnz/conf/bblayers.conf.sample.fc conf/bblayers.conf
Для Raspberry Pi:
~/yocto/poky/build $ cp ../meta-nnz/conf/bblayers.conf.sample.rpi conf/bblayers.conf
Для Intel x86:
~/yocto/poky/build $ cp ../meta-nnz/conf/bblayers.conf.sample.x86 conf/bblayers.conf
ШАГ 4. Настраиваем local.conf
Копируем и настраиваем файл локальной конфигурации:
~/yocto/poky/build $ cp ../meta-nnz/conf/local.conf.sample conf/local.conf
В файле conf/local.conf
раскомментируйте строку с нужной машиной (MACHINE
), для которой хотите собрать образ.
ШАГ 5. Сборка образа
Выберите и соберите нужный образ:
Д оступные цели сборки:
# Базовый образ
~/yocto/poky/build $ bitbake -k nnz-napi-image
# Frontcontrol с системой мониторинга
~/yocto/poky/build $ bitbake -k nnz-frontcontrol-image
# Версия для разработки
~/yocto/poky/build $ bitbake -k nnz-napi-image-dev
# Версия для разработки без автообновлений (для Raspberry Pi/x86)
~/yocto/poky/build $ bitbake -k nnz-napi-image-dev-noupdate
Поддерживаемые устройства:
napi-rk3308
— основная платформа NapiLinuxnapi-rk3308b-s
— модификация с дополнительными возможностямиroc-pc-rk3328
— мини-ПК на базе RK3328rockpro64-rk3399
— мощная плата на RK3399repka-pi4-optimal
— оптимизированная версия для Raspberry Pi 4
Результаты сборки:
После удачной сб орки образы находятся в каталоге build/tmp/deploy/images/[имя_машины]/
:
- Для napi-rk3308:
nnz-napi-image-napi-rk3308-gpt.img
- Для frontcontrol:
nnz-frontcontrol-image-napi-rk3308-gpt.img
💥 Запаситесь терпением — компиляция длится 4-8 часов в зависимости от производительности системы!
Установка и доступ к системе
Записывайте образ на SD-карту или устанавливайте через систему обновлений (если NapiLinux уже установлена).
Данные для входа в систему:
- Логин:
root
- Пароль:
napilinux
Последовательная консоль: доступна на UART-0
Подробнее о доступе к системе читайте в соответствующем разделе