Как я могу скопировать одно и то же изображение на множество SD?

23

Итак, наконец, я могу разместить этот оптовый заказ на Raspberry Pis ! Однако их настройка будет рутиной. Что я хотел бы сделать, это:

  1. Скачайте стоковую картинку и повозитесь с ней на одном пи
  2. Сохранить / извлечь / скопировать это изображение на все другие SD-карты
  3. Настройте все остальные Pi без необходимости каких-либо дополнительных настроек

У моего компьютера только один слот для SD, так есть ли способ создать .imgфайл из моей модифицированной «основной» карты?

Том Медли
источник
4
Том зацените этот пост raspberrypi.stackexchange.com/questions/311/… Я думаю, что он отвечает на ваш вопрос.
Стив Робиллард
@SteveRobillard +1 Это ответит на вопрос отлично.
Jivings
4
Одна вещь, о которой нужно знать, это SSH. Если вы настроите SSH на главном сервере, вы получите клонированные сертификаты SSH на все образы, что не обязательно то, что вы хотите. OTOH, если вы собираетесь использовать Pis без головы, вы, вероятно, хотите установить SSH ...
Даррен Уилкинсон
@darrenjw Это очень хороший момент. Вы избавили меня от смущения и не ошиблись. Спасибо.
Jivings
В зависимости от того, как вы собираетесь использовать эту массу Pis, вы можете попробовать проект Raspi-LTSP Эндрю Малхолланда . Это не только полезно для использования в классе - это также очень хорошо для кластеров.
Дейв Джонс

Ответы:

7

Перед записью мастера клонирования в копии необходимо выполнить несколько простых подготовительных шагов, что избавит вас от многих головных болей.

  1. Настройте мастер-клон для DHCP
  2. Удалите все внутри /etc/ssh/ssh_host*(они воссоздаются при запуске SSHD)
  3. если у вас есть /etc/udev/rules.d/70-network*файл, вам нужно изменить eth0запись на что-то другое (я использовал eth9для моих клонов) - и не забудьте обновить связанный ifconfigфайл - в centos, то есть /etc/sysconfig/network-scripts/ifcfg-eth0(сделать его 9) и в debian (raspbian) это/etc/network/interfaces
Nox
источник
7

У меня были те же требования, что 1и 2для распространения кастомизированной ОС. Посмотрев вокруг, я нашел много команд, но ни одного инструмента для создания компактного .zipфайла с SD-карты, поэтому я написал mkimg.sh, что работает так:

sudo bash mkimg.sh /dev/sda sdcard.img.zip

Это берет размонтированное устройство в /dev/sda, сокращает файловую систему и раздел, и записывает сжатый почтовый индекс. В моем случае это пишет систему Rasbbian размером ~ 1,5 ГБ для создания <500 МБ .zip.

Наряду с проверками работоспособности и вычислениями размера скрипт по сути делает это:

e2fsck -f /dev/sda2
resize2fs -M /dev/sda2
parted --align optimal /dev/sda unit MB resizepart 2 1700 yes
dd bs=1M if=/dev/sda of=sdcard.img count=1900
zip sdcard.img.zip sdcard.img
parted /dev/sda resizepart 2 16.0GB
resize2fs /dev/sda2

Сценарий и документация доступны на GitHub .

Берто
источник
5

Вы можете использовать сами Raspberry Pis вместе с multixterm на вашем главном компьютере, чтобы «загрузить ремешок» для записи SD-карты. Вы должны быть в состоянии найти multixterm во многих пакетных менеджерах дистрибутива.

Шаг 1: Купите несколько адаптеров для карты памяти USB.

Шаг 2: Используйте стандартные методы, чтобы записать 2 изображения SD-карты на ваш главный компьютер.

Шаг 3: Поместите 2 SD-карты с изображениями в 2 Raspberry Pis и подключите их к сети и включите питание.

Шаг 4: Вставьте 2 пустые SD-карты в адаптеры USB-флешки и подключите их к двум работающим Rapsberry Pis.

Шаг 5: Теперь вот где это становится интересным: с вашего основного компьютера используйте multixterm, например, из командной строки multixterm -xc "ssh% n" host1 host2, где host1 и host2 - это ip-адреса Raspberry Pis.

Шаг 6: Внутри окна стандартного ввода multixterm вы можете использовать dd, как обычно, для записи изображений на SD-карты, но теперь multixterm отправит эту команду dd на оба Raspberry Pis одновременно.

Шаг 7: Повторяйте шаги 3-6, пока у вас не будут написаны все ваши карточки.

Чем больше SD-карт вы создадите, тем больше Raspberry Pis вы сможете использовать для создания новых SD-карт. Очевидно, что эта техника не будет записывать все ваши карты за один раз, но это сократит время, необходимое для завершения записи всех карт. Эта техника будет в значительной степени экспериментальной, поэтому ваш пробег будет варьироваться, но теория звучит как интересный эксперимент ...

Дэн Б
источник
Очень интересно - но и очень дорого для массовости =) хе-хе, это нравится. Может быть, нет возможности гиперзаписи записи изображений на разных консолях на разные USB SD адаптеры?
Петр Кула
5

То, что вы ищете, это устройство Gang Programmer для SD-карт или SD Card Duplicator.

Да, эти системы существуют. Вот то, что я нашел Googling "программистом SD Card Gang". Это конкретное устройство имеет главный слот, в который можно копировать до 7 ведомых SD-карт одновременно. Другие программисты с 3 или 11 слотами слотов также доступны.

Есть также разные типы программистов. Некоторые могут прошивать образ с вашего жесткого диска и управляются программным обеспечением, установленным на ПК. Другие устройства, такие как те, что связаны выше, не должны взаимодействовать с серверами, потому что они отражают информацию от мастер-чипа.

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

ProDuplicator.com, похоже, имеет еще несколько вариантов дублирования SD-карты.

RLH
источник
Интересно, почему они стоят так дорого, учитывая, что вам все еще нужно присматривать за этой штукой, чтобы вручную вставлять и вынимать SD-карты.
Дмитрий Григорьев
@DmitryGrigoryev За 5 лет, прошедших с моего ответа, на сайте дупликатора теперь есть сайт стоимостью менее 600 долларов, что, по-моему, дешево. Имейте в виду, что количество влияет на цену. Не так много людей нуждаются в них, поэтому они дороги, потому что они должны возместить затраты на разработку и производство. Если бы был один из них на каждые 10 ПК или ноутбуков, это было бы устройство стоимостью 100-150 долларов.
RLH
5

У нас было аналогичное требование для проекта, в котором нам нужно было ежедневно записывать изображения на 10+ SD-карт Raspberry Pi. Мы рассмотрели различные карты Card Duplicator, доступные для покупки, но обнаружили, что большинство из них не смогут успешно создать загрузочную SD-карту, так как большинство копирует только файлы напрямую, а не загрузочную информацию, они также смехотворно дороги!

Таким образом, в качестве решения мы написали наше собственное простое веб-программное обеспечение для запуска на одном Raspberry Pi, подключенном к 2 х 7-портовым USB-концентраторам с питанием от Belkin (у Pi есть ограничение на 2 хаба и максимум 14 USB-портов).

Теперь мы выпустили это программное обеспечение с открытым исходным кодом, чтобы помочь другим, у кого есть такие же требования. В настоящее время доступен только исходный код, но мы также будем загружать файл изображения на основе Arch Linux ARM под управлением Nginx + php

http://www.rockandscissor.com/projects/osid

user10282
источник
2

Это работает на Mac OS X.

Размонтируйте карту, с которой вы возились, затем попробуйте:

sudo dd if=/dev/sdcardlocation of=backupimage.img,

Замените sdcardlocationна местоположение вашей SD-карты.

Вы можете поменяться .imgс .dmgили .iso.

Затем, чтобы подготовить другие карты, размонтируйте их и запустите предыдущий код со значениями, поменяемыми местами. Строка будет такой:

sudo dd if=backupimage.img of=/dev/sdcardlocation,

Обязательно размонтируйте их, прежде чем вынимать их из устройства чтения карт.

Theoremiser
источник
1

Хотя, как мне сделать резервную копию моего Raspberry Pi? предоставляет отличные инструкции о том, как клонировать одну SD-карту, делая это по одной за десятки карт, будет утомительно.

Учитывая, что никто, кажется, не производил считыватель SD-карт с несколькими картами (который может одновременно хранить несколько SD-карт) и тот факт, что вы можете купить USB-концентратор и несколько USB-считывателей с одной SD-картой очень дешево, Один из способов ускорить процесс - создать собственный дубликатор SD-карты.

Вы даже можете написать скрипт для автоматической записи выбранного вами изображения Raspberry Pi на любой пустой слот для SD-карты, вставленный в слот. Скрипты могут автоматически обнаружить, что карта была вставлена, и указать, когда копирование завершится.

Как упоминалось в комментариях darrenjw , вы захотите заменить ssh-сертификаты в каждом из клонированных образов при первой загрузке, поэтому вы можете убедиться, что эта первая загрузка выполнена при подключении к сегменту частной сети перед подключением это к сети, подключенной к интернету.

Марк Бут
источник
Обычно вы не монтируете карту, чтобы вставить на нее изображение.
Алекс Чемберлен
Спасибо @AlexChamberlain, у меня все еще есть пара недель, прежде чем мой Pi должен прибыть (Grrr, если бы я знал, что я был в списке ожидания RS в течение длительного времени, я бы только что заказал у Фарнелла с длинным во-первых, время выполнения), так что я на самом деле еще не пробовал это.
Марк Бут
1

Обычно есть лучший инструмент для этого, чем копировать много RP изображений.

Но это зависит от того, что вы действительно хотите сделать.

Вы должны взглянуть на cfengine3 [1], fai [2], chef [3], fabric [4] или puppet [5]. Они являются инструментами автоматической настройки, которые могут быть полезны для выполнения каких-либо действий на вашем компьютере при первом запуске (и позже).

[1] http://cfengine.com/ [2] http://fai-project.org/ [3] http://www.opscode.com/chef/ [4] http: //www.debian- Administration.org/articles/671 [5] http://puppetlabs.com/puppet/puppet-enterprise/

Андерс
источник
1

PiBakery может быть жизнеспособным решением для вас. PiBakery позволяет создавать настраиваемое изображение Raspbian, используя блоки для настройки различных вещей, таких как пароли Wi-Fi, ключи SSH и т. Д.

эмир
источник
0

Другой альтернативой является использование flash , инструмента командной строки для прошивки SD-карт с определенными настройками ОС.

эмир
источник
0

Чтобы решить проблему, связанную с наличием только одного слота для SD-карты на вашем компьютере, простой способ эффективно записать несколько изображений - это USB-концентратор с питанием и ряд недорогих адаптеров microSD-USB. Я тестировал с использованием 13-портового концентратора USB-3 и дешевых (<$ 1) адаптеров microSD-USB.

Так как прожигание большого количества базовых изображений одновременно, проверьте Поскольку вы записываете dcfldd . Он доступен в репозиториях raspbian jessie. Это расширенная версия GNU dd, с возможностью одновременной записи в несколько изображений. Я провел некоторое случайное тестирование и смог скопировать образ карты microSD на RPi 3B на набор из 7 карт, подключенных к адаптерам 3 типов на концентраторе USB. Предыдущие тесты с 3-портовым USB 2.0 хабом на A + также работали. Это в значительной степени запускается и забывается, как только вы правильно установите параметры. Я был ограничен 7 адаптерами, но нет никаких причин думать, что он не будет работать с большим количеством карт, хотя скорость будет ограничена скоростью самой медленной карты назначения.

Если вам нужно постоянно обновлять RPS с изменениями конфигурации после их запуска и в вашей сети, я бы хотел использовать ANSIBLE или fabric, чтобы разрешить обновления через ssh и избежать необходимости повторной записи карты, чтобы держать их в курсе.

Наконец, вы можете изменить свой мастер, чтобы изменить имя хоста на каждом RPi, используя уникальный идентификатор (например, основанный на сетевом MAC-адресе), чтобы обеспечить простое определение местоположения avahiбез необходимости изменять каждый RPi, чтобы избежать конфликтов после его загрузки, чтобы избежать конфликтов.

bobstro
источник