sbcs:raspberry_pi:bootdatentraeger_klonen_pi_4_5
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
sbcs:raspberry_pi:bootdatentraeger_klonen_pi_4_5 [2024/01/24 23:02] – removed - external edit (Unknown date) 127.0.0.1 | sbcs:raspberry_pi:bootdatentraeger_klonen_pi_4_5 [2024/01/24 23:11] (current) – [YouTube Video #84] dominik | ||
---|---|---|---|
Line 1: | Line 1: | ||
+ | ====== Bootdatenträger klonen (Pi 4/5) ====== | ||
+ | Diese Anleitung sollte es ermöglichen, | ||
+ | > **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 ...) | ||
+ | |||
+ | ===== YouTube Video #84 ===== | ||
+ | {{youtube> | ||
+ | |||
+ | \\ | ||
+ | |||
+ | ===== NVMe SSD's > 2 TB ===== | ||
+ | Wenn ihr eine NVMe SSD verwendet, die mehr als 2 TB an Speicher hat, dann funktioniert das Tool '' | ||
+ | |||
+ | Wenn ihr das '' | ||
+ | |||
+ | Das Klonen ist in dem Fall auch nicht erfolgreich! | ||
+ | |||
+ | ===== System vorbereiten ===== | ||
+ | * Es muss der aktuelle Bootloader auf dem Pi 5 installiert sein! Siehe dazu [[http:// | ||
+ | * Check mittels '' | ||
+ | * Evtl. muss auch die Bootreihenfolge (Pi 5) angepasst werden. Siehe dazu [[http:// | ||
+ | * ein paar Tools installieren auf dem zu klonenden System \\ '' | ||
+ | * Dienste stoppen die ggf. eine größeren IO Traffic auf einem Massenspeicher generieren könnten \\ Hier in paar Beispiele: \\ | ||
+ | * Klipper '' | ||
+ | * Datenbanken MySQL '' | ||
+ | * Webserver Apache '' | ||
+ | * Samba Service '' | ||
+ | * Nicht vergessen auf dem Klon später die Dienste wieder zu starten ;-) | ||
+ | * Prüfen was ggf. hohe IO Last erzeugt geht mittels '' | ||
+ | |||
+ | ===== neues Medium vorbereiten ===== | ||
+ | > **ACHTUNG** \\ <color # | ||
+ | |||
+ | > **Hinweis** \\ In diesem Beispiel wird auf einem Pi 5 von einem USB-Stick (Bootmedium) auf eine SD-Karte geklont! | ||
+ | |||
+ | * den Pi booten und das neue Laufwerk mit anschließen | ||
+ | * aktuelles Bootmedium (also das Laufwerk, was wir auf das neue Medium klonen wollen) ermitteln \\ '' | ||
+ | pi@Pi5Test: | ||
+ | NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS | ||
+ | sda | ||
+ | ├─sda1 | ||
+ | └─sda2 | ||
+ | mmcblk0 | ||
+ | ├─mmcblk0p1 179:1 0 512M 0 part / | ||
+ | └─mmcblk0p2 179:2 0 58.4G 0 part / | ||
+ | </ | ||
+ | * Das Bootmedium ist immer das mit dem " | ||
+ | * Das Medium, auf das wir klonen wollen, können wir ebenfalls in der '' | ||
+ | * Ergebnis bis hier: | ||
+ | * **Quelllaufwerk : sda** | ||
+ | * **Ziellaufwerk : mmcblk0** | ||
+ | * Ziellaufwerk enthält Partitionen -> Partitionen aushängen | ||
+ | * Unmount der Partitionen auf dem Ziellaufwerk | ||
+ | * '' | ||
+ | * '' | ||
+ | * Neue Partitionen anlegen (inkl. Umstieg auf GPT als Partitionsschema) | ||
+ | * '' | ||
+ | * Es können 1-2 Meldung kommen wie z.B.: \\ '' | ||
+ | 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.'' | ||
+ | * Jetzt in der Oberfläche die Partitionen anwählen und durch '' | ||
+ | * Nun 2 neue Partitionen anlegen jeweils über '' | ||
+ | * **Partition 1** \\ First sector -> Enter \\ Size in sectors or {KMGTP} -> 512M \\ Hex code or GUID -> 0700 \\ Enter new partition name -> bootfs | ||
+ | * Jetzt mit dem Cursor **unten auf free space** navigieren! | ||
+ | * **Partition 2** \\ First sector -> Enter \\ Size in sectors or {KMGTP} -> Enter \\ Hex code or GUID -> Enter \\ Enter new partition name -> rootfs | ||
+ | * Das sollte dann in etwa so aussehen: \\ < | ||
+ | Part. # | ||
+ | ---------------------------------------------------------------- | ||
+ | 1007.0 KiB free space | ||
+ | | ||
+ | | ||
+ | 1007.5 KiB free space | ||
+ | </ | ||
+ | * Jetzt auf '' | ||
+ | * Über '' | ||
+ | * Prüfen kann man das Ziellaufwerk jetzt nochmal mit '' | ||
+ | * Jetzt müssen die Partitionen noch formatiert werden ... | ||
+ | * '' | ||
+ | * '' | ||
+ | * **Hinweis: | ||
+ | |||
+ | Prüfen ob das neue Medium mit einem GPT Partitionsschema arbeitet. (Wichtig für Medien > 2TB Speicherkapazität): | ||
+ | * '' | ||
+ | pi@Pi5Test: | ||
+ | Disk model: GIGABYTE GP-GSM2NE3256GNTD | ||
+ | Units: sectors of 1 * 512 = 512 bytes | ||
+ | Sector size (logical/ | ||
+ | I/O size (minimum/ | ||
+ | Disklabel type: gpt | ||
+ | Disk identifier: ADB4BD3E-02B3-4BCF-81E4-B00633730E50 | ||
+ | </ | ||
+ | |||
+ | ===== gparted (grafisch) ===== | ||
+ | Wer das Partitionieren grafisch erledigen möchte kann das mit MobaXTerm so machen: | ||
+ | * '' | ||
+ | * '' | ||
+ | * Neues Medium oben rechts auswählen | ||
+ | * alle bestehenden Partitionen löschen | ||
+ | * mit dem grünen Haken übernehmen | ||
+ | * umstellen auf GPT Partitionsschema | ||
+ | * Device -> Create Partition Table ... -> gpt | ||
+ | * neue FAT32 Partition anlegen mit 512MB (Label bootfs) | ||
+ | * neue ext4 Partition anlegen mit dem Restspeicherplatz (Label rootfs) | ||
+ | * mit dem grünen Haken übernehmen | ||
+ | * fertig | ||
+ | |||
+ | ===== Mounting ===== | ||
+ | Für den Klonvorgang müssen die neuen Partionen gemountet werden: | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | |||
+ | ===== Klonen ===== | ||
+ | In diesem Schritt werden die Daten dateibasiert auf den Klon übertragen... | ||
+ | * Boot Partition klonen \\ **BookWorm Image** \\ '' | ||
+ | * System Partition klonen \\ '' | ||
+ | |||
+ | Man kann jetzt '' | ||
+ | pi@Pi5Test: | ||
+ | Filesystem | ||
+ | udev 1.9G | ||
+ | tmpfs | ||
+ | / | ||
+ | tmpfs | ||
+ | tmpfs | ||
+ | / | ||
+ | tmpfs | ||
+ | / | ||
+ | / | ||
+ | </ | ||
+ | |||
+ | > **Hinweis** \\ Beim BullsEye ist /boot eine eigene FAT32 Partition. Bei BookWorm ist /boot aber mit im Root Filesystem. Dort wird dann / | ||
+ | |||
+ | ===== fstab abpassen ===== | ||
+ | Jetzt muss auf dem Klon Laufwerk noch die Datei '' | ||
+ | |||
+ | * Neue PARTUUID' | ||
+ | pi@Pi5Test: | ||
+ | NAME FSTYPE | ||
+ | sda 28.6G | ||
+ | ├─sda1 | ||
+ | └─sda2 | ||
+ | mmcblk0 | ||
+ | ├─mmcblk0p1 vfat 512M / | ||
+ | └─mmcblk0p2 ext4 58.4G / | ||
+ | </ | ||
+ | * Wichtig sind die PARTUUID' | ||
+ | * '' | ||
+ | * neue PARTUUID s eintragen für beide Partitionen | ||
+ | * Alt \\ < | ||
+ | proc /proc | ||
+ | PARTUUID=9c1b969d-01 | ||
+ | PARTUUID=9c1b969d-02 | ||
+ | # a swapfile is not a swap partition, no line here | ||
+ | # | ||
+ | </ | ||
+ | * Neu \\ < | ||
+ | proc /proc | ||
+ | PARTUUID=4c5ca341-4453-47a6-8635-b20e4380b4e7 | ||
+ | PARTUUID=78f45d12-57af-496f-9288-066e8694eee8 | ||
+ | # a swapfile is not a swap partition, no line here | ||
+ | # | ||
+ | </ | ||
+ | * Editor beenden mit '' | ||
+ | |||
+ | ===== cmdline.txt abpassen ===== | ||
+ | Die Datei '' | ||
+ | |||
+ | * '' | ||
+ | * Alt \\ '' | ||
+ | * Neu \\ '' | ||
+ | * Editor beenden mit '' | ||
+ | |||
+ | ===== Finalisierung ===== | ||
+ | * '' | ||
+ | * '' | ||
+ | * Das alte Bootmedium entfernen (in diesem Beispiel der USB-Stick) | ||
+ | * Raspberry Pi booten und hoffen das er läuft 8-) | ||
+ | |||
+ | ===== Kontrolle ===== | ||
+ | Wer Langeweile hat kann auch noch die Differenzen analysieren :-P \\ '' | ||
+ | |||
+ | ===== Probleme ===== | ||
+ | |||
+ | ==== NVMe gebootet ==== | ||
+ | Wenn die Bootreihenfolge auf NVMe, USB, SD eingestellt ist und von der NVMe gebootet wurde ... | ||
+ | |||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | |||
+ | ==== cmdline.txt ==== | ||
+ | * cmdline.txt nicht angepasst \\ {{: | ||
+ | |||
+ | ==== Host SSH Keys ==== | ||
+ | * Gleicher Host SSH Keys \\ Zum Erneuern der ssh-Host-Keys löscht man auf dem Server zunächst die bestehenden Host-Keys und generiert einen Satz neue Keys | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' |