Image2Card vorgestellt: Ich habe einen eigenen Raspberry Pi Imager entwickelt

Als Video ansehen
Bereitgestellt über YouTube

Image2Card vorgestellt: Ich habe einen eigenen Raspberry Pi Imager entwickelt

Den Raspberry Pi Imager habe ich bereits vor längerem vorgestellt. Vor allem für Einsteiger ist er die wohl beste Methode, um gängige Betriebssysteme wie das Raspberry Pi OS auf die Speicherkarte zu überspielen. Doch er hat auch ein paar Schwächen, die zumindest erfahrenen Nutzern begegnen können: Die Vorkonfiguration von Hostname, SSH und anderen Funktionen ist primär für das Raspberry Pi OS entwickelt worden. Unter anderen Distributionen funktioniert sie entweder nicht oder sorgt sogar für Startprobleme, wie es unter Ubuntu eine Zeit lang der Fall war. Mittlerweile hat sich dies gebessert, dennoch fehlen durchaus nützliche Betriebssysteme, wie etwa DietPi oder Alpine Linux.

Darüber hinaus wollte ich mich schon länger mit der Entwicklung von plattformunabhängiger Desktop-Software beschäftigen. Mehr als eine kleine Java-Anwendung die auch schon etwas länger zurück liegt, ist in dieser Richtung bisher nicht entstanden. Die meisten Projekte nutzten entweder früher unter Windows die im .NET Framework integrierten WinForms, besaßen gar keine grafische Oberfläche oder wurden überwiegend als Webanwendung umgesetzt. Die Form der Webanwendung macht in meinen Augen auch nach wie vor für vieles Sinn und bietet Vorteile. Beispielsweise kann man die Software auch auf Mobilgeräten nutzen. Bei hardwarenahen Operationen sind Desktop-Anwendungen jedoch meist nach wie vor die beste Wahl.

Eingesetzte Technologie

Mein erster Gedanke lag bei Python: Eine quelloffene und verbreitete Technologie, die mittlerweile nahezu überall läuft. Zudem sind Bibliotheken für das erstellen von Partitionen vorhanden, die ich zum Beschreiben der Speicherkarte benötige. Die näher betrachteten Frameworks für grafische Oberflächen konnten mich nicht überzeugen. Qt schien mächtig, doch man benötigt einer separate Entwicklungsumgebung. Dort traten schnell erste Probleme auf, etwa bei der Vorschau. Bei anderen war es ähnlich: Sah auf den ersten Blick gut aus, im Detail erfüllten sie nicht meine Anforderungen. Zumindest ein Level von den .NET WinForms mit Visual Studio wollte ich erreichen. Und auch die Bibliothek für FAT-Partitionen verursachte Probleme, deren Lösung ein tieferes Verständnis des Dateisystems voraussetzten.

Also schaute ich weiter in die von mir präferierte C# Ecke: Das .NET Framework ist seit langem eine solide Basis. Seit Microsoft es vor einigen Jahren öffnete und als quelloffene Software weiterentwickelt, steht es Python in dieser Hinsicht nicht mehr nach. Technisch ist es sogar eher von Vorteil, schließlich vergleichen wir eine Hochsprache mit einer Skriptsprache.

Leider enttäuschte das .NET Ökosystem mit den Anforderungen der Plattformunabhängigkeit auf den ersten Blick: Microsoft hatte für grafische Desktopanwendungen nichts vorzuweisen. Lediglich .NET MAUI, das klang gut, läuft jedoch nur unter Windows. Unabhängige Projekte sind dort deutlich weiter, wie Avalonia UI zeigt. Durch seinen Ansatz in Richtung WPF ist es zwar für den Einstieg komplexer, doch es hält, was es verspricht. Man kann damit (schön aussehende) Desktopanwendungen entwickeln, die auf allen gängigen Plattformen funktionieren. Lediglich die Logik muss bei derart hardwarenahen Aufgaben an die Plattform angepasst werden, die Oberfläche ist dagegen einheitlich.

Avalonia UI integriert sich über Erweiterungen in Visual Studio und Visual Studio Code, sodass theoretisch auch unter GNU/Linux entwickelt werden kann. Interessant finde ich den geteilten Bildschirm. Änderungen am Code links sind mit geringer Verzögerung im rechten Bereich sichtbar, so lange sie keine Fehler erzeugen.

Funktionen

Für das Hauptfenster habe ich mich am Raspberry Pi Imager orientiert. Die Aufteilung in drei Schritte finde ich sinnvoll, wollte sie jedoch für Einsteiger deutlicher machen. Als erstes wird das gewünschte Betriebssystem ausgewählt. Neben dem offiziellen Raspberry Pi OS wurden für den Anfang ein paar Distributionen eingebaut, die im Imager fehlen – etwa die bereits angesprochenen DietPi und Alpine Linux. Statt verschiedener Einträge lassen sich rechts zu jeder Distribution die vorhandenen Architekturen auswählen. Falls es Editionen mit grafischer Desktopumgebung gibt (z.B. Raspberry Pi OS), sind diese dort ebenfalls gelistet.

Das gewählte Image wird anschließend heruntergeladen und ausgepackt, sofern es nicht bereits lokal existiert. Falls es existiert, prüft die Software, ob eine aktualisierte Version verfügbar ist. Nach der Auswahl der Speicherkarte erfolgt die Leerung und Beschreibung dieser. Abschließend kann die Vorkonfiguration erfolgen. Sie ist derzeit noch recht beschränkt auf das Setzen eines Hostnamens für das Netzwerk sowie die Aktivierung von SSH.

Zukunft des Projektes

Wenngleich die grundlegenden Funktionen großteils gegeben sind, fehlen noch einige Dinge. Unter anderem erweiterte Möglichkeiten für die Anpassungen. Es handelt sich derzeit eher um eine Art Prototyp mit dem Grundfunktionen. Grundsätzlich finde ich die Idee sinnvoll und sehe darüber hinaus Erweiterungspotenzial. Konkrete Pläne gibt es derzeit nicht, dieser Beitrag ist eine Vorstellung des momentanen Zustandes.

Leave a Reply