[TEST] Bild Raspbian Beta

:warning: Hinweis für Tester :warning:

Um das Leben unseres Dieners @pierre-gilles zu vereinfachen und damit er noch mehr Zeit für den Code verbringen kann :wink:, können die Builds des raspbian-Images automatisiert werden.

Ich habe pi-gen eingerichtet und konfiguriert, um ein Gladys-Image zu erstellen. (pi-gen ist das offizielle Tool der Raspberry Foundation).

Ich habe es auf einem rpi 3 B+ getestet, aber ich brauche Freiwillige!

Das Repository ist auf GitHub => GitHub - VonOx/gladys-pi-gen: Gladys Assistant official Raspberry Pi OS image · GitHub

Informationen zum Build:

  • Kernel 4.19
  • Basis Debian Lite Buster
  • Openssh
  • Docker
  • Reduce (Löschung aller Man-Pages, Dokumente und APT-Caches)

Größe des Images 635MB

Erster Start

  • Partition der SD-Karte erweitert
  • Neustart
  • Laden der Watchtower- und Gladys-Container

Hinweis:

  • Es dauert etwa 15 Minuten beim ersten Start, bis der Gladys-Container verfügbar ist
  • Beim ersten SSH-Login müssen Sie das Passwort ändern (Standard: gladys/raspberry)

Download:

Die Datei info enthält alle installierten Pakete

Ich habe die Dateien auf einem OneDrive-Share hinterlegt.

Screenshot:

Der Build ist von heute :slight_smile:


Changelog:

2020-05-27 - Neues Image => udev-Regeln und Docker-Logs auf max. 10MB
2020-04-28 - Neues Image mit Docker-Images (docker save)
2020-04-21 - Code auf GitHub
2020-04-16 - Erste Veröffentlichung

Aaaah super! Gut gemacht!

Weißt du, ob es möglich wäre, die Verarbeitung, die du beim ersten Start durchführst, vorher zu machen? Ich habe Angst, dass dies ein Schritt ist, der bei den Nutzern oft schiefgeht (schlechte Verbindung zum Beispiel, der Nutzer hat keine Ahnung, wann es fertig sein wird…)

Das Bild mit den erstellten Containern bereitstellen? Ja, das ist möglich

Hier habe ich einen Dienst (systemctl) erstellt, der darauf wartet, dass das Netzwerk hochgefahren ist.
Bei jedem Start überprüft er, ob die Container existieren.

Der Vorteil ist, dass es immer die neueste Version herunterlädt.

Meine Meinung ist, dass die Option oder das Bild nur beim Booten heruntergeladen wird, das ist eine sehr frustrierende Erfahrung für die Benutzer: Es ist unmöglich zu wissen, wie weit es ist, wenn deine Verbindung nicht gut ist, wird es 2 Stunden dauern, aber du weißt nicht, was passiert.

Danach, wenn wir das Raspbian-Bild bei jedem Build des Docker-Bildes erstellen, ist es am Ende dasselbe, das Bild wird immer auf dem neuesten Stand sein :slight_smile:

Ja, ich sehe, kein Problem (ich hab mich nur aufgeregt, einen Service zu machen :smiley: / nicht schlimm, ich hab was gelernt ^^ ).

Ich werde also das Build ändern, die Container werden bereits erstellt. Ich werde auch den Service ändern, um diese Container zu „monitoren“ und in dmesg zu loggen.

Ich habe auf Github gepusht, Build ist in Arbeit unter Berücksichtigung der Änderungen

Wow, @VonOx super Idee. Ich versuche es und gebe bald Feedback.

Ich war gestern Abend kaputt, habe das Bild nicht hochgeladen. Ich mach das heute Abend für alle, die es interessiert.

Ich komme auf das zurück, was ich gesagt habe, der Cross-Build ermöglicht es mir nicht, ein Image während des Builds zu pullen, da Docker nicht weiß, auf welcher Architektur es ausgeführt wird.

level=error msg="failure getting variant" error="getCPUInfo for pattern: Cpu architecture: not found"

Eine mögliche Umgehung wäre, das Image zu speichern => docker image save | Docker Docs
Und beim Firstboot zu laden => docker image load | Docker Docs

Noch nicht getestet, aber das wird wahrscheinlich auch langsam sein, da es ein Zip/Entzip ist.

Was denkst du dazu @pierre-gilles ?

Ich habe es mit dem Speichern/Laden versucht

Es ist der Hammer, 15 Minuten zum Entpacken auf einem Raspberry Pi B+

Ach Mist, gibt es keine Möglichkeit, das zu umgehen? Kann man nicht die Architektur im docker pull-Befehl angeben?

Ich bevorzuge das trotzdem im Vergleich zum Download, der von deiner Verbindung abhängt. Bei einem Typen mit ADSL wird der Download mehr als 1 Stunde dauern, während ein Untar die Zeit konstant hält :slight_smile:

Gut gemacht in jedem Fall für all diese Untersuchungen!

Ich habe auf Github gepusht und ein neues Bild bereitgestellt (+147 MB)

Super! Kleine Frage übrigens, du machst doch ein load style:

docker load --input ton-image.tar

Hast du das Bild nicht komprimiert? Ich sage das, um zu sehen, ob wir nicht Zeit sparen können, wenn es komprimiert ist, dauert es meiner Meinung nach länger, um zu dekomprimieren!

https://github.com/VonOx/gladys-pi-gen/blob/gladys/gladys/03-prepare-docker/00-run.sh

Docker save komprimiert, da gibt es keine Wahl.

Neues Build:

  • Log mit einer 10MB-Grenze für Gladys
  • 1. Version der udev-Regeln (nur auf dem Host / ich suche eine elegante und sichere Möglichkeit, dies im Docker-Image zu tun)

Ich warte auf euer Feedback :wink:

Top! :clap:

Kann man für die längere Zeit beim ersten Start nicht vorher den Docker-Container starten?

Ich habe noch keine Lösung, der Docker-Daemon weiß nicht, auf welcher Architektur er sich befindet (QEMU-Bug). Der Daemon wird während des Builds nie gestartet.

Ich verliere nicht die Hoffnung :sweat_smile:

Was wäre, wenn wir ein Bild verwenden, das nicht auf der Architektur basiert? (Ich weiß nicht, ob das möglich ist)

Das Problem liegt nicht am Docker-Image. Ich kann den Docker-Daemon des Raspbian-Images während des Builds (chroot / qemu) nicht ausführen, da es einen QEMU-Bug gibt. QEMU gibt keine Informationen zur Architektur, und der Docker-Daemon stürzt ohne diese Informationen ab.

Um das zu umgehen, speichere ich das Image mit Docker des Hosts, der das Raspbian-Image erstellt.

Ich weiß nicht, ob das klar ist :sweat_smile:

Mmm ok, schade! Ich sehe :slight_smile:

Ich weiß nicht, ob du es gesehen hast, aber jetzt stellt die Raspberry Pi Foundation ein 64-Bit-Image bereit ^^ Wir müssen zwei Images bauen :sweat_smile: