Raspberry Pi Imager

Wer ein Betriebssystem für einen Raspberry Pi auf eine SD-Karte oder einen anderen Datenträger schreiben möchte, kann hierfür den offiziellen Raspberry Pi Imager nutzen. Die Anwendung übernimmt dabei nicht nur das Schreiben des Images, sondern vereinfacht auch die Auswahl und Vorkonfiguration des gewünschten Systems.

Der Raspberry Pi Imager

Nach dem Start wird im ersten Schritt das verwendete Raspberry Pi-Modell ausgewählt. Anschließend kann das gewünschte Betriebssystem festgelegt werden. Neben den unterschiedlichen Varianten von Raspberry Pi OS stehen dort auch eine Reihe weiterer Systeme zur Verfügung. Alternativ kann über die Option Use Custom ein bereits heruntergeladenes Image ausgewählt werden.

Im letzten Schritt muss der Zieldatenträger, beispielsweise eine SD-Karte oder ein USB-Datenträger, ausgewählt werden. Vor dem eigentlichen Schreiben bietet der Imager bei unterstützten Betriebssystemen zusätzliche Möglichkeiten zur Konfiguration.

So können unter anderem Hostname, Benutzername und Passwort, Zeitzone und Tastaturlayout sowie die WLAN-Verbindung bereits vor dem ersten Start festgelegt werden. Daneben können SSH und Raspberry Pi Connect aktiviert werden. Für SSH kann neben der Anmeldung mittels Passwort auch direkt ein öffentlicher SSH-Schlüssel hinterlegt werden.

Das geschriebene Image wird verifiziert

Damit eignet sich der Imager, insbesondere für sogenannte Headless-Installationen. Ein Raspberry Pi kann damit vorbereitet werden, ohne ihn für die Ersteinrichtung zunächst an Bildschirm und Tastatur anschließen zu müssen. Nach dem Schreiben der SD-Karte reicht es im Idealfall aus, diese einzulegen und den Raspberry Pi zu starten. Anschließend ist das System bereits über das Netzwerk erreichbar.

Der Raspberry Pi Imager steht für macOS, Linux und Windows zur Verfügung. Der Raspberry Pi Imager ist freie Software unter der Apache License.

Duplikate mit fdupes finden

Wer im Terminal unter macOS Duplikate finden möchte, kann hierfür auf fdupes zurückgreifen. Nach der Installation mittels:

brew install fdupes

kann das Werkzeug im geünschten Ordner genutzt werden:

fdupes -r .

In diesem Fall wird der aktuelle Ordner rekursiv nach Duplikaten durchsucht. Anschließend werden diese Duplikate dargestellt:

./FolderA/file-01.bin
./FolderB/file-01.bin

./FolderA/file-02.bin
./FolderB/file-02.bin

./FolderA/file-03.bin
./FolderB/file-03.bin

Bei dieser Operation werden keinerlei Dateien gelöscht. Dazu bietet fdupes unter anderem einen interaktiven Modus an:

fupes -r -d .

Nach der Ermittlung der Duplikate kann anschließend die Auswahl getroffen werden, welche Dateien nicht gelöscht werden sollen:

Set 17 of 108:

[ ] ./FolderA/file-17.bin
[ ] ./FolderB/file-17.bin

( Preserve files [1 - 2, all, help] )= 1

Ist der interaktive Modus nicht gewünscht, so kann die Löschung auch automatisiert werden. Das Kommando:

fdupes -r -d -N .

behält immer automatisch die erste Datei und löscht alle anderen Duplikate. Damit eignet sich fdupes besonders gut, um große Dateibestände schnell und effizient von doppelten Dateien zu bereinigen und dabei wahlweise die volle Kontrolle zu behalten oder den Vorgang vollständig zu automatisieren.

CotEditor

Unter macOS habe ich seit Anbeginn der Zeit TextMate als Editor genutzt. Allerdings wird dieser augenscheinlich seit geraumer Zeit nicht mehr weiterentwickelt. Auf der Suche nach einer Alternative bin ich auf CotEditor gestoßen. Dabei handelt es sich um einen schlanken und nativen Texteditor. Er unterstützt Syntax-Highlighting für zahlreiche Programmiersprachen, leistungsfähige Suchfunktionen sowie die Bearbeitung großer Dateien ohne spürbare Verzögerungen.

Das Editorfenster von CotEditor

Der Editor kann über den AppStore bezogen werden. Er ist unter der Apache License lizenziert und damit freie Software; der Quellcode ist auf GitHub zu finden.

Endianness bei ROMs korrigieren

Einige ROMs wie z.B. vom Nintendo 64 sind als Big Endian gespeichert. Je nach Dump, kann es aber vorkommen das diese im Little Endian-Format gesichert wurde. Bei Big Endian wird das höchstwertige Byte zuerst gespeichert, während Little Endian mit dem niedrigstwertigen Byte beginnt. Soll die Bit-Reihenfolge umgedreht werden, so kann hierfür das Werkzeug uCON64 genutzt werden. Nach der Installation mittels Homebrew:

brew install ucon64

kann das Tool genutzt werden. Es kann dabei mit einer Vielzahl an ROM-Formaten umgehen. Mit diesem Skript können die Dateien in ihre Big Endian-Form konvertiert werden:

#!/bin/sh
find . -type f \( -iname "*.n64" -o -iname "*.v64" -o -iname "*.z64" \) -print0 |
while IFS= read -r -d '' f; do
  if ucon64 "$f" | grep -q "Interleaved/Swapped: Yes"; then
    ucon64 --nbak --swap "$f"
  fi
done

Auf diese Weise wird sichergestellt, dass alle ROMs im einheitlichen und historisch korrekteren Format vorliegen.

Probleme mit der Datenbank unter Forgejo

Nach der Erstellung eines Pull Requests unter Forgejo ergab sich ein Datenbank-Fehler bzw. ein 500er-Reponse mit folgender Meldung:

GetIssuesByIDs, converting driver.Value type time.Time to a int64: unsupported value time.Time as int64

Ein Grund für das Problem könnte die Migrationen von Gogs zu Gitea zu Forgejo im Laufe der Jahre darstellen. Gelöst werden konnte das Problem durch eine Neuerstellung der Tabellen:

./forgejo doctor recreate-table --config custom/conf/app.ini

Anschließend funktionierte die Forgejo-Installation wieder ohne Probleme.