Pieman: руководство сопровождающего

Pieman представляет собой ключевой компонент сервиса CusDeb, который непосредственно занимается сборкой образов операционных систем для Raspberry Pi. Основная задача проекта — быть как можно более универсальным решением и поддерживать десятки устройств, операционных систем и архитектур. Таким образом, добавление поддержки новых операционных систем и устройств в Pieman максимально упрощено и работа в этом направлении все еще продолжается. Проект был задуман так, чтобы перекладывать поддержку операционных систем и устройств на плечи наиболее активных членов сообщества. Таким образом, если кому-то нужен сборщик образов, на базе какой-то конкретной ОС, он может воспользоваться возможностями Pieman и относительно просто добавить эту ОС в скрипт. Это руководство посвящено тому, как сделать первые шаги на пути добавления в Pieman новых операционных систем или устройств.

Pieman Logo
Pieman Logo

Добавление поддержки новых операционных систем и устройств в Pieman максимально упрощено за счет декларативного описания сценария сборки образов. Работа в этом направлении все еще продолжается.

Pieman предлагает декларативное описание образов. В качестве примера предлагаю рассмотреть поддержку Ubuntu 17.10 «Artful Aardvark» (64-bit). На мой взгляд этот пример является наиболее интересным, т.к. процесс добавления поддержки этой ОС в скрипт проходил не всегда гладко. Во первых, базовая система упорно отказывалась собираться из-за бага в самом выпуске дистрибутива, а затем flash-kernel отказывался устанавливать пакет с ядром в chroot-окружении, т.к. это «устройство» ему было незнакомо. В процессе решения этих проблем сам Pieman стал обзаводиться некоторыми возможностями, которые были призваны помогать сопровождающим вмешиваться в каждый этап сборки образа. Но обо всем по по порядку.

Если вы хотите добавить поддержку операционной системы для устройства, которое уже есть в Pieman, то перейдите в директорию devices, а затем в директорию целевого устройства. После этого создайте новую директорию для целевой ОС. Правило именования таких директорий следующее: <название дистрибутива>-<кодовое имя выпуска>-<архитектура>. Все три компонента, разделенные «-», должны быть в нижнем регистре. Таким образом, директория с исходниками образа на базе Ubuntu 17.10 «Artful Aardvark» (64-bit) получила название ubuntu-artful-arm64. Единственным обязательным файлом в каждой такой директории должен быть pieman.yml, который описывает, что должно быть в образе для того, чтобы он нормально запускался и функционировал.

Пример pieman.yml из ubuntu-artful-arm64.


# Maintainer: Evgeny Golyshev <eugulixes@gmail.com>

ubuntu-artful-arm64:
repos:
– http://ports.ubuntu.com/ubuntu-ports/
boot:
– cmdline.txt
– config.txt
– /boot/vmlinuz-4.13.0-*-raspi2:kernel8.img
– /lib/firmware/4.13.0-*-raspi2/device-tree/broadcom/bcm2710-rpi-3-b.dtb
– /lib/firmware/4.13.0-*-raspi2/device-tree/broadcom/bcm2837-rpi-3-b.dtb
– https://github.com/raspberrypi/firmware/raw/master/boot/bootcode.bin
– https://github.com/raspberrypi/firmware/raw/master/boot/fixup.dat
– https://github.com/raspberrypi/firmware/raw/master/boot/fixup_cd.dat
– https://github.com/raspberrypi/firmware/raw/master/boot/fixup_x.dat
– https://github.com/raspberrypi/firmware/raw/master/boot/start.elf
– https://github.com/raspberrypi/firmware/raw/master/boot/start_cd.elf
– https://github.com/raspberrypi/firmware/raw/master/boot/start_x.elf
includes:
# /usr/share/initramfs-tools/hooks/flash_kernel_set_root will be looking for
# systemd-detect-virt during installation of the kernel.
– systemd
params:
# The kernel package is available in the universe archive area.
– ENABLE_UNIVERSE
kernel:
package: linux-image-raspi2

Формат этого файла уже является достаточно устоявшимся. Первой строкой должен быть комментарий с именем и адресом электронной почты сопровождающего образа. Затем должен идти документ в формате YAML, название корневого элемента которого должно совпадать с названием директории, в которой он находится. Смысл этого достаточно прост: каждый должен иметь возможность понять, к какому образу относится конкретный pieman.yml, просто взглянув на его содержимое. Директория, в которой он находится, это контекст, который может быть не всегда доступен.

Это руководство еще не закончено и мы постоянно его обновляем.

Leave a Reply

Your email address will not be published. Required fields are marked *