Tworzenie wstępnie przygotowanego obrazu karty SD

19

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.

Andy Smith
źródło
3
Może się przydać: Jak zamontować obraz dystrybucyjny Raspberry Pi Linux? - zwróć uwagę na podkreśloną linię w zaakceptowanej odpowiedzi: „Jeśli coś zmienisz, zmiany te zostaną uwzględnione w pliku .img”. Niestety nie daje to możliwości złożenia wniosku apt-get; najłatwiejszym sposobem na to byłoby użycie maszyny wirtualnej rsyncz 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.
Złotowłosa
Innym podejściem byłoby uruchamianie z sieci.
lexu
Win32DiskImager ma funkcję odczytu, czy próbowałeś tego?
Kong Chun Ho

Odpowiedzi:

6

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/

płatek śniegu
źródło
Jeśli OP chce stworzyć obraz standardowego wydania w branży ... tak, to jest dobra droga, ale jest to ogromna krzywa uczenia się i nie życzę hobbystom podążać tą drogą.
Piotr Kula,
1
Brzmi jak to, czego szukam! Czy są jakieś przewodniki na temat korzystania z tego? build.sh wydaje się zakładać, że zestaw zmiennych środowiskowych jest ustawiony.
Andy Smith,
Prawdopodobnie objęty # 4 w ramach TODO ;) Nie został dotknięty przez kilka miesięcy, więc albo zaangażowani ludzie są zajęci innymi rzeczami lub przestali się tym interesować.
złotowłosa
@Goldilocks, więc to nie jest to, skąd pochodzi podstawowy obraz rasbijski?
Andy Smith
3
Będę szczery i powiem, że mam wrażenie, że ze zbyt dużą energią podchodzisz do strony Y problemu XY - implikuje to, że myślisz o prostszej metodzie (wystarczy ustawić obraz na pi, który można zrobić z komputer za pomocą zdalnego logowania, a sam obraz poprawiony przez montaż, który można zrobić na komputerze, a wszystko to można zautomatyzować za pomocą skryptów) jest zbyt trudny, więc pokładasz swoje nadzieje w metodzie, która jest naprawdę dużo więcej kłopotów .
goldilocks
5

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/

Ronny Nilsson
źródło
0

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:

  1. Pobierz i zainstaluj nowy obraz wybranego systemu operacyjnego
  2. Podłącz kabel Ethernet / podłącz do Wi-Fi
    • Prawdopodobnie wykonaj skanowanie sieci LAN, jeśli nie znasz adresów IP twojego Pi
  3. Rób rzeczy przez SSH
    • apt-get update -y && apt-get upgrade aktualizować pakiety
    • Twoje osobiste potrzeby konfiguracyjne
  4. Zrób zdjęcie, a następnie użyj go do innych Pis.

Kroki, jeśli nie majstrujesz przy swoim Pi (patrz uwaga powyżej):

  1. Pobierz świeży obraz systemu operacyjnego
  2. Zamontuj obraz za pomocą instrukcji z /raspberrypi//a/13138/24224 (musisz również rozważyć, jaki masz system operacyjny / obraz, ponieważ niektóre mają różne układy FS)
    • Przygotuj kalkulator.
  3. Znajdź debplik 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-offlinejest kłopotem. Zobacz ten link
    • Następnie znajdź sposób na zainstalowanie wszystkich tych pakietów bez używania / majstrowania przy swoim Pi. apt-getnie będzie działać offline. deb szczegóły pliku tutaj . Powodzenia.
  4. Zaktualizuj jądra Pi i rzeczy niskiego poziomu za pomocą narzędzia Hexxeh
  5. Skonfiguruj do swoich wymagań
  6. Napisz zmodyfikowany obraz na kartach SD Pis.

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.

PNDA
źródło
Niemożliwe jest ręczne pobieranie programów przez pobieranie, zależności, i zależności, i zależności, itd. Ale jeśli użyjesz apt-get i powiesz, że chcesz VLC, zrobisz, apt-get install vlc - tak --print- Uris. To da listę linków; po pobraniu umieść je w katalogu / var / cache / apt / archives / częściowo i uruchom dpkg -i częściowo / *. deb, aby zainstalować. Co więcej, jeśli masz Synaptics, ma opcję wygenerowania skryptu pobierania pakietu. Uruchom ten skrypt na komputerze z systemem Linux, a otrzymasz pakiety. Następnie możesz ponownie zainstalować je za pomocą synaptics.
NULL
@NULLThen find a way to install all of those packages without using/tinkering with your Pi.
PNDA
@NULL O ile mi wiadomo, możesz używać tylko dpkgna samym systemie, a nie na zamontowanym obrazie. Ponadto OP planuje używać swojego komputera, więc *.debpliki, które masz, są w pierwszej kolejności niewłaściwe dla architektury (PC to x86 / x64, Pi to ARMv6 / v7)
PNDA
Jak sprecyzowałem w swoim pytaniu, nie chcę robić 1. Jeśli chodzi o 2, to brzmi dziwnie :). Co sprawia, że ​​uważasz, że sugestia @flakeshakes jest trudniejsza od 2?
Andy Smith
@AndySmith Zacytuję komentarz 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.
goldilock
0

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.

duenni
źródło
Ansible wydaje się obiecujący, ponieważ jest bezagentowy i do uruchomienia go nie potrzebujesz pełnego serwera.
duenni
1
Nie bardzo, chcę, aby obraz był już zbudowany, a nie coś, do czego się przyczepiam. Ta sugestia nie działa, jeśli moje Pi nie ma połączenia sieciowego.
Andy Smith