Das Raspberry PI Rootdrive verschieben

Ein Raspberry PI ist ein vollwertiger Klein-Computer. Man kann ihn als Server 24/7 das ganze Jahr über betreiben.

Es gibt nur einen Haken: Früher oder später wird die SD-Karte beim Schreiben beschädigt.
Das Verschieben des Root-Dateisystems Ihres Raspberry PI auf ein externes USB-Laufwerk
umgeht dieses Problem. Dieser Artikel enthält eine Anleitung zum Verschieben des Root-Dateisystems von


SD-Karte auf ein externes USB-Laufwerk, so dass Sie Ihren Raspberry PI mit dem Root-Dateisystem auf dem USB-Laufwerk booten können.

Hintergrund

Wenn Sie den Begriff "Raspberry PI SD card corruption" im Internet suchen, werden Sie schnell feststellen das dies ein ernstes Problem ist. Vor allem, wenn Sie Ihren Raspberry PI rund um die Uhr als Server betreiben wollen. Für Sie läuft ihr Raspberry PI Server über ein Jahr lang ohne Probleme, andere, die weniger Glück haben haben, müssen die SD-Karte mehrmals im Jahr austauschen.
Wann tritt dieses Problem mit der SD-Karte auf ? Nun, nur bei Schreibvorgängen. Also, wenn wir
einen Weg finden, nicht auf die SD-Karte zu schreiben, ist das Problem gelöst. Eine Lösung besteht darin das Root-Dateisystem des Raspberry PI auf einem USB-Laufwerk statt auf der SD-Karte zu speichern. Dieser Artikel enthält eine klare Schritt-für-Schritt-Anleitung zum Verschieben des Root-Dateisystems von Ihrem Raspberry auf eine externe Festplatte oder einen USB-Stick. Danach können Sie Ihren Raspberry PI mit dem Root-Dateisystem booten. 
Stellen Sie zunächst sicher, dass Ihr Raspberry PI ausgeschaltet ist. Nehmen Sie die SD-Karte aus dem Raspberry PI und stecken Sie sie in Ihren PC. Schließen Sie dann das USB-Laufwerk an Ihren PC an. Wenn beide Geräte mit dem PC verbunden sind, müssen wir die zugewiesenen Gerätenamen herausfinden. Führen Sie den folgenden Befehl aus, um alle Festplatten und Partitionen auf Ihrem PC aufzulisten. Der Parameter -p sorgt dafür, dass die Befehlsausgabe den vollständigen Gerätenamen enthält:

 

lsblk -p | grep "disk\|part"

 lsblk p grep disk

 

Ein Blick auf die Befehlsausgabe verrät uns, dass /dev/sda die Festplatte meines PCs ist und die die wir eigentlich gar nicht anfassen sollten. Beim Einstecken wies Linux dem USB-Laufwerk den Gerätenamen /dev/sdb für das USB-Laufwerk zugewiesen. Das USB-Laufwerk enthält derzeit eine Partition (/dev/sdb1), die keine Rolle spielt, da wir das USB-Laufwerk im nächsten Abschnitt neu formatieren wollen. Linux hat der SD-Karte den Gerätenamen /dev/mmcblk0 zugewiesen. Wie erwartet, enthält die SD-Karte zwei Partitionen: die Boot-Partition (/dev/mmcblk0p1) und die Partition des Root-Dateisystems (/dev/mmcblk0p2).


Für den Rest des Artikels werde ich diese Gerätenamen in den Beispielen verwenden. Allerdings beachten Sie jedoch, dass die Gerätenamen, die Ihr PC zugewiesen hat, unterschiedlich sein können/werden. Stellen Sie sicher, dass Sie
Sie die Gerätenamen entsprechend ersetzen in den folgenden Befehlen.
Da wir nun die Gerätenamen kennen, müssen wir nur noch sicherstellen, dass die Partitionen nicht gemountet sind, bevor wir fortfahren. Um die Partitionen auszuhängen, führen Sie diese Befehle aus: 


sudo umount /dev/sdb1
sudo umounten /dev/mmcblk0p1
sudo umounten /dev/mmcblk0p2

 

Erstellen und Formatieren einer EXT4-Partition auf dem USB-Laufwerk 
Bevor wir die Dateien aus dem Root-Dateisystem der SD-Karte auf das USB-Laufwerk kopieren können, müssen wir eine große EXT4-Partition auf dem USB-Laufwerk erstellen und diese neu erstellte Partition dann formatieren. Beachten Sie, dass dabei alle Dateien, die derzeit auf dem USB-Laufwerk gespeichert sind, gelöscht werden. Stellen Sie also sicher, dass Sie eine Sicherungskopie dieser Dateien erstellen, falls sie wichtig sind. Vergewissern Sie sich außerdem dreimal, dass Sie dass Sie in den folgenden Befehlen den richtigen Gerätenamen angeben. Andernfalls könnten Sie die falsche Festplatte unwiderruflich ändern. Erstellen Sie zunächst eine neue Partitionstabelle auf der Festplatte: 

sudo parted /dev/sdb mklabel msdos

 

Als nächstes erstellen Sie eine große Partition. Dadurch wird /dev/sdb1 erstellt:


sudo parted /dev/sdb mkpart primary 0% 100%


Nach der Erstellung der neuen Partition /dev/sdb1 formatieren Sie diese als EXT4:


sudo mkfs.ext4 /dev/sdb1

 

Einhängen der Partitionen des USB-Laufwerks und der SD-Karte
In den vorherigen Abschnitten haben wir alle Partitionen des USB-Laufwerks und der SD-Karte ausgehängt.
Außerdem haben wir eine große EXT4-Partition auf dem USB-Laufwerk erstellt. In diesem Abschnitt erstellen wir
neue Einhängepunkte für alle drei Partitionen und hängen die Partitionen manuell ein.
Erstellen Sie die Einhängepunkte mit den folgenden drei Befehlen:

 

sudo mkdir -p /mnt/usbdrive
sudo mkdir -p /mnt/sdboot
sudo mkdir -p /mnt/sdrootfs


Mounten Sie die Partitionen:

sudo mount /dev/sdb1 /mnt/usbdrive
sudo mount /dev/mmcblk0p1 /mnt/sdboot
sudo mount /dev/mmcblk0p2 /mnt/sdrootfs


Prüfen Sie ob alles stimmt:

lsblk -p | grep "disk\|part"

 lsblk p

 

HowTo: (/home/helmer/Farm/Software/Transfer system disk from SD card to hard disk - eLinux.org.pdf)