
Добрый день, коллеги. Наверняка многие сталкивались с ситуацией: нужно прошить 20, 50, а то и 100 EDGE компьютеров перед отправкой заказчику. Берёшь USB-кабель, открываешь Win32imager.. На пятой плате рутина убивает в тебе инженера. На десятой — кажется, что ты работаешь на азиатском подполье по производству типовых приборов.
Мы через это прошли. И теперь хотим рассказать, как превратили муторную рутину в комфортный процесс. Встречайте: специальный софт CM Provisior — он не подходит для отладочной Raspberry PI, а только для ее промышленного клона CM4, CM5 как в наших ПК AntexGate v2.
Зачем изобретать велосипед, если можно прошивать через USB?
Проблема: AntexGate — это промышленный компьютер на базе Raspberry CM4/CM5. Внутри — надёжная eMMC от Samsung. Но прошивать её вручную — это долго и не безопасно, т.к. открытая плата без корпуса подвержена поражению статическим электричеством.
Решение: Берём "донорный" AntexGate (однако можно использовать любую RaspberryPI ), ставим на неё CM Provision и прошиваем наши компьютеры AntexGate оптом. Один сервер прошивает одновременно десятки плат. И всё это управляется через веб морду.
Установка сервера: 10 минут, и можно пить кофе
Ставим на AntexGate серверную Pi Raspberry Pi OS Lite...
Решил Вас не мучать пунктами и собрал свою сборку AntexGateProvisioning.img.xz, которую можно скачать с нашего ресурса. Эта сборка хоть и является слепком c 8GB памяти, но после установки она разворачивается и занимает все пространство EMMC/NVME. Уменьшить слепок и автоматически добавить правила для развертывания памяти помог скрипт PiShrink.
Проект Provisioner с официального GitHub-репозитория можно установить и вручную на голый Raspbian, в нашей сборке мы уже все настроили и это будет быстрее и избавит Вас от возможных ошибок при установки.
Скаченный образ устанавливаем с помощью Raspberry Pi Imager.

Выберете файл образа который скачали ранее, в настройках ничего не добавляйте, а при при прошивке не соглашайтесь добавлять в образ никаких изменений. Установите его по нашей инструкции quickstart либо скачайте pdf инструкцию с сайта.
Важная рекомендация! Если Вам необходимо тестировать много различных сборок, или хранить много бэкапов, рекомендуем образ развернуть на NVME диске 128+GB, таким образом вы получите огромное пространство для хранения Ваших сборок и увеличенную скорость прошивки.
Вводим в эксплуатацию "отца" AntexGate
Для того, чтобы быстро начать производить новые копии необходимо следующее:
Любой коммутатор со скоростью портов не ниже 1GB (100mb будет работать, но скорость прошивки снизится)
Несколько патчкордов rj45
Компьютер, планшет либо телефон для загрузки образов (удобнее всего прямо подключенный ноутбук к 100mb порту)
Подготовленный блок питания 12-48В с подключенными разъемами 2EDGK-5.08-02 (можно “гирляндой”) для подачи питания на потомков

На рисунке показано что ПК для доступа к веб интерфейсу необходимо подключить в LAN 10/100mb порт, а коммутатор для тиражируемых потомков в LAN 1GB порт. Не перепутайте!
По умолчанию доступен сервер записи по адресу 192.168.1.100:
Веб интерфейс доступен по адресу 192.168.1.100 port 80 login: antex@antex pass: antex
-
SSH сервер доступен по адресу 192.168.1.100 port 22 login: antex@antex pass: antex
Логин и пароль можно поменять. В случае ручной установки, эти параметры задаете самостоятельно.
Вам остается только добавить Ваш сжатый образ [name].img.xz нажав на кнопку [Add image] разделе [Images] и подготовить проект для записи. Когда вы нажмете загрузить, подождите некоторое время, пока не пропадет табличка.
Подготовка собственного сжатого образа img.xz
Когда вы полностью протестировали свой проект, добавили все правила, библиотеки и программы - необходимо снять слепок с Вашего тестового AntexGate (кстати слепки с Pasberry Pi4 и выше тоже должны запуститься на AntexGate). Рекомендуем разработку на небольшой памяти 8GB.
Чтобы снять слепок разберите корпус, снимите перемычки x20, установите перемычки x18 7-8pin, подключите USB как при прошивке quickstart и подайте питание. Посте запуска утилиты rpiboot память cm4 определится и можно сделать слепок. Используйте win32imager для снятия копии. Если сиcтема была на внешнем диске NVME просто извлеките его, подключите к Вашему компьютеру и снимите слепок с помощью win32imager.
Копия Вашего образа будет большой 8/16/32gb и будет зависеть от исходного размера памяти, далее нам предстоит ее сжать.
Если у Вас была оригинальная Raspbian можно использовать промежуточное сжатие по инструкции PiShrink. В таком случае у сборки будет обрезано лишнее пространство и добавлены скрипты, чтобы при загрузке проект распаковался на оставшееся пустое пространство EMMC/NVME. Если Вы используете специфичную ОС, например, Астра Linux, QNX этот пункт возможно не сработает (не проверял).
Итак полученный образ рекомендую еще сжать с помощью утилиты 7zip, она значительно уменьшит размер образа в 5-6 раз. Используйте XZ формат, в итоге мы получаем файл [name].img.xz
Внимание! Не пытайтесь перенести без обрезки пустого пространства из образа с большей на меньшую EMMC. Если перенесли с меньшего EMMC на большее, не забудьте разметить пустое пространство.
Прошивка первого потомка
Наконец все готово, мы возвращаемся на web интерфейс.
Продвинутые специалисты могут создать свои скрипты в разделе [Scripts] или использовать имеющиеся от производителя.
Например такой скрипт мы используем для включения SSH сервера и автоматического добавления пользователя пользователя pi с паролем raspberry.
#!/bin/sh # Create mount points mkdir -p /mnt/boot # Mount the boot partition ($PART1 is the device name) mount -t vfat $PART1 /mnt/boot # 1. Enable SSH touch /mnt/boot/ssh # 2. Add User and Password (pi:raspberry) echo 'pi:$6$c70VpvPsVNCG0YR5$l5vWWLsLko9Kj65gcQ8qvMkuOoRkEagI90qi3F/Y7rm8eNYZHW8CY6BOIKwMH7a3YYzZYL90zf304cAHLFaZE0' > /mnt/boot/userconf.txt # Unmount after changes are done umount /mnt/boot
Если вы записываете слепок с уже настроенной системы, а не скаченный заводской образ Raspbian как у нас, то не стоит применять такой скрипт.
Далее переходим в раздел [Progects], чтобы создать все правила для образа на клиентский компьютер.
Нажав кнопку [Add project] остается только придумать название проекта, выбрать нужный образ из загруженных, поставить галочку напротив верификации образа (Verify that image was written correctly), выбрать нужные скрипты и сохранить проект [save].
Когда вы создали один или несколько проектов увидите такой интерфейс. Перед подключением потомка необходимо нажать напротив нужного проекта кнопку [Set Active].
Осталось воткнуть тиражируемые приборы в коммутатор и подать на него/них питание, начнется процесс прошивки, который длятся от 1 до 5 минут, в зависимости от условий объема образа и качества его сжатия.
Внимание! Коммутатор необходим, при использовании прямого патчкорда прибор не прошьется. Чтобы клиент прошился, подключите его в порт с названием на корпусе LAN 1GB/S.
Когда один или несколько приборов будет подключено к серверу прошивки, в разделе CMs вы увидите информацию о клиентских приборах AntexGate, а точнее подробные данные об установленных в них модулей CM4/5. Данные в web интерфейсе обновляется с задержкой, поэтому рекомендую обновлять страницу вашего браузера вручную когда вы увидите активную индикацию 1gb Lan порта клиента.
Процесс прошивки можно увидеть в разделе Dashboard, в котором сообщается об удачных или неудачных прошивках. В этих логах можно увидеть, если Ваш скрипт не применился и по какой ошибке или не сошлась контрольная сумма образа.
После удачной прошивки прибора просто перезагрузите питание и получите полностью работающий прибор.
А если AntexGate уже прошит, но нужно перезалить?
Теперь разбирать прибор для его прошивки нет необходимости. Чтобы заменить существующую прошивку необходимо подключиться по SSH, сломать файл запуска в зависимости от вашей ОС либо удалить весь boot раздел и снова подключить к коммутатору сервера прошивки.
Заключение
Мы протестировали этот подход на себе. Теперь и вы знаете, как сделать ввод в эксплуатацию AntexGate по-настоящему промышленным.
А если остались вопросы — добро пожаловать в комментарии и наш Telegram-канал или MAX-канал поддержки. Расскажем, как настроить скрипты под ваш конкретный кейс.
И помните: "Масштабирование начинается там, где вы перестаёте делать однотипные операции!"
spagetti3d
Кроме 7zip, использовал дедупликацию на уровне файловой системы сервера, если образов десятки и они похожи. Сэкономит еще больше места на NVME
antex_dom Автор
Думаю да, но в целом сжатые сборки для таких встраиваемых компов и так не сильно большие.