RPi4-SDK

Материал из ALT Linux Wiki

Памятка технологическому партнёру

Памятка по сборке RPM-пакетов на аппаратном комплекте Raspberry Pi 4

Железо

Кроме самого одноплатника RPi4, нужен монитор с кабелем HDMI и SD-card, на которую надо развернуть rootfs. На этой железке можно собирать и под ARMv7, и под ARMv8. Мы предоставляем образы сборочного окружения для обоих вариантов. Железка достаточно крутая, тянет два монитора 4K, но памяти только 4Гб (ещё бывают модели с 8Гб). Хорошо бы на SD-card выделить место под SWAP для сборки, но сделать это надо до первой загрузки с RPi4, место следует выделять в самом конце флэшки.

Есть соображение, что RPi4 лучше всего использовать для сборки финальных RPM-пакетов. Для полноценного цикла разработки быстрее всё же использовать qemu-system-aarch64 и qemu-system-arm. Для наших технологических партнёров мы также предоставляем PVE/виртуалки для быстрой нативной сборки (на площадке у провайдера, на сервере ThunderX).

Загрузка с USB работает только у rootfs builder. У альфы Рабочей станции 9.1 для armh и выпущенных дистрибутивов 9.1 для aarch64 не работает (сборка старая). Для интенсивной сборки пакетов не помешает активное охлаждение. Никаких других особенностей нет.

Сборка в QEMU (armh)

gear -v --hasher -- hsh --lazy-cleanup --with-qemu arm \
        --apt-config=$HOME/apt/apt.conf.sisyphus.armh \
        --target=armh --repo=$HOME/hasher_repo/sisyphus ~/hasher

С aarch64 (ARMv8) по аналогии, только с --with-qemu aarch64. См. также: запуск образов в qemu/armh.

Краткая инструкция по RPi4

  • Скачайте нужный образ сборочного окружения
  • Запишите на флешку (USB или microSD). Можно использовать altmediawriter либо в консоли:
    xzcat <путь/до/образа.img.xz> | dd of=/dev/mmcblkX bs=4M oflag=direct status=progress; sync
  • Вставляем в USB флешку или в разъём microSD карту. Включаем кабель питания. Происходит загрузка, пока не появится приглашение входа.
  • В поле login: вводим root. Далее пароль altlinux.
  • Меняем пароль root на свой командой:
    passwd root
  • Добавляем нового пользователя, который будет использоваться для сборки пакетов:
    builder-useradd <user>
    При создании пользователя нужно будет сразу задать ему пароль.
  • Добавляем пользователя в группу администраторов:
    usermod -a -G wheel <user>
  • Перезагружаемся:
    reboot
  • При второй загрузке корневой раздел расширяется на всё свободное место на накопителе. SWAP необходимо предусмотреть в конце флэшки заранее до этого момента.
  • Авторизуемся как пользователь <user>.
  • Пробуем инициализировать пустое сборочное окружение (hasher):
    hsh --init
  • Требуется подключение к сети. Для того, чтобы сеть стартовала автоматом, нужно воткнуть кабель ethernet до загрузки. Если сеть подключили позже, то:
# Получаем права root:
su -

# Перезапускаем службу сети:
systemctl restart network

# Возвращаемся в режим пользователя командой:
exit

# или сочетанием клавиш ctrl + D

Сборка пакета

  • Клонируем репозиторий пакета:
    git clone <адрес репозитория>
  • Переходим в каталог репозитория пакета:
    cd <имя пакета>
  • Собираем пакет:
    gear --hasher -- hsh --lazy-cleanup -v --no-sisyphus-check=packager,gpg,changelog 2>&1 |tee build.log
    Здесь build.log - это лог сборки пакета.
  • Проверяем на отсутствие конфликтов:
    /path/to/hasher/aptbox/apt-cache unmet

Перепаковка чужого RPM

Если необходимо просто перепаковать уже собранный для другого дистрибутива RPM-пакет, воспользуйтесь RPM-repair или eepm.


Enjoy! ;-)