SD Karte auf eine SSD Partition kopieren inkl. Bootfähigkeit

  • Hallo zusammen.

    Ich muss folgende Operation vornehmen:
    Eine (Boot)SD Karte auf eine Partition (insgesamt sind es 3) einer HDD kopieren. Undzwar so das die HDD danach bootet.
    Natürlich sollen die anderen Partitionen auf der HDD nicht angefasst werden.

    Da ich sowas noch nicht gemacht habe und es mir etwas heiß ist (die HDD ausversehen ganz platt zu machen), wollte ich lieber vorher mal um Rat fragen wie man das am besten anstellt und wie die genauen Befehle sind. Hat das schon mal jemand gemacht und kann mir sagen wie es geht?

    PS: Die Operation erfolgt direkt auf dem RPi(4). Von der SD Karte wurde gebootet.

  • SD Karte auf eine SSD Partition kopieren inkl. Bootfähigkeit? Schau mal ob du hier fündig wirst!

  • Damit der PI von der SSD starten kann, werden auf der SSD mindestens zwei Partitionen benötigt.

    Einmal die FAT32-Partition, von der gestartet wird und dann die ext4-Partition, auf der das System liegt.

    Damit das ganze sauber funktioniert, muss in der Datei "cmdline.txt" welche von der SD auf die SSD kopiert wurde, die PART_UUID des neuen Datenträgers eingetragen werden.

    Danach muss in der etc/fstab, die in der ext4-Partition liegt bei dem Eintrag für / die UUID für diese Partition eingetragen werden, sowie bei /boot die für die FAT32-Partition auf der SSD

    Den Kopierbefehl (und noch einmal eine Beschreibung) findest du in #15

    Hierbei werden nur die Dateien kopiert, nicht das komplette Dateisystem.

    Computer ..... grrrrrr

  • /dev/sda2 ist die Partition die bleiben muss.


    pi@clustermaster:~ $ sudo fdisk -l

    Disk /dev/ram0: 4 MiB, 4194304 bytes, 8192 sectors

    Units: sectors of 1 * 512 = 512 bytes

    Sector size (logical/physical): 512 bytes / 4096 bytes

    I/O size (minimum/optimal): 4096 bytes / 4096 bytes


    ...


    Disk /dev/sda: 149,1 GiB, 160041885696 bytes, 312581808 sectors

    Disk model: 0AS

    Units: sectors of 1 * 512 = 512 bytes

    Sector size (logical/physical): 512 bytes / 4096 bytes

    I/O size (minimum/optimal): 4096 bytes / 4096 bytes

    Disklabel type: dos

    Disk identifier: 0x3ead3f6f

    Device Boot Start End Sectors Size Id Type

    /dev/sda1 8192 532479 524288 256M c W95 FAT32 (LBA)

    /dev/sda2 72503296 312580095 240076800 114,5G 83 Linux

    /dev/sda3 532480 72503295 71970816 34,3G 83 Linux

    Partition table entries are not in disk order.


    Disk /dev/mmcblk0: 29,9 GiB, 32090619904 bytes, 62676992 sectors

    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: dos

    Disk identifier: 0x9e255d08

    Device Boot Start End Sectors Size Id Type

    /dev/mmcblk0p1 8192 532479 524288 256M c W95 FAT32 (LBA)

    /dev/mmcblk0p2 532480 62676991 62144512 29,6G 83 Linux

  • Ist vielleicht nicht unwichtig das die HDD vorher schon mal als boot medium am RPi hing. Ich habe das OS aber "zerspielt" und jetzt braucht es ein neues OS... aber die Daten müssen erhalten bleiben. Deswegen habe ich die vorherige Partition geteilt und die Daten "nach hinten" verschoben und "vorn" eine leere Partition erstellt, wo das OS drauf soll. Die FAT32 Partition ist noch unangetastet.

  • Also einfach nur die Dateien kopieren, die UUID anpassen und fertig?
    Werde ich probieren. Dabei kann man ja nichts kaputt machen :) Danke.

  • Also einfach nur die Dateien kopieren, die UUID anpassen und fertig?

    Die PARTUUID und nicht die UUID.

    Siehe den Unterschied, mit z. B.:

    Code
    ls -l /dev/disk/by-partuuid
    lsblk -fp

    (oder gleichwertig).

    The most popular websites without IPv6 in Germany.  IPv6-Ausreden

    Meine PIs

    PI4B/8GB (border device) OpenBSD 7.4 (64bit): SSH-Server, WireGuard-Server, ircd-hybrid-Server, stunnel-Proxy, Mumble-Server

    PI3B+ FreeBSD 14.0-R-p6 (arm64): SSH-Serv., WireGuard-Serv., ircd-hybrid-Serv., stunnel-Proxy, Mumble-Serv., ddclient

    PI4B/4GB Bullseye-lite (64bit; modifiziert): SSH-Server, WireGuard-Server, ircd-hybrid-Server, stunnel-Proxy, Mumble-Server, botamusique, ample

  • "Einfach nur" tuts nicht. Du musst auch alle Dateirechte, Filemode Bits (setuid, setgid sticky Bit), ACLs, Soft- und Hardlinks, xattrs usw. mitkopieren, damit am Kopierziel ein identes Filesystem entsteht.

    Ja, aber das sollte doch beim kopieren mit tar und dem pipe-Operator (wie weiter oben schon empfohlen worden ist), der Fall sein, ... oder?

    The most popular websites without IPv6 in Germany.  IPv6-Ausreden

    Meine PIs

    PI4B/8GB (border device) OpenBSD 7.4 (64bit): SSH-Server, WireGuard-Server, ircd-hybrid-Server, stunnel-Proxy, Mumble-Server

    PI3B+ FreeBSD 14.0-R-p6 (arm64): SSH-Serv., WireGuard-Serv., ircd-hybrid-Serv., stunnel-Proxy, Mumble-Serv., ddclient

    PI4B/4GB Bullseye-lite (64bit; modifiziert): SSH-Server, WireGuard-Server, ircd-hybrid-Server, stunnel-Proxy, Mumble-Server, botamusique, ample

  • Ja, aber das sollte doch beim kopieren mit tar und dem pipe-Operator (wie weiter oben schon empfohlen worden ist), der Fall sein, ... oder?

    Bei einer 1:1 Kopie mit dd wird alles kopiert, bis das Ende erreicht ist.

    Nachteil:

    • Partition muss nachträglich vergrößert werden
    • Dateisystem muss nachträglich vergrößert werden

    Modus, Owner, Timestamps, xattr und andere ACLs braucht man nur setzen, wenn man die Dateien einzeln kopiert, z.B. mit dem Befehl cp.

    Aber auch mit dem Befehl cp kann man alle Metadaten mit kopieren.

    Code
    cp -a --preserve=all /mnt/quelle/* /mnt/ziel/

    Eine weitere Alternative ist das Erstellen eines ext4 Images aus der Quelle. Dann hat man zusammenhängende Daten und keine freien Blöcke in der resultierenden Datei. Vorsicht, dabei entstehen `sparse files`, Dateien mit Löchern. Nicht alle Unix-Tools können damit umgehen.

  • Ja, aber das sollte doch beim kopieren mit tar und dem pipe-Operator (wie weiter oben schon empfohlen worden ist), der Fall sein, ... oder?

    Nur wenn der User root tar ausführt, werden --same-owner und --same.permission per default berücksichtigt.

    --xattrs und --acls müssen explizit angegeben werden und bedürfen darüberhinaus ein POSIX fähiges Archive Format (z.B. --format=pax ).

    Aus dem GNU tar manual - PDF File (download) - https://www.gnu.org/software/tar/manual/

    Servus !

    RTFM = Read The Factory Manual, oder so

    Einmal editiert, zuletzt von RTFM (10. Januar 2022 um 23:04)

  • Genau so.

    Habe die Dateien mit rsync kopiert. Dabei bleiben auch die Rechte erhalten.
    Dann die UUID und PART_UUID gefixt ... und es läuft.

    Vielen Dank für eure Hilfe! :danke_ATDE:

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!