RPi4-SDK
Памятка технологическому партнёру
Памятка по сборке RPM-пакетов на аппаратном комплекте Raspberry Pi 4
Железо
Кроме самого одноплатника RPi4 , нужен монитор с кабелем HDMI [1] и SD-card либо USB-накопитель [2], на которую надо развернуть rootfs. На этой железке можно собирать и под ARMv7, и под ARMv8. Мы предоставляем образы сборочного окружения для обоих вариантов. Железка достаточно крутая, тянет два монитора 4K, но памяти только 4Гб (ещё бывают модели с 8Гб). Хорошо бы на накопителе выделить место под 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-SDK
- Скачайте нужный образ сборочного окружения
- Запишите на флешку (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
- Требуется подключение к сети. Сеть управляется через NetworkManager. Настроить соединение можно через nmcli или псевдографический интерфейс nmtui.
Сборка пакета
- Клонируем репозиторий пакета:
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! ;-)
- ↑ о можно обойтись и без монитора, если подключиться к последовательному порту, как описано в статье: https://www.altlinux.org/Ports/aarch64/Raspberry_Pi4#Консоль
- ↑ загрузка работает только с USB 2.0. Также требуется обновление прошивки EEPROM: https://github.com/raspberrypi/rpi-eeprom