Info: Übersicht über die im Raspberry Pi Imager angebotenen Betriebssysteme

  • Hier einmal eine "kleine" Übersicht über die vom Raspberry Pi Imager angebotene Auswahl an Betriebssystemen.

    Zu Beginn fragt der Imager ja den Typ des Raspberry Pi ab, für den die SD-Karte erstellt werden soll. Daraus ermittelt er die möglichen Betriebssysteme (-Versionen) und auch das empfohlene Betriebssystem. Dazu verwendet er die unten aufgelisteten "Etiketten" (tags).

    Diese Liste habe ich aus der aktuellen JSON-Datei ermittelt, die der Imager intern nutzt.

  • Info: Übersicht über die im Raspberry Pi Imager angebotenen Betriebssysteme? Schau mal ob du hier fündig wirst!

  • Diese Liste habe ich aus der aktuellen JSON-Datei ermittelt, die der Imager intern nutzt.

    Das ist diese? https://downloads.raspberrypi.org/os_list_imagingutility_v4.json
    Habe ich nur mit Google gefunden, nachdem ich vergeblich auf meinem RPi nach einer json-Datei zum Imager gesucht habe.

    Edit: hat sich erledigt, man rpi-imager und dann:

    Code
    moi@pie:~ $ rpi-imager --version
    rpi-imager version 1.9.1
    Repository: https://downloads.raspberrypi.org/os_list_imagingutility_v4.json

    Everybody's moving
    Everybody's moving
    Everybody's moving, moving, moving, moving
    Please don't leave me to remain

    Edited once, last by DistroEx (February 2, 2025 at 2:49 PM).

  • Diese Liste habe ich aus der aktuellen JSON-Datei ermittelt, die der Imager intern nutzt.

    Mit jq?

    Nein, mit einer kleinen Python.

    Mit jq bin ich noch nicht sehr weit gekommen, nutze das zum ersten Mal. Die Datei ist auch in less oder im Firefox übersichtlich.

    Keine Ahnung wie ich die nebeneinander anzeigen kann. Die Fehlermeldung am Ende habe ich erst mal ignoriert.

    Everybody's moving
    Everybody's moving
    Everybody's moving, moving, moving, moving
    Please don't leave me to remain

  • Hier mein Python-Code zur Erzeugung obiger (#1) Auswertung/Liste:

  • Mit jq bin ich noch nicht sehr weit gekommen, nutze das zum ersten Mal

    Ich bin gerade, wie Du weisst, am relaxen. Aber ich habe mir vorgenommen das mal mit jq auseinanderzunehmen wenn ich wieder @home bin. Meine Lösung werde ich dann hier zeigen.

  • Hallo,

    simonz mir sind ein paar Anmerkungen aufgefallen.

    Die Konstanten würde ich vollständig angeben. Die Datei sollte ein absoluter Pfad sein und man spart sich das zusammenstückeln der URL in `get_data` und die Datei kann man aus Gründen auch mal umbenennen.

    In `get_data` könnte man gleich `read_text()` nutzen, wenn man `pathlib` schon nutzt. Die verschachtelten try/excepts finde ich nicht schön. Ich würde ich das zweite `try` nicht einrücken, dafür aber `return` in den `try` - Block nehmen,. `sys.exit()` würde ich ganz raus nehmen, die Funktion soll Daten holen und nicht das Programm beenden. Da würde ich eher prüfen, ob Daten zurück kamen und dann das Programm "natürlich auslaufen lassen".

    In `print_devices` persönlich mag ich Comprehensions. Den Sinn von `msg` verstehe ich nicht und auch nicht das Wörterbuch mit den Übersetzungen in der `print_devices` Funktion. Das wäre für mich eine Konstante. `max` braucht beide Listen nicht. Alternativ könnte man `map` verwenden. Hat `dev` nicht irgendwas mit Laufwerken zu tun? :P Mit `items` sparst du dir den komischen `device[devices]` - Aufruf, der nicht viel über den Inhalt aussagt.

    `print_op_systems` da würde ich auch wieder ein Wörterbuch für die Sprache wählen.

    `get_recursively_and_print_oses` ob die Funktion rekursive Aufrufe beinhalten gehört meiner Meinung nach eigentlich nicht in den Namen. Der Name soll beschreiben was für eine Tätigkeit die Funktion ausübt und sie gibt die Betriebssysteme aus. Wieso plötzlich kein `f`-String mehr in print("    " + str(devices))? Man muss auch nicht alles an einen Namen binden, wenn man den nur ein mal benötigt.

    Ich finde jetzt eine der zwei Funktionen `print_op_systems` und `get_recrusively_and_print_oses` überflüssig. Wenn dann sollte eine Funktion die Daten nur formatieren und an die die Ausgibt zurück geben oder es gibt nur eine, die die Daten formatiert ausgibt.

    Ungetesteter Zwischenstand:


    Grüße
    Dennis


    Edit: `str` in der Exception ist nicht notwendig, `Headline` und `Description` sollten noch bessere Namen werden.

    🎧 Hate the jocks, the preps, the hippie fuckin' scumbags.
    Heavy-metalers with their awful, pussy hairbands.
    Counting seconds until we can get away.
    Ditching school almost every single day, oh, yeah 🎧

    Edited 2 times, last by Dennis89 (February 4, 2025 at 8:58 AM).

  • Dennis89, danke für Deine Anmerkungen und Alternativvorschläge! Oder Verbesserungsvorschläge. ;)

    Wenn Du Version 0 meines Skriptes gesehen hättest, hätten auch zwei Seiten Anmerkungen nicht gereicht. :D

    Das mit den Inline-Übersetzungen war ein Experiment, das sich erst bei der Entscheidung, das Skript zu posten, entwickelt hat.
    Ich wollte explizit einen Weg ausprobieren, wo ich adhoc neue Übersetzungen einbauen kann, ohne ein zentrales Wörterbuch zu halten.

    Im Detail schaue ich mir Deine Version nachher noch an.

    Edited once, last by simonz (February 4, 2025 at 4:27 PM).

  • Vielleicht will man die Daten mal mit ältern Ausgaben vergleichen oder eine andere Datei/URL nutzen ohne das im Code zu ändern. Hier kann der Benutzer noch entscheiden, welche Quelle er will und ob er die Standard-Quelle will oder lieber eine eigene.

    Läuft aber natürlich schief, wenn da andere JSON-Daten geladen werden. Auch die Fehlerbehandlung in `load_from_web` gefällt mir noch nicht.


    Grüße
    Dennis

    🎧 Hate the jocks, the preps, the hippie fuckin' scumbags.
    Heavy-metalers with their awful, pussy hairbands.
    Counting seconds until we can get away.
    Ditching school almost every single day, oh, yeah 🎧

  • Hier einmal eine "kleine" Übersicht über die vom Raspberry Pi Imager angebotene Auswahl an Betriebssystemen.

    Code
    Raspberry Pi 4         ['pi4-64bit', 'pi4-32bit'] 

    Also ich versuche seit Stunden eine 32 bit Version von Bookworm auf meinen Pi400 aufzuspielen. Ich verwende dazu den Pi Imager. Sobald ich dann nachgeschaut habe, was denn wirklich installiert wurde, stelle ich fest, dass es IMMER die 64bit Version ist. uname -m - Ergebnis: aarch64

    Ich benötige unbedingt die 32 bit Version, da ich alte Desktop Programme verwende, die nur 32 bit können.

    pi@pv:~ $ uname -m
    aarch64

    Verwendet:


    Wer kann mir helfen?

  • Ich bin gerade, wie Du weisst, am relaxen. Aber ich habe mir vorgenommen das mal mit jq auseinanderzunehmen wenn ich wieder @home bin. Meine Lösung werde ich dann hier zeigen.

    Da hatte ich damals noch ein bisschen mit rumgespielt, bin aber nicht allzu weit gekommen. (iirc, schon das meiste vergessen)

    Eben im Rahmen der Imager-Diskussionen gesehen: https://github.com/raspberrypi/rp…ment-3574874642 , in der der Entwickler auf Using the Raspberry Pi Imager JSON Schema verweist. Dort sind verschiedene Tools zur Bearbeitung des json-Formates erklärt.

    Everybody's moving
    Everybody's moving
    Everybody's moving, moving, moving, moving
    Please don't leave me to remain

Participate now!

Don’t have an account yet? Register yourself now and be a part of our community!