Diese Anleitung sollte es ermöglichen, eine SD-Karte aus einem Pi 4 / Pi 5 auf ein neues Medium zu klonen. Es gibt ein passendes grafisches Tool namens sdcopier. Da das aber eine grafische Oberfläche benötigt, wird hier darauf verzichtet. Stattdessen wird der komplette Klonvorgang in der Konsole durchgeführt.
Hinweis
1) Die Anleitung ist auf dem Pi 4 noch ungetestet. Ebenso auf dem Pi 5 mit NVMe's > 512GB.
2) Die Anleitung funktioniert (zumindest beim Pi 5) auch mit einem Kloning von SD-Karte zu USB-Stick. Theoretisch sollte man in alle Richtungen klonen können (SD > USB, SD > NVMe, USB > SD, USB > NVMe, NVMe > SD, NVMe > USB).
3) Aufpassen bei dem Quell- und Ziellaufwerk. Man kann sich ganz schnell das bestehende System zerschießen(Leidvolle Eigenerfahrung …)
Wenn ihr eine NVMe SSD verwendet, die mehr als 2 TB an Speicher hat, dann funktioniert das Tool sdcopier nicht. Das liegt daran, dass das Tool ein MBR (Master Boot Record) Partitionsschema verwendet. Das kann aber maximal Partitionen mit 2 GB unterstützen. Um diese großen NVMe's verwenden zu können, muss GPT als Partitionsschema verwendet werden. Genau das macht diese Anleitung.
Wenn ihr das sdcopier Tool verwendet bekommt ihr sonst folgende Meldung:
Das Klonen ist in dem Fall auch nicht erfolgreich!
sudo rpi-eeprom-updatesudo apt install gparted gdisk dosfstools mtools iotop -ysudo systemctl stop klippersudo systemctl stop mysqldsudo systemctl stop apache2sudo systemctl stop smbd.servicesudo iotop –onlyACHTUNG
Alle Daten auf dem neuen Medium werden gelöscht!!
Hinweis
In diesem Beispiel wird auf einem Pi 5 von einem USB-Stick (Bootmedium) auf eine SD-Karte geklont!
lsblk pi@Pi5Test:~ $ lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS sda 8:0 1 28.6G 0 disk ├─sda1 8:1 1 512M 0 part /boot/firmware └─sda2 8:2 1 28.1G 0 part / mmcblk0 179:0 0 58.9G 0 disk ├─mmcblk0p1 179:1 0 512M 0 part /media/pi/bootfs └─mmcblk0p2 179:2 0 58.4G 0 part /media/pi/rootfs
/ auf der Partition sda2 und die liegt auf dem Device sda. lsblk Ausgabe sehen - in dem Fall mmcblk0. Man kann auch gleich sehen, dass die beiden Partitionen auf dem Laufwerk automatisch gemountet wurden. sudo umount /media/pi/bootfssudo umount /media/pi/rootfssudo cgdisk /dev/mmcblk0Warning! Non-GPT or damaged disk detected! This program will attempt to
convert to GPT form or repair damage to GPT data structures, but may not
succeed. Use gdisk or another disk repair tool if you have a damaged GPT
disk. [ Delete ] löschen. free space vorhanden ist. [ New ]Part. # Size Partition Type Partition Name
----------------------------------------------------------------
1007.0 KiB free space
1 512.0 MiB Microsoft basic data bootfs
2 58.4 GiB Linux filesystem rootfs
1007.5 KiB free space
[ Write ], yes eintippen und Enter[ Quit ] den Dialog verlassensudo sgdisk -p /dev/mmcblk0sudo mkfs.vfat /dev/mmcblk0p1 -n bootfs -vsudo mkfs.ext4 /dev/mmcblk0p2 -L rootfs -v → Evtl. mit y bestätigenlsblk!Prüfen ob das neue Medium mit einem GPT Partitionsschema arbeitet. (Wichtig für Medien > 2TB Speicherkapazität):
sudo fdisk -l |grep Disklabel -A 1 -B 4 pi@Pi5Test:~ $ sudo fdisk -l |grep Disklabel -A 1 -B 4 Disk model: GIGABYTE GP-GSM2NE3256GNTD Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disklabel type: gpt Disk identifier: ADB4BD3E-02B3-4BCF-81E4-B00633730E50
Wer das Partitionieren grafisch erledigen möchte kann das mit MobaXTerm so machen:
export XAUTHORITY=~/.Xauthoritysudo gpartedFür den Klonvorgang müssen die neuen Partionen gemountet werden:
sudo mkdir /klonbootsudo mkdir /klonfssudo mount /dev/mmcblk0p1 /klonbootsudo mount /dev/mmcblk0p2 /klonfsIn diesem Schritt werden die Daten dateibasiert auf den Klon übertragen…
sudo rsync -rltDv --numeric-ids --info=progress2 /boot/firmware/ /klonboot sudo rsync -rltDv --numeric-ids --info=progress2 /boot/ /klonbootsudo rsync -axHAWXSv --numeric-ids --info=progress2 / /klonfs
Man kann jetzt df -h verwenden, um zu schauen pb Quelle und Ziel in etwa gleich viele Daten enthalten (passt nicht 100%):
pi@Pi5Test:~ $ df -h Filesystem Size Used Avail Use% Mounted on udev 1.9G 0 1.9G 0% /dev tmpfs 405M 5.8M 399M 2% /run /dev/sda2 28G 4.3G 22G 17% / tmpfs 2.0G 368K 2.0G 1% /dev/shm tmpfs 5.0M 48K 5.0M 1% /run/lock /dev/sda1 510M 73M 438M 15% /boot/firmware tmpfs 405M 160K 405M 1% /run/user/1000 /dev/mmcblk0p1 511M 73M 439M 15% /klonboot /dev/mmcblk0p2 58G 4.0G 51G 8% /klonfs
Hinweis
Beim BullsEye ist /boot eine eigene FAT32 Partition. Bei BookWorm ist /boot aber mit im Root Filesystem. Dort wird dann /boot/firmware als FAT32 Partition eingebunden anstatt /boot!
Jetzt muss auf dem Klon Laufwerk noch die Datei fstab angepasst werden.
lsblk -o NAME,FSTYPE,SIZE,MOUNTPOINT,LABEL,PARTUUID pi@Pi5Test:~ $ lsblk -o NAME,FSTYPE,SIZE,MOUNTPOINT,LABEL,PARTUUID NAME FSTYPE SIZE MOUNTPOINT LABEL PARTUUID sda 28.6G ├─sda1 vfat 512M /boot/firmware bootfs 9c1b969d-01 └─sda2 ext4 28.1G / rootfs 9c1b969d-02 mmcblk0 58.9G ├─mmcblk0p1 vfat 512M /klonboot bootfs 4c5ca341-4453-47a6-8635-b20e4380b4e7 └─mmcblk0p2 ext4 58.4G /klonfs rootfs 78f45d12-57af-496f-9288-066e8694eee8
sudo nano /klonfs/etc/fstabproc /proc proc defaults 0 0 PARTUUID=9c1b969d-01 /boot/firmware vfat defaults 0 2 PARTUUID=9c1b969d-02 / ext4 defaults,noatime 0 1 # a swapfile is not a swap partition, no line here # use dphys-swapfile swap[on|off] for that
proc /proc proc defaults 0 0 PARTUUID=4c5ca341-4453-47a6-8635-b20e4380b4e7 /boot/firmware vfat defaults 0 2 PARTUUID=78f45d12-57af-496f-9288-066e8694eee8 / ext4 defaults,noatime 0 1 # a swapfile is not a swap partition, no line here # use dphys-swapfile swap[on|off] for that
STRG-x, Y und Enter
Die Datei cmdline.txt muss auch angepasst werden, weil der Pi sonst sein Root Dateisystem nicht finden kann.
sudo nano /klonboot/cmdline.txt.. root=PARTUUID=9c1b969d-02 .... root=PARTUUID=78f45d12-57af-496f-9288-066e8694eee8 ..STRG-x, Y und Entersudo umount /klonboot && sudo umount /klonfssudo poweroff
Wer Langeweile hat kann auch noch die Differenzen analysieren
sudo diff -qr / /media/pi/rootfs/
Der hintere Pfad muss natürlich angepasst werden!
Wenn die Bootreihenfolge auf NVMe, USB, SD eingestellt ist und von der NVMe gebootet wurde …
sudo umount /dev/nvme0n1p1sudo gdisk /dev/nvme0n1d → 1 → w → Y sudo rebootcd /etc/sshsudo rm ssh_host_*sudo ssh-keygen -A