Инструменты pi gen и cusdeb для создания образов Raspberry Pi, Orange Pi, Banana Pi

Сборка образов с помощью pi gen

Содержимое официальной сборки Raspbian для Raspberry Pi

Официальный сайт Raspberry Pi предлагает на выбор несколько дистрибутивов операционных систем для Raspberry Pi. Raspbian официально поддерживается Raspberry Pi Foundation и на сегодняшний день является самым популярным дистрибутивом среди пользователей. На странице Downloads предлагается выбрать одну из трёх сборок:

  • «Raspbian Stretch with desktop and recommended software» – образ с графической оболочкой и множеством предустановленных программ на все случаи жизни
  • «Raspbian Stretch with desktop» – образ с графической оболочкой
  • «Raspbian Stretch Lite» – образ без графической оболочки

Если скачать один из этих образов, записать на SD-карту и заглянуть внутрь, то мы увидим два раздела. Первый раздел называется загрузочным и предназначен для инициализации платы и передачи управления операционной системе. Загрузочный раздел отформатирован в FAT32 и содержит файлы, необходимые на этапе инициализации платы, а именно:

  • файлы начальной загрузки платы или т.н. boot binaries (bootcode.bin, start.elf и др.)
  • файл конфигурации Raspberry Pi (config.txt)
  • дерево устройств (отдельный файл для каждой платы семейства Raspberry Pi, например bcm2710-rpi-3-b-plus.dtb)
  • скомпилированное ядро Linux (kernel7.img) и файл, содержащий параметры запуска ядра (cmdline.txt).
Инструменты pi gen и cusdeb для создания образов Raspberry Pi, Orange Pi, Banana Pi
Содержимое загрузочного раздела официального образа Raspbian

Если сравнить содержимое загрузочного раздела трёх образов со страницы Downloads, то придём к выводу, что загрузочный раздел одинаковый для всех. Вне зависимости от того, какие приложения предустановлены в образе, способ загрузки платы один и тот же.

Второй раздел образа отформатирован в ext4 и содержит корневую файловую систему с предустановленными приложениями, а также конфигурационные файлы и директории необходимые для работы операционной системы и приложений. Корневой раздел имеет схожую структуру для каждого из трёх образов, но наполнение каждой директории отличается.

Инструменты pi gen и cusdeb для создания образов Raspberry Pi, Orange Pi, Banana Pi
Содержимое корневого раздела официального образа Raspbian

Какую сборку Raspbian хотят пользователи Raspberry Pi?

Каждый пользователь Raspberry Pi рано или поздно задумывается о том, как создать собственную сборку Raspbian для Raspberry Pi и установить туда только нужные для решения конкретной задачи приложения и их зависимости. Иными словами, как создать кастомную сборку «под себя».

Основным двигателем этой мысли является стремление человека к рациональному использованию ограниченных ресурсов одноплатных компьютеров. Следуя принципу рациональности, мы стремимся оставить в образе только те программы, которые мы реально будем использовать и избавиться от всего остального. Нет смысла расходовать место на SD-карте под офисные приложения и игры, если мы не планируем их использовать.

Запрос на кастомизацию чаще всего заключается в изменении содержимого корневого раздела, т.к. именно в корневой раздел устанавливаются программы, необходимые пользователю. Гораздо реже требуется что-либо менять в загрузочном разделе.

Скрипт для создания сборок Raspbian

Инструмент pi-gen используется для сборки официального дистрибутива Raspbian. Результат работы pi-gen – это те три образа, которые опубликованы на странице загрузки Raspbian на сайте Raspberry Pi. Любой желающий может скачать исходный код pi-gen, изучить как работает скрипт, разобраться в конфигурационных параметрах и собрать свою собственную сборку Raspbian Stretch под любую модель Raspberry Pi.

Чтобы воспользоваться pi-gen нужен компьютер с операционной системой на базе Linux.

В самом простом случае, можно запустить build.sh из pi-gen и передать следующие параметры:

  • FIRST_USER_NAME (по умолчанию «pi» ) – имя пользователя.
  • FIRST_USER_PASS (по умолчанию «raspberry») – пароль пользователя.
  • WPA_ESSID, WPA_PASSWORD and WPA_COUNTRY (по умолчанию не заданы) – используются для конфигурирования wpa_supplicant.conf, чтобы Raspberry Pi мог автоматически подключится к WiFi при первой загрузке.
  • ENABLE_SSH (по умолчанию «0») – Разрешить подключение к плате через ssh.
  • STAGE_LIST (по умолчанию stage*) – для задания последовательности шагов сборки.

По умолчанию сборка поделена на шесть последовательных шагов:

Шаг 0 – bootstrap. Создаёт chroot-окружение, основу будущей корневой файловой системы, при помощи debootstrap, конфигурирует apt и устанавливает пакет raspberrypi-bootloader.

Шаг 1 – минимальная система. Устанавливает системные файлы, например /etc/fstab, конфигурирует загрузчик, сеть и ставит несколько вспомогательных пакетов, например raspi-config.

Шаг 2 – Raspbian Lite. Устанавливает fake-hwclock, ntp, dphys-swapfile и другие базовые пакеты для управления железом. Настраивает WiFi и bluetooth. Создаёт пользователей и группы в системе. Устанавливает несколько полезных инструментов, например Python и Lua, а также пакет build-essential. Полученный на этом шаге образ это и есть Raspbian Lite, опубликованный в разделе Downloads на сайте Raspberry Pi.

Шаг 3 – графическая среда. Устанавливает полноценную графическую оболочку с X11 и LXDE, браузером, и различными улучшениями интерфейса от Raspbian, а также git и другие инструменты разработки.

Шаг 4 – Raspbian на 4GB. Устанавливает больше инструментов для разработки, почтовый клиент, различные специализированные пакеты, например, sonic-pi и т.д.

Шаг 5 – официальный образ Raspbian с графической оболочкой. Добавляет пакет Mathematica.

Инструменты pi gen и cusdeb для создания образов Raspberry Pi, Orange Pi, Banana Pi
Шаги сборки в pi-gen

В корне проекта pi-gen находятся поддиректории stage0, stage1, … stage5. В каждой из них описываются действия, которые pi-gen должен выполнить. Продвинутые пользователи pi-gen создают собственные шаги и при помощи параметра STAGE_LIST вставляют их в нужное место, например:

STAGE_LIST stage0 stage1 mystage stage2 – выполнит шаг mystage перед шагом stage2.

Для создания собственного шага, требуется понимание синтаксиса Bash и базовые знания в устройстве Linux-подобных операционных систем. Также потребуется немного времени, чтобы разобраться с принципом сборки в pi-gen.

Инструменты pi gen и cusdeb для создания образов Raspberry Pi, Orange Pi, Banana Pi
Сборка образа с помощью pi-gen

Онлайн сервис для создания сборок Raspbian, Ubuntu и других ОС для Raspberry Pi

Инструмент CusDeb работает по схожему c pi-gen принципу. Главное отличие CusDeb от pi-gen в том, что образ готовится на удалённом сервере, а управление сборкой происходит через веб-интерфейс. Чтобы пользоваться CusDeb нужен только веб-браузер и подключение к сети Интернет. Большинство возможностей CusDeb доступно обладателям Pro-аккаунтов.

Сервис развивается и помимо Raspbian доступны сборки на основе других дистрибутивов, например Ubuntu, Debian и Devuan. Недавно появилась поддержка платы Orange Pi PC Plus и скорее всего это не последняя плата.

В CusDeb cборка состоит из четырёх шагов, и на первом шаге необходимо выбрать целевое устройство и дистрибутив.

Инструменты pi gen и cusdeb для создания образов Raspberry Pi, Orange Pi, Banana Pi
Выбор дистрибутива и целевого устройства для сборки

После этого на сервере CusDeb инициализируется болванка, содержащая минимальный набор файлов для корневого раздела будущей файловой системы (т.н. baseimage), а на экране появится список пакетов из официального репозитория Raspbian Stretch.

Инструменты pi gen и cusdeb для создания образов Raspberry Pi, Orange Pi, Banana Pi
Выбор пакетов

Выберите нужные пакеты и добавьте в свой образ. Для поиска пакета по имени воспользуйтесь строкой поиска. Для добавления пакета в сборку, нажмите «+» перед именем пакета. При добавлении пакета, конструктор автоматически установит все зависимые пакеты в образ. После того, как закончите с пакетами, перед вами появится список всех пользователей и групп в создаваемой системе. Кликните на root в первой строке таблицы и задайте пароль суперпользователя в появившемся модальном окне. Нажмите на кнопку «Добавить пользователя» для создания учётной записи непривилегированного пользователя в системе.

Инструменты pi gen и cusdeb для создания образов Raspberry Pi, Orange Pi, Banana Pi
Создание пользователя

На заключительном этапе конфигурации системы задайте имя хоста и часовой пояс, после чего нажмите кнопку «Собрать».

Инструменты pi gen и cusdeb для создания образов Raspberry Pi, Orange Pi, Banana Pi
Конфигурация

За ходом сборки можно следить прямо из браузера. Все команды, выполняемые на сервере, транслируются в CusDeb.

Инструменты pi gen и cusdeb для создания образов Raspberry Pi, Orange Pi, Banana Pi
Сборка на удалённом сервере

Можно закрыть вкладку и дождаться уведомления об успешном завершении сборки на почту. Сборка образа занимает от нескольких минут до нескольких часов в зависимости от загруженности сервера.

CusDeb при помощи debootstrap создаёт основу для корневой файловой системы, затем при помощи chroot устанавливает в неё дополнительные пакеты и правит конфигурационные файлы. Затем CusDeb подготавливает пустой файл с расширением .img, создаёт в нём таблицу разделов с двумя разделами при помощи утилиты parted (загрузочный и корневой). CusDeb форматирует первый раздел в FAT32, а второй раздел в ext4 с помощью mkfs, после чего записывает rsync’ом в отформатированный корневой раздел корневую файловую систему, а в загрузочный раздел бинарные файлы, необходимые для загрузки платы, конфигурационные файлы и скомпилированное ядро.

Исходный код большинства компонентов CusDeb открыт. Например, вот исходники системы сборки образов: https://github.com/tolstoyevsky/pieman – это аналог pi-gen, только с поддержкой большего количества операционных систем и различных моделей одноплатных компьютеров. Разработчики проекта общительные ребята, всегда открыты к новым идеям и рады любым отзывам.

Видео создания образа для Pi компьютера

Оцените статью
( Пока оценок нет )
PcMiniPro
Добавить комментарий

217 / 0,562 / 37.07mb