Viele betreiben ein Pihole, das ist ein Raspberry Pi 3 oder 4 mit einer Sofware, die Tracking und Werbung aus dem Internet unterdrückt. Dabei wird die SD-Karte stark beansprucht. Bei mir ist die Karte nach ca. einem Jahr defekt und muss ausgetauscht werden. Ich habe daher nach eine Lösung gesucht die SD-Karte einfach zu kopieren und die Kopie als Backup zu nutzen. Über einen Artikel zu Raspberry Pi: USB Boot einrichten bin ich auf eine Lösung gestoßen. Die Systemkarte des Pihole wird im laufenden Betrieb kopiert. Folgt man den unter stehenden Anleitung, hält man danach eine bootfähige 1 zu 1 Kopie in den Händen.
Dazu benötigt man eine zweite SD-Karte ausreichender Größe zusammen mit einem Adapter für USB-A. Dieser Adapter liegt häufig den Speicherkarten bei.
Alle folgenden Eingaben müssen mit root-Rechten erfolgen. Entweder stellt "sudo" vor jeden befehl oder gibt "su - root" eine, um als Benutzer root zu arbeiten."su - root" funktioniert nur wenn vorher ein Passwort für root erstellt wurde. Mit "sudo passwd" richten sie das Passwort ein.Der Adapter wird mit eingesteckter SD-Karte auf einen freien USB-Port gesteckt. Falls der Automounter läuft wird die Karte wahrscheinlich als /dev/sda1 eingehängt. Mit dem Befehl "df" lässt sich das feststellen. Falls die Karte nicht eingehängt wurde, nutzt man den Befehl "dmesg" um das richtige Device zu erkennen
Ausgabe von "dmesg":$-> dmesg [2316411.937016] sda: sda1 $->1. Als erstes muss die neue SD-Karte partitioniert werden:
$-> parted /dev/sda (parted) mktable msdos Warning: The existing disk label on /dev/sda will be destroyed and all data on this disk will be lost. Do you want to continue? Yes/No? yes (parted) mkpart primary fat32 0% 100M (parted) mkpart primary ext4 100M 100% (parted) print Model: Mass Storage Device (scsi) Disk /dev/sda: 31,9GB Sector size (logical/physical): 512B/512B Partition Table: msdos Disk Flags: Number Start End Size Type File system Flags 1 1049kB 99,6MB 98,6MB primary fat32 lba 2 99,6MB 31,9GB 31,8GB primary ext4 lba (parted) quit $->2. Für die weitere Bearbeitung werden nun die Partitionen formatiert:
$-> mkfs.vfat -n BOOT -F 32 /dev/sda1 $-> mkfs.ext4 /dev/sda23. Für den Kopierprozess müssen die Partitionen der SD-Karte gemountet oder eingehängt werden, falls /mnt/sdcard schon existiert, wird eine Fehlermeldung ausgegeben:
$-> mkdir /mnt/sdcard $-> mount /dev/sda2 /mnt/sdcard/ $-> mkdir /mnt/sdcard/boot $-> mount /dev/sda1 /mnt/sdcard/boot/Gibt man nun df ein so sollten die beiden Partitionen angezeigt werden:
$-> df Dateisystem 1K-Blöcke Benutzt Verfügbar Verw% Eingehängt auf /dev/root 15059160 2014460 12399600 14% / devtmpfs 340548 0 340548 0% /dev tmpfs 472132 2396 469736 1% /dev/shm tmpfs 188856 1012 187844 1% /run tmpfs 5120 4 5116 1% /run/lock /dev/mmcblk0p1 261108 51020 210088 20% /boot tmpfs 94424 0 94424 0% /run/user/1000 /dev/sda2 30405412 28 28835544 1% /mnt/sdcard /dev/sda1 94759 1 94759 1% /mnt/sdcard/boot4. Nun kann die System SD-Karte auf die neue neue SD-Karte kopiert werden. Achtung: Der Kopierprozess benötigt einige Zeit. Ein Raspbian Lite mit ca. 2GB benötigt ca. 20 Minuten. Ein Raspbian mit Desktop und Applikationen mit ca. 11GB benötigt dagegen wesentlich mehr Zeit, geschätzt dürften das ca. 2 Stunden sein.
$-> rsync -ax --progress / /boot /mnt/sdcard5. Nachdem der Kopierprozess abgeschlossen ist, können jetzt noch einige Parameter geändert werden. Dies ist notwendig damit das System von der neuen SD-Karte auch fehlerfrei gebootet werden kann. Die Partition-UUIDs der beiden Partitionen sda1 und sda2 müssen in zwei Dateien geändert werden. dazu müssen wir die Partition-ID der SD-Karte auslesen
$-> udevadm info -q all -n /dev/sda2 | grep partuuid $-> udevadm info -q all -n /dev/sda1 | grep partuuidAntwort bespielhaft: S: disk/by-partuuid/a90631d6-02 Hierbei ist -02 die zweite Partition Antwort beispielhaft: S: disk/by-partuuid/a90631d6-01 Hierbei ist -01 die erste Partition In den Dateien /mnt/sdcard/boot/cmdline.txt und /mnt/sdcard/etc/fstab müssen die Part-UUIDs nun mit denen ersetzt werden, die man in Schritt 5 erhalten hat. Siehe fett markierte Daten. Zu diesem Zweck verwende ich gerne "vi", es kann auch z.B. "nano" genutzt werden. Inhalt von /mnt/sdcard/boot/cmdline.txt und /mnt/sdcard/etc/fstab:
console=serial0,115200 console=tty1 root=PARTUUID=f2a460e2-02 rootfsty proc /proc proc defaults 0 0 PARTUUID=f2a460e2-01 /boot vfat defaults 0 2 PARTUUID=f2a460e2-02 / ext4 defaults,noatime 0 1 # a swapfile is not a swap partition, no line here # use dphys-swapfile swap[on|off] for that6. alle Daten sind jetzt kopiert und bootfähig geändert worden. Die Partitionen können nun ausgehängt werden:
$-> cd ~ $-> umount /mnt/sdcard/boot $-> umount /mnt/sdcard
Bevor man die neu erstellte SD-Karte als Backup für die System Karte nuntzt sollte man sie auch testen. Also den Raspberry herunterfahren, vom Netzteil trennen, SD-Karten tauschen, am Netzteil anschließen ... Hat die neue Karte gebooten? Funktioniert alles?
Hinweis:Diese Anleitung ist kein Ersatz für einen Backup. Um gegen Datenverlust geschützt zu sein, sollte man dringend regelmäßig eine Backup von wichtigen Daten gemacht werden. Hierzu dienen die Dienstprogramme z.B: ssh, scp, tar, cpio.
Sollte wider Erwarten Probleme auftreten, die Anleitung nochmals durchgehen, eventuell nochmals durchführten.
Last modified: 2023-02-17 12:51:19 UTC