对于我正在从事的项目,我想基于Raspbian创建一个“股票”图像,该图像可以安装在许多Pis上。

理想情况下,我希望能够(在我的计算机上)获取Raspbian映像,易于获得一些程序包,编辑一些配置,然后从中创建SD卡映像并放入我的Pis 。

是否有简单或推荐的方法来做到这一点?我可能遇到任何陷阱吗?

我希望避免手动修改pi,然后再克隆该图像。大概说Raspbian是用某种方式制作的,而不是有人手动单击Pi上的按钮。如果可以的话,我想用这种方式。写入SD卡,然后将其放入Pi中”,因为我希望在不对Raspberry Pi进行任何物理访问的情况下创建映像。

评论

可能派上用场:如何安装Raspberry Pi Linux发行映像? -请注意已接受答案中强调的一行,“如果您进行了任何更改,则这些更改将包含在.img文件中。”不幸的是,这没有提供应用apt-get的机会。最简单的方法是使用VM和rsync并使用与用于启动VM的映像相同的已挂载映像(因为VM映像本身并不适合这样做),但我认为这里唯一的VM选项是QEMU,哪个AFAICT是PITA。

另一种方法是网络启动。

Win32DiskImager具有读取功能,您是否尝试过?

#1 楼

Raspberry Pi基金会使用了一组自动化QEMU的bash脚本来生成其图像。
您仍应同时研究“行业标准”的buildroot和Yocto。

https://github.com。 com / RPi-Distro / pi-gen

http://cellux.github.io/articles/diy-linux-with-buildroot-part-1/

评论


如果OP希望创建一个行业标准的发布映像,是的,这就是要走的路,但是它的学习曲线很大,我希望在这条路上没有业余爱好者。

– Piotr Kula
16 Jul 19 '14:36



这听起来像我要找的东西!是否有使用指南? build.sh似乎假设设置了许多环境变量。

–安迪·史密斯(Andy Smith)
16年7月19日在17:44

可能在TODO下属于#4;)几个月没有被人碰到,所以涉及的人正在忙于其他事情或对此失去了兴趣。

–金锁♦
16年7月21日在15:06

@goldilocks,所以这不是基础树莓图像的来源吗?

–安迪·史密斯(Andy Smith)
16年7月21日在18:21

我会说实话,我的印象是您追求XY问题的Y面过于活跃-这意味着您认为更简单的方法(只需在pi上设置图像,这可以通过通过远程登录计算机,以及通过安装来调整图像本身(可以在PC上完成,并且所有这些操作都可以通过脚本自动执行)太麻烦了,因此您将希望寄托在实际上是更麻烦。

–金锁♦
16年7月21日在18:33

#2 楼

我的项目Nard SDK具有您想要的许多功能。它不是Raspbian,但具有Raspbian二进制仿真,因此非常接近。使用Nard,您可以在PC上构建所有内容,并且该过程非常快速且可重复。一切都是可编写脚本的,并且可以通过例如每晚持续集成。http://www.arbetsmyra.dyndns.org/nard/

#3 楼

我认为,按照您建议的方式(安装,进行更新和配置的解决方法等)进行操作比实际解决方案面临更多挑战。当然,如果您有兴趣的话,按照自己的方式做可能会很有趣,但是最好和最简单的方法就是避免使用。

我建议您拿一个Pi并做您想做的事情必须先做,然后制作其SD卡的映像。然后,由于该镜像已经配置,因此可以在其他Pi上使用该镜像。

注意:我假设您将使用Raspbian。我还要假设您只是普通人,而不是经常准备图像的人(例如Raspberry Pi Foundation)。


如果您对Pi进行修补,请执行以下步骤:


下载并安装您所选择的全新OS映像
插入以太网电缆/连接到WiFi


可以做局域网扫描是否不知道Pi的IP地址


通过SSH做事情




apt-get update -y && apt-get upgrade更新软件包
您的个人配置需求


制作图像,然后将该图像用于其他Pis。


如果您不满意,请执行以下步骤Pi(请参阅上面的注释):


使用https://raspberrypi.stackexchange.com/a/13138/24224上的说明下载最新的OS映像
安装映像(您也可以由于某些文件具有不同的FS布局,因此必须考虑使用哪种OS /图像)。


准备好计算器。


查找deb文件您要更新的每个包吃,加上他们的依赖性,再加上那些依赖性的依赖性,再加上那些依赖性的依赖性。 apt-offline很麻烦。请参考此链接


,然后找到一种方法来安装所有这些软件包,而无需与Pi一起使用/修补。 apt-get无法离线工作。 deb文件的详细信息在这里。祝你好运。


使用Hexxeh的工具更新Pi内核和低级内容

配置您的要求
将修改后的图像写入您的Pis的SD卡。


不修补您的Pi没有任何好处。

减轻自己的负担并修补一下与你的Pi。您只需要执行一次。

评论


通过获取,依赖关系以及那里的依赖关系以及那里的依赖关系等手动获取程序几乎是不可能的。但是,如果您使用apt-get并说要使用VLC,那么apt-get安装vlc --yes --print- uris。这将给出链接列表;下载后,将它们放在/ var / cache / apt / archives / partial中,然后运行dpkg -i partial / *。deb进行安装。更好的是,如果您获得Synaptics,则可以选择生成软件包下载脚本。在Linux计算机上运行该脚本,即可获得软件包。然后,您可以再次使用突触安装它们。

– NULL
16年7月19日在13:32

@NULL然后找到一种方法来安装所有这些软件包,而无需在您的Pi上使用/修补。

–PNDA
16年7月19日在13:45

@NULL据我所知,您只能在系统本身上使用dpkg,而不能在安装的映像上使用。另外,OP正计划使用他/她的PC,因此,您拥有的* .deb文件首先是针对错误的体系结构(PC是x86 / x64,Pi是ARMv6 / v7)

–PNDA
16年7月19日在13:47

正如我在问题中所指出的,我不想做1。至于2,这听起来很疯狂:)。是什么让您认为@flakeshakes的建议从2开始会更加困难?

–安迪·史密斯(Andy Smith)
16年7月21日在18:19



@AndySmith我会引用goldilock的评论:老实说,我的印象是您追求的XY问题的Y面过于活跃-这意味着您认为更简单的方法(只需在pi(可以通过远程登录在计算机上完成),并且通过安装调整图像本身(可以在PC上完成,并且所有这些操作都可以通过脚本自动执行)太麻烦了,因此您已经您的希望实际上是一种麻烦得多的方法。

–PNDA
16年7月22日在9:55

#4 楼

我认为您正在寻找的是(software) configuration management。有了这个,您将能够启动原始的raspbian映像,然后推送您自己的配置(包括新软件包等)。那里有很多SCM系统。
缺点是这些系统中大多数都旨在支持大规模网络,因此对于您的目的而言可能有些过大。您还需要某种配置服务器。最受欢迎的SCM似乎是Puppet,Chef,Ansible。
入门文章:

维基百科

这是一个通用的答案,但是SCM是一个广泛的领域。也许值得根据您的计划进行深入研究。

评论


Ansible似乎很有希望,因为它是无代理的,并且您不需要功能强大的服务器即可运行它。

– duenni
16年7月21日在6:26

不完全是,我希望图像已经生成,而不是我需要添加的内容。如果我的Pi没有网络连接,则此建议不起作用。

–安迪·史密斯(Andy Smith)
16年7月21日在18:17