Bewertung: 5 / 5

Stern aktivStern aktivStern aktivStern aktivStern aktiv
 
Ein fast jeder, der mit der Pi beginnt, benutzt SD Karten zur Speicherung des Betriebssystems und der Daten. Nach einer gewissen Zeit möchte man dann ein schnelleres und/oder größeres Speichermedium benutzen. Leider kann man die Pi nicht ohne SD Karte betreiben wenn man eine ältere Raspberry benutzt. Erst die Raspebrry 3 unterstützt den USB Boot mode direkt von dem USB Gerät. Auch die Raspberry 4 unterstütze bislang keinen USB Boot Mode. Allerdings ist sie nur zum Bootzeitpunkt notwendig und es wird nur die Bootpartition der SD Karte benötigt. Sämtliche Betriebssystemdaten wie Benutzerdaten, die root Partition, können auf einer beliebigen Partition liegen. Der folgende Artikel beschreibt was man dazu machen muss.
 
Edit 5.3.2024: Wer das Umziehen nicht manuell vornehmen will kann zum Umziehen raspiBackup nutzen.

Hinweis: Basierend auf der folgenden Beschreibung hat Perlchamp eine noch wesentlich bessere Beschreibung im Raspberry Forum erstellt.
 
Es sind relativ wenige Schritte notwendig um die existierende root Partition der SD Karte auf eine andere Partition umzukopieren und die SD Karte so zu ändern, dass danach nur noch die externe root Partition benutzt wird. Dieses kann eine Partieion eines USB Sticks oder auch eine Partition einer USB Platte sein.

Nach der Umstellung wird die existierende root Partition der SD Karte nicht mehr benutzt. Wichtig ist, dass zum Zeitpunkt der Umstellung nur eine weitere Platte bzw einen USB Stick an der Pi angeschlossen ist. Ansonsten kann es vorkommen, dass sich die aktuellen Partitionsdaten zum Zeitpunkt der Umstellung (z.B. /dev/sdc1) von denen wie sie nach einem Pi Reboot vorliegen (z.B. /dev/sdb1) unterscheiden und die Pi nicht die richtige Datenpartition findet und nicht bootet.
 
Sollen mehr als eine USB Platte an der Raspberry ständig laufen muss die PartitionsUUID als Kennung in der fstab und der cmdline.txt benutzt werden und die Zielplatte als Partitionstabelle eine GPT benutzen.

Die folgenden Schritte sind notwendig für die Umstellung und können alle auf der Pi vorgenommen werden:

Als Beispiel in den Befehlen wird die Beispielplatte /dev/sda und die Partition /dev/sda1 genommen und auf der Pi mit angeschlossenem weiteren USB Platte die Befehle ausgeführt werden. Dazu meldet man sich entweder direkt an der Pi mit Tastatur und Bildschirm an oder verbindet sich per ssh von einem anderen Rechner im lokalen Netz.

0) Erstellen eines Backups der SD Karte zur Sicherheit. Wer sich mit Linux auskennt und die Originale cmdline.txt wie unten beschrieben sichert kann immer schnell wieder auf die alte Einstellung zurückgehen.

1) Erstellen einer Partition auf einem USB Stick oder einer USB Platte.
sudo fdisk /dev/sda
bzw
sudo gdisk /dev/sda
wenn man mehrere Platten an der der Raspberry angeschlossen hat.

2) Formatieren der neuen Partition mit ext4. Das geht nur unter Linux auf der Pi.
sudo mkfs.ext4 /dev/sda1
 
3) Kopieren der SD Karten Datenpartition auf die neue USB Partition
sudo mount /dev/sda1 /mnt
sudo -- sh -c 'tar vcf -- / --one-file-system --exclude=/mnt/* --exclude=/dev/* --exclude=/proc/* --exclude=/sys/* --exclude=/tmp/* * | ( cd /mnt; tar xfp -)'
 

Alternativ kann man rsync zum kopieren der root Partition benutzen:

sudo mount /dev/sda1 /mnt

rsync -aHAXx / /mnt

 
-a  : all files, with permissions, etc..
-x  : stay on one file system
-H  : preserve hard links (not included with -a)
-A  : preserve ACLs/permissions (not included with -a)
-X  : preserve extended attributes (not included with -a)
 
4) Ändern der /mnt/etc/fstab auf der neuen USB Partition von

/dev/mmcblk0p1  /boot           vfat    defaults         0       0
/dev/mmcblk0p2  /               ext4    defaults,noatime 0       0


nach

/dev/mmcblk0p1  /boot           vfat    defaults         0       0
/dev/sda1       /               ext4    defaults,noatime 0       0
 
bzw nach
 
/dev/mmcblk0p1  /boot           vfat    defaults         0       0
PARTUUID=7C32EB25-0462-429F-BF92-90FFD81FC8FE       /               ext4    defaults,noatime 0       0
 
Die PartitionsUUID bekommt man wie folgt heraus:
 
sudo blkid | grep sda1
 
Ändern mit
sudo nano /mnt/etc/fstab
 
5) Anlegen einer Sicherung der alten /boot/cmdline.txt
sudo cp /boot/cmdline.txt /boot/cmdline.txt.sd
 
Damit kann man jederzeit wieder die SD Datenpartition benutzen indem man die gesicherte Datei wieder auf die
Originaldatei kopiert.
sudo cp /boot/cmdline.txt.sd /boot/cmdline.txt

6) Ändern in der der Datei /boot/cmdline.txt den Teil mit root=/dev/mmcblk0p2 nach root=/dev/sda1

Beispiel

dwc_otg.lpm_enable=0 root=/dev/mmcblk0p2 rootfstype=ext4 noatime quiet rootwait loglevel=1 zram.num_devices=2
nach
dwc_otg.lpm_enable=0 root=/dev/sda1 rootfstype=ext4 noatime quiet rootwait loglevel=1 zram.num_devices=2
bzw nach
dwc_otg.lpm_enable=0 root=PARTUUID=7C32EB25-0462-429F-BF92-90FFD81FC8FE rootfstype=ext4 noatime quiet rootwait loglevel=1 zram.num_devices=2

Ändern mit
sudo nano /boot/cmdline.txt
 

Anschliessend wenn die USB Platte als Rootpartition genutzt wird macht es Sinn die geänderte /boot/cmdline.txt noch zu sichern mit

sudo cp /boot/cmdline.txt /boot/cmdline.txt.USB
 
Dann kann man sehr schnell zwischen der Nutzung der Rootpartition auf der SD Karte und der USB Platte umschalten.
 
 
 

Links