如何将同一图像复制到许多SD?


23

因此,最后我可以下订单订购Raspberry Pi!但是,配置它们将很麻烦。我想做的是:

  1. 下载股票图像,然后在单个Pi上修补它
  2. 将图像保存/提取/复制到所有其他SD卡
  3. 完成其他Pi的设置,而无需进行任何其他配置

我的计算机只有一个SD插槽,是否可以通过.img修改后的“主”卡生成文件?


4
汤姆查看这篇文章raspberrypi.stackexchange.com/questions/311/…我认为它回答了您的问题。
史蒂夫·罗比拉德

@SteveRobillard +1这将完美地回答问题。
吉文斯

4
要注意的一件事是SSH。如果在主服务器上设置SSH,则最终将在所有映像上获得克隆的SSH证书,这不一定是您想要的。OTOH,如果您打算无头使用Pis,则可能确实希望安装SSH ...
Darren Wilkinson

@darrenjw这是一个非常好的观点。您为我省去了一些尴尬,没有错。谢谢。
吉文斯,2012年

根据您打算如何使用大量Pis,您可能需要查看Andrew Mulholland的Raspi-LTSP项目。它不仅对课堂使用有用-对集群也非常有用。
戴夫·琼斯

Answers:


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(make it 9),以debian(raspbian)为单位/etc/network/interfaces

7

我有12分发自定义OS 相同的要求。环顾四周后,我发现了许多命令,但没有一个可以.zip通过SD卡创建压缩文件的工具,因此我编写了mkimg.sh,其工作方式如下:

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

这会将卸载的设备放在/dev/sda,缩小文件系统和分区,并写出压缩的zip。在我的使用中,这编写了一个〜1.5GB的Raspbian系统来创建<500MB .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记忆棒SD卡适配器。

步骤2:使用标准方法在主计算机上写入2张SD卡图像。

步骤3:将2张带有图像的SD卡放入2张Raspberry Pi中,然后将它们连接到网络并通电。

步骤4:将2张空SD卡插入USB记忆棒适配器中,然后将其插入2张正在运行的Rapsberry Pis中。

步骤5:现在,有趣的是,在您的主计算机上使用multixterm就像在命令行上一样multixterm -xc“ ssh%n” host1 host2其中host1和host2是Raspberry Pi的ip地址。

步骤6:在multixterm的stdin窗口中,您可以像通常将图像写入SD卡一样使用dd,但现在multixterm会将dd命令同时发送到两个Raspberry Pi。

步骤7:重复步骤3-6,直到所有卡都写完为止。

您成像的SD卡越多,可以用来成像新SD卡的Raspberry Pi越多。显然,这项技术不会一次性写入所有卡,但可以减少完成写入所有卡所需的时间。这项技术主要是实验性的,因此您的行驶里程会有所不同,但是它的理论听起来像是一个有趣的实验...


非常有趣-但对于大规模生产也非常昂贵=)呵呵,喜欢它。可能没有办法在不同的控制台中将图像超线程写入不同的USB SD适配器吗?
Piotr Kula 2012年

5

您正在寻找的是用于SD卡或SD卡复制器的Gang编程器设备。

是的,这些系统确实存在。 这是我通过Googling找到的“ sd卡帮派程序员”。该特定设备具有一个主插槽,可以一次最多复制7个从SD卡。其他带有3个或11个从属插槽的编程器也可提供。

也有不同类型的程序员。有些可以从硬盘驱动器中刷新图像,并且受PC上安装的软件控制。其他设备,例如上面链接的设备,不必与服务器接口,因为它们将信息从主芯片中镜像出来。

值得一提的是,这些设备并不便宜。它们通常用于大规模生产环境,并且需求不会过高。准备为具有此功能的优质设备支付至少1,000美元。

ProDuplicator.com似乎还有更多的SD卡复制选项。


我想知道为什么这些花费那么多,考虑到您仍然需要坐下来手动插入和取出SD卡。
德米特里·格里戈里耶夫

@DmitryGrigoryev在我回答后的5年中,复制器站点现在有一个价格低于600美元的站点,恕我直言,这似乎很便宜。请记住,数量决定价格。没有多少人需要这些,所以它们很昂贵,因为他们需要收回开发和制造成本。如果每10台PC或笔记本电脑中就有一个这样的设备,则可能是100-150美元的设备。
RLH

5

我们对一个项目有类似的要求,即我们需要每天能够将图像写入10多个Raspberry Pi SD卡。我们查看了可购买的各种Card Duplicator,但发现其中的大多数都无法成功制作可引导的SD卡,因为大多数只能直接复制文件而不是可引导信息,它们也非常昂贵!

因此,作为一个解决方案,我们编写了自己的简单的基于Web的软件,以在连接到2个7端口Belkin供电的USB集线器的Raspberry Pi上运行(Pi限制为2个集线器,最多14个USB端口)。

现在,我们已将其作为开源软件发布,以帮助具有相同要求的其他人。目前只有源代码可用,但我们还将基于运行Nginx + php的Arch Linux ARM上传图像文件

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


2

这适用于Mac OSX。

卸下您修补过的卡,然后尝试:

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

替换sdcardlocation为SD卡的位置。

您可以.img.dmg或交换.iso

接下来,要准备好其他卡,请卸下它们,然后以交换的值运行前面的代码。这行是这样的:

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

在将它们从读卡器中取出之前,请确保先卸下它们。


1

尽管如何备份Raspberry Pi?对如何克隆单个SD卡提供了极好的限制,一次只能完成一张,因此数十张卡将变得乏味。

鉴于似乎没有人生产出多卡SD卡读卡器(可以同时容纳多个SD卡的读卡器),而且您可以很便宜地购买USB集线器和一堆单个SD卡USB读卡器,加快此过程的一种方法是制作自己的SD卡复制器。

您甚至可以编写脚本以将您选择的Raspberry Pi映像自动写入到插槽中插入的任何空SD卡插槽中。脚本可以自动检测到已插入卡,并指示复制完成的时间。

正如darrenjw在评论中提到的那样,您将希望在首次引导克隆的映像时替换每个克隆映像中的ssh证书,因此,您可能需要确保在连接到专用网段时首次完成引导,然后再进行连接将其连接到互联网。


通常,您不会安装卡来将图像刷新到卡上。
亚历克斯·张伯伦

谢谢@AlexChamberlain,我还应该等到Pi到达几个星期的时间(Grrr,如果我知道我在RS等待名单上有很长的交货时间,我会从Farnell订购很长的时间)首先是准备时间),所以我实际上还没有尝试过。
Mark Booth 2012年

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图像,以自定义各种内容,例如wifi密码,ssh键等。


0

另一种选择是使用flash(一种命令行工具),以对OS进行某些自定义的操作来刷新SD卡。


0

要解决计算机上只有一个SD卡插槽的问题,有效地刻录多个图像的简单方法是使用有源USB集线器和许多廉价的microSD-USB适配器。我已经测试过使用13端口USB-3集线器和便宜的(不到1美元)microSD-USB适配器。

到目前为止,只要同时刻录许多基本映像,请签出dcfldd。在raspbian jessie存储库中可用。它是GNU dd的增强版本,能够同时写入多个图像。我进行了一些随意的测试,并且能够将RPi 3B上的microSD卡映像复制到插入USB集线器上的3种类型的适配器中的7张卡中。对A +上的3端口USB 2.0集线器的先前测试也可行。一旦正确设置了参数,这几乎就是一劳永逸的事情。我仅限于7个适配器,但是没有理由认为它不适用于大量卡,尽管速度将限于最慢的目标卡。

如果您需要在配置更改开始运行并在网络上时使它们保持最新状态,那么我会考虑使用ansibleFabric来通过ssh进行更新,并避免重新刻录卡以使其保持最新状态。

最后,您可以使用唯一的标识符(例如,基于网络MAC地址)来修改主机,以更改每个RPi上的主机名,从而可以轻松定位,avahi而无需修改每个RPi以避免在启动后产生冲突,从而避免冲突。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.