W przypadku projektu, nad którym pracuję, chciałbym stworzyć obraz „podstawowy” oparty na Raspbian, który mogę zainstalować na wielu Pisach.
Idealnie chciałbym móc (na moim komputerze) wziąć obraz Raspbian, apt-get kilka pakietów, edytować konfigurację, a następnie utworzyć i obraz karty SD z tego, aby umieścić na moim Pis.
Czy istnieje prosty lub zalecany sposób to zrobić? Jakieś pułapki, które mogę spotkać?
Chciałbym uniknąć ręcznego majsterkowania pi, a następnie klonowania tego obrazu. Przypuszczalnie Raspbian jest stworzony w taki sposób, że nie jest to ktoś, kto ręcznie klika przyciski Pi. Chciałbym to zrobić w ten sposób, jeśli mogę.
Idealnie chcę stworzyć coś, co można automatycznie zbudować na serwerze ciągłej integracji - nie chcę procesu kompilacji, który wymaga „zapisu karty SD, włóż ją do Pi”, ponieważ chcę być ale, aby tworzyć obrazy bez żadnych fizyczny dostęp do Raspberry Pi.
apt-get
; najłatwiejszym sposobem na to byłoby użycie maszyny wirtualnejrsync
z zamontowanym obrazem identycznym jak ten używany do uruchomienia maszyny wirtualnej (ponieważ same obrazy maszyn wirtualnych nie są do tego odpowiednie), ale myślę, że jedyną opcją maszyny wirtualnej jest tutaj QEMU, która AFAICT to PITA.Odpowiedzi:
Podstawa Raspberry Pi wykorzystuje zestaw skryptów bash automatyzujących QEMU do generowania ich obrazów. Nadal powinieneś przyjrzeć się również wbudowanemu „standardowi przemysłowemu” i Yocto.
https://github.com/RPi-Distro/pi-gen
http://cellux.github.io/articles/diy-linux-with-buildroot-part-1/
źródło
Mój projekt Nard SDK ma wiele pożądanych funkcji. To nie jest Raspbian, ale ma emulację binarną Raspbian, a zatem jest bardzo blisko. Z Nard budujesz wszystko na PC, a proces jest bardzo szybki i powtarzalny. Wszystko jest skryptowalne i można to zrobić np. Przez ciągłą integrację nocną.
http://www.arbetsmyra.dyndns.org/nard/
źródło
Moim zdaniem robienie tego w sposób, który zasugerowałeś (montaż, robienie obejść związanych z aktualizacją i konfiguracją itp.) Stanowi więcej wyzwań niż rzeczywiste rozwiązania . Jasne, może to być zabawne, jeśli jesteś zainteresowany, ale najlepszym i najłatwiejszym sposobem może być ten, którego unikasz.
Polecam dostać Pi i zrobić to, co musisz na nim zrobić, a następnie zrobić zdjęcie karty SD. Następnie użyj tego obrazu na innym Pis, ponieważ ten obraz jest już skonfigurowany.
Uwaga: Zakładam, że będziesz używać Raspbian. Zakładam również, że jesteś zwykłą osobą, a nie osobą, która często przygotowuje zdjęcia (np. Raspberry Pi Foundation).
Kroki jeśli zrobić majstrować przy swoim pi:
apt-get update -y && apt-get upgrade
aktualizować pakietyKroki, jeśli nie majstrujesz przy swoim Pi (patrz uwaga powyżej):
deb
plik dla każdego pakietu, który chcesz zaktualizować, a także ich zależności , a także zależności tych zależności oraz zależności tych zależności .apt-offline
jest kłopotem. Zobacz ten linkapt-get
nie będzie działać offline.deb
szczegóły pliku tutaj . Powodzenia.Nie widzę żadnej korzyści z nie majstrowania przy swoim Pi.
Wytnij sobie trochę luzu i majstrowania przy swoim Pi. Musisz to zrobić tylko raz.
źródło
Then find a way to install all of those packages without using/tinkering with your Pi.
dpkg
na samym systemie, a nie na zamontowanym obrazie. Ponadto OP planuje używać swojego komputera, więc*.deb
pliki, które masz, są w pierwszej kolejności niewłaściwe dla architektury (PC to x86 / x64, Pi to 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.
Myślę, że to, czego szukasz, jest pewnego rodzaju
(software) configuration management
. Dzięki temu będziesz mógł uruchomić podstawowy obraz raspbian, a następnie przeforsować własną konfigurację (w tym nowe pakiety i tym podobne). Istnieje wiele systemów SCM. Minusem jest to, że większość tych systemów ma na celu wsparcie sieci na dużą skalę, więc może być nieco przesadna w stosunku do twoich celów. Potrzebujesz także jakiegoś serwera administracyjnego. Najpopularniejsze SCM to Puppet , Chef , Ansible . Artykuły na dobry początek:To rodzaj ogólnej odpowiedzi, ale SCM to szerokie pole. Może warto się w to zagłębić w zależności od planów.
źródło