Еще один скрипт для подготовки образов для Raspberry Pi

Всем привет! В этой статье я хочу рассказать о ключевом компоненте сервиса CusDeb под названием Pieman, который мы недавно опубликовали на GitHub под лицензией GPLv3. Pieman представляет собой скрипт для подготовки образов для нескольких моделей Raspberry Pi. С самого начала этот проект задумывался как универсальное решение, которое должно поддерживать более одного устройства, более одной операционной системы и более одной архитектуры. На данный момент нам удалось частично этого добиться: скрипт готовит как 32-битные, так и 64-битные образы на базе Raspbian 9 «Stretch» и разных выпусков Ubuntu, но пока только для Raspberry Pi. В данный момент мы работаем над добавлением Alpine, в качестве новой операционной системы, и Orange Pi PC Plus, в качестве нового устройства.

Еще один скрипт для подготовки образов для Raspberry Pi Raspberry pi, Open Source, Debian, Ubuntu, Raspbian, Длиннопост

Когда мы только начали работать над CusDeb, сервисом для кастомизации образов ОС для одноплатных компьютеров, мы постоянно откладывали работу над компонентом, который должен был непосредственно заниматься сборкой. Затем мы приняли решение использовать в качестве сборщика скрипт rpi23-gen-image, который предлагал кастомизировать образы для Raspberry Pi 2 или 3 на базе Debian Jessie или Stretch. Ограничения этого решения были очевидны, но на первых порах нас все устраивало. Однако сразу после публикации нескольких посвященных CusDeb'у постов на популярных ресурсах (в том числе Пикабу), нас стали просить расширить список устройств платами Orange Pi и Banana Pi, и добавить поддержку архитектуры ARM64. Это можно было сделать как минимум тремя разными способами:

* найти еще пару сторонних скриптов, к примеру, для сборки образов для устройств, отличных от Raspberry Pi, и задействовать их в CusDeb;

* добавить поддержку новых устройств в rpi23-gen-image, значительно переработав проект;

* разработать собственный скрипт «с нуля», в котором с самого начала был бы задел на масштабирование в области новых устройств, операционных систем и архитектур.


Несмотря на изобилие скриптов-сборщиков образов, в разработке которых мы могли бы принять участие, мы решили написать свое решение, которое с самого начала не было бы привязано к какой-то конкретной плате или операционной системе. Более того, мы постарались упростить добавление новых операционных систем и устройств в наш скрипт. Идея очень близка к дистрибутивам GNU/Linux, все программное обеспечение которых расфасовано по так называемым пакетам. У каждого пакета есть свой сопровождающий. Когда вам нужно какое-то конкретное ПО, вы устанавливаете соответствующий пакет, если он есть в дистрибутиве. Если по какой-то причине его там нет, вы пакетируете это ПО и становитесь сопровождающим этого пакета в дистрибутиве, оказывая таким образом неоценимую пользу сообществу. Pieman предлагает примерно тот же самый подход: если скрипт по какой-то причине еще не поддерживает нужную вам плату или не готовит образы на базе вашей любимой операционной системы, у вас есть возможность добавить поддержку целевой ОС или платы в Pieman без переработки всей кодовой базы проекта. Но чтобы стать сопровождающим, сначала нужно стать пользователем, поэтому в следующем разделе я расскажу как установить Pieman.


Установка


Несмотря на то, что родной платформой для Pieman является GNU/Linux, скрипт может быть также запущен на Windows 10 и macOS благодаря подготовленному нами образу Docker-контейнера.

Сначала загрузите образ с Docker Hub'а


$ docker pull cusdeb/pieman


Затем скачайте скрипт https://raw.githubusercontent.com/tolstoyevsky/pieman/master....


После этого не забудьте сделать его исполняемым


$ chmod +x docker-pieman.sh


Теперь для того чтобы собрать первый образ операционной системы с помощью Pieman, просто запустите docker-pieman.sh


$ ./docker-pieman.sh


По умолчанию будет собран образ на базе Raspbian Stretch (32bit) для Raspberry Pi 3. Если вам нужен образ, к примеру, для Raspberry Pi 2 на базе Ubuntu 16.04 «Xenial Xerus», то воспользуйтесь параметрами DEVICE и OS:


$ ./docker-pieman.sh -e DEVICE=rpi-2-b -e OS=ubuntu-xenial-armhf


Смотрите список всех поддерживаемых параметров, а также их возможных значений, в соответствующем разделе README проекта.


Мы призываем всех владельцев машин под управлением Windows 10 и macOS протестировать Pieman и оставить фидбек. Нам очень важно обеспечить работу проекта как можно на большем количестве платформ.


О сопровождении образов


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


Заключение


Основная задача этой статьи заключалась в том, чтобы познакомить сообщество с новым проектом как можно раньше. На эту тему есть отличная поговорка: «Если вы опубликовали проект и вам за него не стыдно, значит вы опубликовали его слишком поздно.». Мы хотим, чтобы в первую очередь сообщество Raspberry Pi и других одноплатных компьютеров задавало направление развития этого проекта, поэтому мы ждем ваших замечаний и пожеланий.

Arduino & Pi

1.4K постов20.6K подписчика

Добавить пост

Правила сообщества

В нашем сообществе запрещается:

• Добавлять посты не относящиеся к тематике сообщества, либо не несущие какой-либо полезной нагрузки (флуд)

• Задавать очевидные вопросы в виде постов, не воспользовавшись перед этим поиском

• Выкладывать код прямо в посте - используйте для этого сервисы ideone.com, gist.github.com или схожие ресурсы (pastebin запрещен)

• Рассуждать на темы политики

• Нарушать установленные правила Пикабу

Вы смотрите срез комментариев. Показать все
Автор поста оценил этот комментарий
опишите, чтоль, вкратце, чем это лучше билдрута, или скрипта с apt install ... с последующей запаковкой файловой системой
как обновления прошивки делаются? есть ли обновление работающего устройства? как после неудачного обновления производится откат на предыдущее?
раскрыть ветку (6)
Автор поста оценил этот комментарий
Pieman следует сравнивать с такими проектами, как rpi23-gen-image и pi-gen, а не Buildroot. Если очень коротко, то Buildroot не позволяет кастомизировать образы на базе Raspbian, Ubuntu и других дистрибутивов. Я не хочу сказать, что это плохо.

Чем описанный здесь подход лучше apt install, я постарался рассказать в первом абзаце этой статьи https://pikabu.ru/story/vebinterfeys_dlya_sozdaniya_obrazov_...

Обновление прошивки делается также как и обновление любой другой системы на базе GNU/Linux.
раскрыть ветку (5)
1
Автор поста оценил этот комментарий
то есть я не распарсил назначение? это не для автоматизации сборки образов для автономных embedded устройств типа роутеров/контроллеров чего либо?
раскрыть ветку (1)
Автор поста оценил этот комментарий

Почти, Pieman можно использовать для автоматизации сборки образов для устройств на базе Raspberry Pi, Orange Pi и других моделей одноплатных компьютеров.

Автор поста оценил этот комментарий
поясню про обновления. в том мире массовых и не очень железок обычно делают четыре-пять разделов
ro система
ro софт, ради которого железка существует (кастом, короче)
ro вебморда
rw (jffs2) конфиг, который можно менять
обновления обычно не затрагивают систему и юзерский конфиг, то есть система останется более-менее работоспособной
когда прилетает апдейт, можно записать его на зарезервированное место на флешке, поменять, условно, fstab и радостно ребутнуться
если с энного раза не смогли - меняем фстаб обратно и грустно ребутаемся

есть еще вариант, когда при неудачном апдейте базовая система слушает удп и, если извне пообещали прошивку - принимает и сует ее куда надо

так, вдруг пару практик прихватишь отсюда
раскрыть ветку (2)
Автор поста оценил этот комментарий
Спасибо. Мне больше нравится подход атомарных обновлений, реализованный, к примеру, в Ubuntu Core. Идея была заимствована у Chrome OS. Система не обновляется частями, а целым образом. Существуют два раздела: активный и резервный. Когда прилетает обновление, оно устанавливается на резервный раздел и он меняется местами с активным. Таким образом, резервный становится активным, а активный становится резервным. Если идёт что-то не так, то они снова меняются местами и все возращается обратно.
Тем не менее, мы предлагаем кастомизировать классические дистрибутивы, т.к. они все ещё более привычны и очень распространены. Кстати, ничего не мешает вам с помощью Pieman реализовать описанный вами подход. Конечно скрипт не поддерживает его из коробки, но это не страшно.
раскрыть ветку (1)
Автор поста оценил этот комментарий
для наших 16 мегабайт только билдрут
Вы смотрите срез комментариев. Чтобы написать комментарий, перейдите к общему списку