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
- HeAdLeSs
- Thread is Unresolved
-
-
Dann zeige einmal die Partitionstabellen her, wenn eine Partition auf der HD erhalten bleiben soll.
< sudo fdisk -l >
Servus !
-
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.
-
-
/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.
-
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.
Also einfach nur die Dateien kopieren, die UUID anpassen und fertig?
Werde ich probieren. Dabei kann man ja nichts kaputt machenDanke.
-
-
Also einfach nur die Dateien kopieren, die UUID anpassen und fertig?
Die PARTUUID und nicht die UUID.
Siehe den Unterschied, mit z. B.:
(oder gleichwertig).
-
hyle
Moved the thread from forum Allgemeines to forum Allgemeine Software. -
Also einfach nur die Dateien kopieren, ...
"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.
Servus !
-
"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?
-
-
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.
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.
Code
Display More# Von der Quelle (SD-Karte) den MBR auf das Ziel (SSD) kopieren sudo dd if=/dev/mmcblk0 of=/dev/sdX bs=512 count=1 partpbobe # Nun die erste Partition kopieren (mmcblk0p1 -> sdX1) sudo dd if=/dev/mmcblk0p1 of=/dev/sdX1 bs=4M sync # ggf. mit mount nachsehen, ob /dev/sdX2 eingehängt ist # und dann auf jeden Fall aushängen sudo e2image -arp /dev/mmcblk0p2 - | sudo dd of=/dev/sdX2 bs=16M sync # Sync, um sicherzustellen, dass alles geschrieben worden ist # PARTUUID hat sich nicht geändert # und die UUID des ext4 Dateisystems bleibt auch bestehen
-
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 !
-
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.
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! -