Für ein Projekt, an dem ich arbeite, möchte ich ein "Stock" -Image auf Basis von Raspbian erstellen, das ich auf vielen Pis installieren kann.
Idealerweise möchte ich in der Lage sein, (auf meinem Computer) das Raspbian-Image zu erstellen, einige Pakete zu erhalten, einige Konfigurationen zu bearbeiten und dann ein SD-Karten-Image daraus zu erstellen, um es auf mein Pis zu setzen.
Gibt es eine einfache oder empfohlene Möglichkeit, dies zu tun? Irgendwelche Fallstricke, denen ich begegnen könnte?
Ich möchte es vermeiden, manuell an einem Pi zu basteln und dieses Bild dann zu klonen. Vermutlich ist Raspbian in irgendeiner Weise gemacht, dass nicht jemand manuell auf Schaltflächen auf einem Pi klickt. Ich würde es gerne so machen, wenn ich kann.
Idealerweise möchte ich etwas erstellen, das automatisch auf einem Continuous Integration Server erstellt werden kann. Ich möchte keinen Build-Prozess, bei dem eine SD-Karte geschrieben und in einen Pi eingefügt wird, da ich Bilder ohne diese erstellen möchte physischer Zugang zu einem Raspberry Pi.
apt-get
. Der einfachste Weg, dies zu tun, ist die Verwendung einer VMrsync
mit einem bereitgestellten Image, das mit dem zum Starten der VM verwendeten Image identisch ist (da VM-Images selbst dafür nicht geeignet sind). Ich denke jedoch, dass die einzige VM-Option hier QEMU ist AFAICT ist eine PITA.Antworten:
Die Raspberry Pi Foundation verwendet eine Reihe von Bash-Skripten, die QEMU automatisieren, um ihre Bilder zu generieren. Sie sollten sich immer noch mit den "Industriestandards" Buildroot und Yocto befassen.
https://github.com/RPi-Distro/pi-gen
http://cellux.github.io/articles/diy-linux-with-buildroot-part-1/
quelle
Mein Projekt Nard SDK bietet viele der gewünschten Funktionen. Es ist kein Raspbian, aber es hat eine binäre Raspbian-Emulation und ist daher sehr nah. Mit Nard bauen Sie alles auf einem PC und der Prozess ist sehr schnell und reproduzierbar. Alles ist skriptfähig und kann zB durch eine nächtliche kontinuierliche Integration erfolgen.
http://www.arbetsmyra.dyndns.org/nard/
quelle
Meiner Meinung nach sind die von Ihnen vorgeschlagenen Vorgehensweisen (Mounten, Problemumgehungen für das Aktualisieren und Konfigurieren usw.) anspruchsvoller als die tatsächlichen Lösungen . Sicher, es mag Spaß machen, wenn Sie interessiert sind, aber der beste und einfachste Weg ist der, den Sie meiden.
Ich empfehle Ihnen, sich einen Pi zu besorgen und das zu tun, was Sie tun müssen, und dann ein Abbild der SD-Karte zu erstellen. Verwenden Sie dann dieses Bild auf Ihrem anderen Pis, da dieses Bild bereits konfiguriert ist.
Hinweis: Ich gehe davon aus, dass Sie Raspbian verwenden. Ich gehe auch davon aus, dass Sie nur eine durchschnittliche Person sind und keine Person, die häufig Bilder erstellt (z. B. Raspberry Pi Foundation).
Schritte , wenn Sie tun , basteln mit Ihrem Pi:
apt-get update -y && apt-get upgrade
Pakete aktualisierenSchritte, wenn Sie nicht mit Ihrem Pi basteln (siehe Hinweis oben):
deb
Datei für jedes Paket, das Sie aktualisieren möchten, sowie deren Abhängigkeiten sowie die Abhängigkeiten dieser Abhängigkeiten und die Abhängigkeiten dieser Abhängigkeiten .apt-offline
ist ein Ärger. Siehe diesen Linkapt-get
funktioniert nicht offline.deb
Datei Details hier . Viel Glück.Ich sehe keinen Vorteil darin, nicht an deinem Pi herumzubasteln.
Schneiden Sie sich etwas Spielraum und basteln Sie an Ihrem Pi. Sie müssen es nur einmal tun.
quelle
Then find a way to install all of those packages without using/tinkering with your Pi.
dpkg
auf dem System selbst verwenden, nicht auf einem bereitgestellten Image. Außerdem plant OP, seinen / ihren PC zu verwenden, sodass die*.deb
Dateien, die Sie haben, in erster Linie für eine falsche Architektur sind (PC ist x86 / x64, Pi ist ARMv6 / v7)I'll be honest and say that my impression is you are pursuing the Y side of an XY problem with too much vigour -- it's implied you think the simpler method (just set up an image on a pi, which can be done from a computer via remote login, and the image itself tweaked by mounting, which can be done on a PC, and all of this can be automated with scripting) is too much hassle, and so you have put your hopes in a method that is actually much more hassle.
Ich denke, was Sie suchen, ist eine Art von
(software) configuration management
. Mit dieser Option können Sie ein Raspbian-Image starten und dann Ihre eigene Konfiguration (einschließlich neuer Pakete und dergleichen) übertragen. Es gibt viele SCM-Systeme. Der Nachteil ist, dass die meisten dieser Systeme auf die Unterstützung von Netzwerken in großem Maßstab ausgerichtet sind und daher für Ihren Zweck möglicherweise etwas übertrieben sind. Sie benötigen auch eine Art Bereitstellungsserver. Die beliebtesten SCMs scheinen Puppet , Chef , Ansible zu sein . Artikel zum Einstieg:Dies ist eine allgemeine Antwort, aber SCM ist ein weites Feld. Vielleicht lohnt es sich, sich damit zu beschäftigen, je nachdem, was Sie vorhaben.
quelle