Benutzer-Werkzeuge

Webseiten-Werkzeuge


projekte:raspberry_pi

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.

Link zu der Vergleichsansicht

Beide Seiten, vorherige ÜberarbeitungVorherige Überarbeitung
Nächste Überarbeitung
Vorherige Überarbeitung
projekte:raspberry_pi [2026-02-03 21:13] weneprojekte:raspberry_pi [2026-05-15 23:29] (aktuell) – [Komprimiertes Image] wene
Zeile 2: Zeile 2:
  
 Hier entsteht eine Sammlung an Anleitungen rund um's Raspberry Pi. Hier entsteht eine Sammlung an Anleitungen rund um's Raspberry Pi.
 +
 +===== Installation =====
 +
 +Es empfiehlt sich, der jeweils aktuellen Installationsanleitung des Herstellers zu folgen. Hier trotzdem ein paar Tipps, die ich selbst immer mal wieder suche:
 +
 +  * SSH Server aktivieren: eine leere Datei namens ''ssh'' auf der ersten Partition anlegen
 +  * Einen Benutzer vorkonfigurieren: auf der ersten Partition eine Datei namens ''userconf.txt'' anlegen. In dieser Datei den Benutzernamen, direkt gefolgt von einem Doppelpunkt und dann dem verschlüsselten Passwort eintragen. Das Verschlüsselte Passwort generieren mit ''openssl passwd -6''
 +  * Verfügbare WLAN Netzwerke auflisten: ''nmcli device wifi list''
 +  * WLAN Verbindung herstellen: ''%%sudo nmcli device wifi connect --ask <SSID>%%''
 +
  
 ===== Backup ===== ===== Backup =====
Zeile 12: Zeile 22:
  
   - Die SD Karte aus dem ausgeschalteten RasPi entnehmen und mit einem anderen Computer verbinden.   - Die SD Karte aus dem ausgeschalteten RasPi entnehmen und mit einem anderen Computer verbinden.
-  - Sicherstellen, dass das Paket "squashfs-toolsinstalliert ist. +  - Sicherstellen, dass das Paket ''squashfs-tools'' installiert ist. 
-  - Herausfinden, welches Gerät die SD Karte auf dem System ist. z.B. mit "lsblk -f"+  - Herausfinden, welches Gerät die SD Karte auf dem System ist. z.B. mit ''lsblk -f''
-  - Eine leeres Verzeichnis erstellen. Das ist erforderlich weil "mksquashfsein Quellverzeichnis erfordert. Wir wollen aber kein Verzeichnis komprimieren, daher geben wie ein leeres an.+  - Eine leeres Verzeichnis erstellen. Das ist erforderlich weil ''mksquashfs'' ein Quellverzeichnis erfordert. Wir wollen aber kein Verzeichnis komprimieren, daher geben wie ein leeres an.
   - Das Image direkt in komprimiert auslesen.   - Das Image direkt in komprimiert auslesen.
   - Den SquashFs Container mounten.   - Den SquashFs Container mounten.
Zeile 49: Zeile 59:
  
 ===== BTRFS ===== ===== BTRFS =====
 +
 +Das Standarddateisystem auf dem RasPi ist ''ext4''. Das etwas modernere ''BTRFS'' eignet sich aber auch sehr gut und hat ein paar Vorteile. Dafür kann eine bestehende Installation konvertiert werden.
  
 ==== Zu BTRFS Konvertieren ==== ==== Zu BTRFS Konvertieren ====
  
-  - Raspberry Pi OS ganz normal installieren +Voraussetzung: 2 SD Karten (oder USB Sticks) mit Raspberry Pi OS. Eine wird offline konvertiert, die zweite als System benutzt um die Konvertierung durchzuführen. Wenn das System einer SD Karte konvertiert werden soll, braucht es dafür einen USB Kartenleser. Die zu konvertierende Karte muss in einem Schritt extern (über USB) angeschlossen werden während das System von einer anderen Karte oder über USB gebootet wurde. 
-  - Im installierten System das Paket "btrfs-tools" installieren + 
-  - Sauber herunterfahren +Ablauf: 
-  - Die SD Karte entnehmen. +  - Raspberry Pi OS ganz normal installieren. 
-  - Mit einer anderen SD Karte booten. +  - Im installierten System das Paket "btrfs-progs" installieren: ''sudo apt install btrfs-progs'' 
-  - Die zu konvertierende SD Karte in einem USB Kartenleser mit dem RasPi verbinden +  - Sauber herunterfahren: ''sudo systemctl poweroff'' 
-  - usw...+  - Die SD Karte (oder den USB Stick) entnehmen. 
 +  - Mit einer anderen SD Karte (oder USB Stick) booten. 
 +  - Falls nicht schon vorhanden, muss auf diesen System auch das Paket "btrfs-progs" installiert werden. 
 +  - Eine Liste mit den Dateisystemen ausgeben lassen: ''lsblk -f'' 
 +  - Die zu konvertierende SD Karte in einem USB Kartenleser mit dem RasPi verbinden. 
 +  - Liste der Dateisysteme aktualisieren: ''lsblk -f'' Der neu dazu gekommene Datenträger ist der, den wir konvertieren wollenDie Partition ist aktuell mit ''ext4'' formatiertIn den folgenden Beispielen gehen wir von ''/dev/sda2'' aus. Das kann aber auf deinem System anders sein. Bitte entsprechend anpassen. 😉 
 +  - Das Dateisystem erst mal prüfen: ''sudo fsck.ext4 /dev/sda2'' Nur fortfahren, wenn es keine Fehler gab. 
 +  - Das ext4 Dateisystem nach btrfs konvertieren: ''sudo btrfs-convert /dev/sda2'' 
 +  - Die konvertierte Partition einbinden: ''sudo mount /dev/sda2 /mnt/'' 
 +  - Bei der Konvertierung wird das vorherige Dateisystem als Image abgebildet. Ich gehe davon aus, dass es sich um eine Neuinstallation handelt, und wenn etwas schief geht, diese schnell neu gemacht werden kann. Um Platz zu sparen lösche ich dieses Image deshalb direkt: ''sudo rm -r /mnt/ext2_saved'' und räume das ebenfalls nicht mehr benötigte lost+found von ext4 auf: ''sudo rm -r /mnt/lost+found'' 
 +  - Nun wollen wir den gesamten Inhalt in ein Subvolume namens "''@''" verschieben. Da das Rootverzeichnis selbst auch ein Subvolume ist, kann man davon einen Snapshot in sich selbst erstellen. Danach einfach alles ausserhalb des Snapshots löschen:<code bash> 
 +cd /mnt 
 +sudo btrfs subvolume snapshot . @ 
 +# links löschen: 
 +sudo rm bin lib sbin 
 +# Verzeichnisse löschen: 
 +sudo rm -r boot dev etc home media mnt opt proc root run srv sys tmp usr var 
 +</code> 
 +  - Nun sollte das Dateisystem in ''/mnt'' leer sein, mit Ausnahme des Subvolumes ''@'' natürlich. Darin wiederum sollte sich das ganze System befinden. 
 +  - Aushängen des gesamten Dateisystems: ''sudo umount /mnt'' 
 +  - Einhängen des Subvolumes: ''sudo mount -o subvol=@ /dev/sda2 /mnt'' 
 +  - Herausfinden welche UUID die neue Partition hat und diese in die fstab eintragen: ''lsblk -f'' und dann die Datei editieren, z.B. mit ''vim /mnt/etc/fstab'' 
 +  - Bei der Partition für ''/'' von ''PARTUUID'' auf ''UUID'' ändern und die vorhin angezeigte UUID eintragen. Das Dateisystem von ''ext4'' auf ''btrfs'' ändern. Die Optionen gemäss Beispiel ergänzen: <code>proc                                       /proc           proc    defaults                                         0 
 +PARTUUID=920be9a3-01                       /boot/firmware  vfat    defaults                                         2 
 +UUID=0ba076f5-a8cb-4a1d-b01c-eba081cd3e09  /               btrfs   defaults,noatime,discard=async,subvol=@    0       0 
 +</code> 
 +  - Nun die restlichen Partitionen mounten und per ''chroot'' ins System "einloggen" und die InitRd neu generieren:<code bash> 
 +sudo mount /dev/sda1 /mnt/boot/firmware/ 
 +sudo mount --bind /dev/ /mnt/dev/ 
 +sudo mount --bind /proc/ /mnt/proc/ 
 +sudo mount --bind /sys /mnt/sys/ 
 + 
 +sudo chroot /mnt/ 
 + 
 +update-initramfs -c -k all 
 + 
 +exit 
 +</code> 
 +  - Nun noch die Datei ''/mnt/boot/firmware/cmdline.txt'' editieren. Hier muss auch die ''PARTUUID'' auf ''UUID'' angepasst, und entsprechend eingetragen werden. Dazu kommen noch der Dateisystemtyp und die flags dazu. Siehe Beispiel: <code>console=serial0,115200 console=tty1 root=UUID=0ba076f5-a8cb-4a1d-b01c-eba081cd3e09 rootfstype=btrfs rootflags=subvol=@ rootwait cfg80211.ieee80211_regdom=CH</code> 
 +  - So, das sollte es nun gewesen sein. Jetzt könnte man natürlich alles erst sauber aushängen. Das macht das System aber auch automatisch wenn man es herunterfährt: ''sudo systemctl poweroff''  
 +  - Nun die SD Karte wieder wechseln und Daumen drücken. 🤞 
 + 
 +===== Journal Logging ===== 
 + 
 +Die Standardkonfiguration des RasPi speichert die Journals nicht persistent. Vermutlich soll das die SD Karte schonen. Wenn man aber nachvollziehen will, was vor einem Neustart passiert ist, müssen die Daten natürlich (auf Kosten der Lebensdauer der SD Karte) persistent gespeichert werden. 
 + 
 +Die Konfigurationsdatei ist ''/etc/systemd/journald.conf'' und eine Beschreibung dazu gibt es mit ''man journald.conf''
  
 +Allfällig bereits vorhandene Konfigurationsdateien unter ''/usr/lib/systemd/journal.conf.c/*.conf'' müssen entsprechend gelöscht oder auf eine andere Endung als ''*.conf'' umbenannt werden, damit sie den Einstellungen in ''/etc/systemc/journald.conf'' nicht widersprechen.
  
 +Spätestens nach 2 Neustarts müssten mit ''%%journalctl --list-boots%%'' 2 oder mehr Einträge aufgelistet werden. Es müssten ausserdem Logdaten unter ''/var/log/journal'' zu finden sein.
projekte/raspberry_pi.1770149609.txt.gz · Zuletzt geändert: von wene