Raspberry Pi Compute Module располагает встроенной eMMC-памятью вместо карты, и работа с ним отличается от привычного кочевого образа жизни с microSD: здесь невозможно просто вынуть носитель и перезаписать его на компьютере. Зато есть элегантный механизм: перевод модуля в режим USB mass storage через специальный загрузчик, после чего eMMC видна на вашем ПК как обычный диск, и dd или Raspberry Pi Imager делают свою работу привычно. Разбираем весь процесс: подготовка, прошивка, переезд с SD на eMMC и восстановление после ошибок.
Режим USB mass storage и rpiboot
Compute Module обладает специальным поведением: при замкнутом джампере (или соответствующем контакте в каркасе платы) устройство при подаче питания через USB не загружается с eMMC, а подключается к компьютеру как USB-устройство загрузки. Утилита rpiboot на ПК скачивает вторичный загрузчик, который превращает eMMC в mass-storage. После этой процедуры ваша Linux-машина видит новый /dev/sdX-носитель именно той ёмкости, что имеет eMMC-модуль.
Сама rpiboot ставится по инструкции производителя из исходников или готового пакета; после запуска с подключённым модулем она печатает диагностические сообщения и завершает работу, когда диск стал виден в системе. Это звучит заковыристо, но на практике занимает полторы минуты, и к нему быстро привыкаешь, потому что сам порядок прост.
Прошивка образа Raspberry Pi OS
Как только eMMC видна как блочное устройство, всё идёт по каноничной процедуре: Raspberry Pi Imager выбирает образ и целевой диск, и записывает. Для любителей командной строки та же операция снимается по классике: xzcat raspios.img.xz | dd of=/dev/sdX bs=4M status=progress conv=fsync. После прошивки не забудьте про файл ssh в разделе boot или включение SSH через raspi-config с последующей возможной правкой перед извлечением носителя - иначе потерянных полчаса поисков протянутся до вечера.
Обратная ситуация - снять образ с работающей системы для резервного копия - делается той же методикой: подключаете модуль в режиме mass storage и читаете через dd в файл образа. Такие снимки позже разворачиваются обратно на новый модуль тем же путём, и это удобно не только для бэкапа, но и для серийного производства - когда вы построили эталон и хотите клонировать его на партию.
Переезд с SD на eMMC без потери настроек
На практике часто бывает, что сперва разработка ведётся на обычной SD, а под конец изделия систему надо переселить на eMMC без потери конфигурации. Есть две корректные стратегии. Первая - скопировать образ с SD на eMMC побайтово, и тогда всё ваши правки вместе с пакетами, конфигурациями и ключами переедут в точности. Приём безупречен, и единственный нюанс - размер раздела: eMMC должна вместить образ целиком; если SD 32 ГБ, а накопитель 16 ГБ, перед копированием следовало бы уменьшить основной раздел до разумного объёма.
Вторая стратегия - перекачка содержимого по сети: rsync -aHAX из-под живой SD-системы на примонтированный eMMC, и такой подход естественнее при кастомной разметке, потому что копируется файловая структура, а не геометрия. После копирования необходимо поправить UUID в /etc/fstab и /boot/cmdline.txt на новые идентификаторы, иначе система будет искать старый раздел и не найдёт его.
Настройка единой загрузки и надежность
Компьютмодуль в аппаратном смысле инструмент полноправный, и надёжность его eMMC известна хорошим ростом ресурса, но правила всё те же: используйте read-only root или overlay там, где питание может отключиться внезапно, не устраивайте своп на eMMC, и выбирайте файловые системы, устойчивые к внезапным выключениям. Для промышленного применения модуль семейства CM4 сочетает встроенную eMMC с термокомпенсированным кварцевым генератором TCXO для точного хода часов, и это оправданный выбор в изделиях.
Финальный штрих - тестовый цикл включений: записали образ, запустили загрузку, проверили SSH, выключили и повторили несколько раз, чтобы убедиться, что всё стабильно. После такого мини-марафона модуль смело ставится в корпус и забывается, потому что работу вы уже сделали хорошо.
Отладка, когда rpiboot не видит модуль
Самое распространённое промедление начинающих - запуск rpiboot до подключения устройства или наоборот. Правильный порядок простой: сначала запускается rpiboot, потом на модуль подаётся питание через выбранный порт. Если диск не появился, проверяем варварский список: правильный ли USB-порт на каркасе (обычно промаркирован OTG), надёжен ли кабель (зарядные без данных - привычная причина молчания), установлен ли джампер в положении загрузки. Это описанная тройка решает 95 процентов всех "не определяется".
Ещё один популярный вопрос - когда raspberry pi видит устройство, а lsblk на компьютере не находит диска. Тогда посмотрите в dmesg: там будет либо опознанное устройство, либо внятная ошибка, и решение последует незамедлительно.
Большая подготовка, резервная запись и развёртывание партии
Если перед вами лежит серия одинаковых модулей, Process упрощается до цикла: подключили, dd-слили эталон, отключили, пересчитали хеши. Храните эталонный образ в защищённом виде с версией и контрольной суммой, и тогда вопрос "что у тех партий внутри" никогда не будет для вас загадкой. Даже самый крохотный производственный процесс быстро начинает требовать такого порядка, и начинать его лучше с первого же устройства.
Вторая из той же оперы заметка - массирование обновлений: если партия устройств уже расставлена по местам, подготовка образа обновления на eMMC выполняется через тот же цикл rpiboot, либо через плановую замену на SD. Это зависит от изделия, но помнить оба маршрута обязательно - потому что лишний вариант доступа никогда не помешает.
Итоговая памятка по работе с eMMC
Наконец-то суммируем материал в краткую инструкцию. Режим mass storage через rpiboot, запись образа знакомыми инструментами, проверка загрузки перед установкой в корпус, резервное копирование состояния через чтение eMMC в файл. Этот небольшой этикет превращает управление Compute Module из затянутой возни в деловую процедуру, после которой модуль отправляется работать по назначению, а вы занимаетесь следующим делом.
На этом история установки на eMMC завершена. В следующий раз, когда в руках окажется стопка свежих модулей, вы будете знать точный путь от блистера до работающего устройства, и этот спокойный уверенный процесс и есть главное достижение.
Из жизни, когда eMMC выигрывает у SD в полевых условиях
С течением времени раскрывается ещё один немаловажный довод в пользу встроенной памяти - устойчивость к вибрациям и непреднамеренному извлечению. Для устройства, установленного в транспорте или в полевом шкафу, торчащая SD перестаёт быть рабочим выбором сразу же, и eMMC становится ответом по всем практическим пунктам. Доводы за её выбор просты: прочность пайки, лучший контроллер, управляемый износ под контролем устройства и отсутствие внешнего носителя, который можно выдернуть любопытным пальцем.
Рецепт постоянного резервирования
Сложим привычку: раз в квартал снимается образ eMMC в файл; файл кладётся на сервер с обозначением даты; хранятся несколько поколений назад. Такой простой обход создаёт спокойствие, которое не так часто можно купить простым набором привычек. И тот день, когда устройство внезапно не выйдет на связь, перестанет быть казусом - вы просто достанете последний образ и вернёте всё к норме за четверть часа.
Замыкая, уверенность как навык
В конце концов работа с eMMC сводится к делу, знакомому любому администратору: знать, как читать, знать, как писать, знать, как откатить. Овладев этим, вы не будете зависеть от прихотей оборудования, сроков поставки или чьих-то форумов. И это та самая свобода, за которую всё и затевалось.
О модулях и стандартах памяти на рынке
Линейка Compute Module удобно удивляет владельца встречной совместимостью: новые платы того же семейства подключаются по схожему интерфейсу, а различие в объёмах памяти не меняет механику перепрошивки, так что переучиваться заново не приходится. Один раз понятый rpiboot потом работает на всех ваших модулях, и это поддерживает спокойствие долгоживущего проекта, который должна облыжно протянуть года, а не кварталы.
По дороге когда-нибудь встретится вопрос о распространённой копии с eMMC на следующую такую же - в состав этой истории входит использование cfdisk или fdisk для приведения разметки в соответствие с целевым объёмом, и это делается элементарно по каждому отдельному случаю. Хватит одного осознанного раза, чтобы дальше всё пошло само собой.
Финальный свод
Всё это теперь сводится к компактной логике: rpiboot, запись, проверка, backup, развёртывание. Пройдите эту цепочку один раз - и каждый следующий модуль будет проходить за вас с удовольствием короткой процедуры, а в вашей голове вместо тревоги останется аккуратная коллекция эталонных образов, носящих свои даты как номера заслуг.
Живой сценарий, развернуть эталон на партию плат
Сценарий, повторяющийся много раз, выглядит одинаково и утешает своей предсказуемостью. Подключили новый модуль, запустили rpiboot, записали проверенный образ, отключили - переход к следующему. С пятым устройством время на один уже сравнивается с процедурой записи SD, а внимание требуется лишь на аккуратность джампера. Если добавить сюда контрольную команду проверки контрольной суммы после записи, получается процедура уровня серийной работы, которую смело поручают любому внимательному участнику.
Тем самым задача исчерпана: обновление прошивки становится задачей склада, а не бросания техники, и любая ошибка распознаётся на этапе записи, а не после монтажа. Ровно такое свойство подъёма делает eMMC выбором тех, кто делает много устройств.
Доверенность на процедуры выписана, и ваш следующий модуль придёт в работу без приключений.
Порядок в работе с серийными изделиями
Для тех, кто собирается делать изделия серийно, полезно одно важное установление: протокол записи не терпит суеты. Держите рядом с собой шаблоны, контрольные суммы и список партий; ведите лог, который видно с первого взгляда, и вы сэкономите себе отличные часы поиска содеянного поздней ночью. Это не риторическая максимума, а рабочий принцип.
Документируйте и обязательно фотографируйте правильное положение джампера; карлики на форумах часто спорят, какой контакт отвечает за mass storage на конкретной плате, а фото сделанное в спокойном состоянии разрешает спор мгновенно. Когда оборудование горит, документация и фотки возвращают покой быстрее, чем любые советы.
И в этом качестве закончим: модуль с eMMC перестал быть экзотикой; он стал обычным рабочим модулем, который ждёт точной руки, а не героики. Сделайте первый заход хладнокровно - и дальше весь путь будет проходить без драмы и без неожиданных ударов током.
Соберите всё воедино: rpiboot, записанный образ, контрольная сумма, серийный образец - и ваша повестка на неделю станет короче на полтора дня, потому что модули будут просто устанавливаться и работать, а не заставлять вас сходить за инструкцией к форумам.
Усвоение этого маршрута даст вам спокойство подобное спокойствию хорошего электрика: замените модуль, присмотрите за его санитарией через проверенные образы, и посвятите силы чему-нибудь более интересному, чем поиск пропавшего диска в lsblk в час ночи.
В качестве добровольного эпилога полезно взглянуть вперед: новые ревизии плат покажутся, объёмы подрастут, и rpiboot останется той же бюро - проверенный канал, по которому вы уже хаживали многократно. Это предсказуемость, на которую можно опереться в месяцы давления и изменений, она заметно дороже любого метра в таблице характеристик.
И в этой точке раздел с установкой на встроенную память можно считать оконченным - до новых встреч на линии загрузки.
Вот и все операционные шаги.
Готово тут.