grub2 + mbr + USB-Stick clonen

Du kommst mit der Installation nicht voran oder willst noch was nachfragen? Schau auch in den "Tipps und Tricks"-Bereich.
Antworten
klal
Beiträge: 243
Registriert: 20.12.2007 12:16:41

grub2 + mbr + USB-Stick clonen

Beitrag von klal » 30.08.2013 12:33:59

Hallo,
habe folgendes Problem:

Ein bootbarer USB-Stick soll dupliziert werden.
Der neue USB-Stick hat die gleichen Partitionen und die gleichen UIDs.
Die Inhalte sind vorher mit rsync -av übertragen worden.

1. mbr sichern /wiederherstellen mit dd bs=512/446
Es öffnet sich beim Booten nur die Grubshell - dann passiert nichts mehr.

2. auf einem fremden System mit gleichem Kernel/grub-version: grub-install /dev/sdX / grub-install --boot-directory /mnt /dev/sdX
es folgt eine Grub-Fehlermeldung: error no such device UID.
Die fehlerhafte UID ist dann die Bootpartition vom Fremdsystem.

Wieso funktioniert das Sichern/Wiederherstellen mit dd nicht?
Wie kann man die UID ändern/angeben, bei grub-install.

Wie kann man den grub2-mbr + grub-Zusatzdaten ganz einfach sichern und wieder herstellen?

Grüße
Klal

DeletedUserReAsG

Re: grub2 + mbr + USB-Stick clonen

Beitrag von DeletedUserReAsG » 30.08.2013 15:22:36

Kann es sein, dass du die UUID meinst? Die lässt sich mit tune2fs anpassen (bei ext-FS, für andere gibt es andere Tools). Allerdings würde ich, wenn es um das Klonen/Duplizieren geht, doch gleich alles mit dd machen – oder spricht da etwas gegen? Gäbe dann eine 1:1-Kopie, incl. UUIDs usw..


cu,
niemand

klal
Beiträge: 243
Registriert: 20.12.2007 12:16:41

Re: grub2 + mbr + USB-Stick clonen

Beitrag von klal » 31.08.2013 00:47:15

Gegen komplettes clonen mit dd spricht, das die Partitionen auf dem neuen Stick unterschiedliche Größen haben können.
Das Problem sind alleine die Zusatzdaten von Grub2 (stage 1.5).
Die Position dafür ist wohl leider nicht an feste Sektoren wie der mbr gebunden.

Benutzeravatar
r900
Beiträge: 1053
Registriert: 09.10.2011 20:06:11
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: Stockholm

Re: grub2 + mbr + USB-Stick clonen

Beitrag von r900 » 31.08.2013 01:41:43

klal hat geschrieben:Die Position dafür ist wohl leider nicht an feste Sektoren wie der mbr gebunden.
Der zweite Teil von GRUB befindet sich in dem Bereich zwischen MBR und dem Anfang der ersten Partition. Wo das ist, kannst du mit fdisk -l herausfinden. In einem anderen Beitrag wurde vorgeschlagen die Partitionstabelle des Ziels mit
# sfdisk -d /dev/sdY > sdY.ptable
zu sichern, dann die Blöcke vor der ersten Partition mit dd zu kopieren (überschreibt die Partitionstabelle), und schließlich die Partitionstabelle auf dem Zielgerät mit
# sfdisk /dev/sdY < sdY.ptable
wieder herzustellen.

DeletedUserReAsG

Re: grub2 + mbr + USB-Stick clonen

Beitrag von DeletedUserReAsG » 31.08.2013 09:26:04

Gegen komplettes clonen mit dd spricht, das die Partitionen auf dem neuen Stick unterschiedliche Größen haben können.
Gut, das wäre in der Tat ein Arbeitsschritt mehr ….

cu,
niemand

klal
Beiträge: 243
Registriert: 20.12.2007 12:16:41

Re: grub2 + mbr + USB-Stick clonen

Beitrag von klal » 31.08.2013 11:50:13

Danke erstmal für alle Antworten - habe ein bißchen über mbr,stage 1.5 + Partitionstabellen dazu gelernt.

dd if=/dev/sdX of=bootloader_sicherung bs=446 count=1
sichert den MBR ohne P-Tabellen.

wenn die 1. Partition bei Sektor 2048 beginnt, sollte stage 1.5 zwischen 512-2047 liegen.

dd if=/dev/sdX of=stage15 bs=1534 count=513
sichert stage 1.5

Die Partitionstabellen bleiben unangetastet.

Wenn nun der Ziel-Usb-Stick mit gleichen UIDs partitioniert wird und die erste Partition beim gleichen Sektor wie dem Quell-Usb-Stick beginnt, dann müsste man ihn bootbar zum Laufen kriegen, alleine durch Kopieren mit dd/rsync. Unabhängig von den neuen Partitions-Größen.

Benutzeravatar
r900
Beiträge: 1053
Registriert: 09.10.2011 20:06:11
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: Stockholm

Re: grub2 + mbr + USB-Stick clonen

Beitrag von r900 » 31.08.2013 12:04:05

klal hat geschrieben:dd if=/dev/sdX of=stage15 bs=1534 count=513
sichert stage 1.5
Da bringst du ein paar Parameter durcheinander. Mit dem Befehl sicherst du 513 Blöcke à 1534 Byte. Du brauchst einen der Parameter seek und skip beim Lesen und den anderen beim Schreiben. Ich kann mir aber nie merken welchen bei welcher Aktion.

Also wenn ich das richtig sehe, skip beim Lesen und seek beim Schreiben.
# dd if=/dev/sdX of=stage15 bs=512 count=2047 skip=1
# dd if=stage15 of=/dev/sdY bs=512 seek=1

Funktioniert so natürlich nur wenn auf beiden die Partitionen bei Block 2048 beginnen.
klal hat geschrieben: Wenn nun der Ziel-Usb-Stick mit gleichen UIDs partitioniert wird
Die UUID ist eine Eigenschaft des Dateisystems, nicht der Partition.
Zuletzt geändert von r900 am 01.09.2013 19:33:17, insgesamt 2-mal geändert.

klal
Beiträge: 243
Registriert: 20.12.2007 12:16:41

Re: grub2 + mbr + USB-Stick clonen

Beitrag von klal » 31.08.2013 13:08:41

[quote]Da bringst du ein paar Parameter durcheinander. Mit dem Befehl sicherst du 513 Blöcke à 1534 Byte. Du brauchst einen der Parameter [tt]seek[/tt] und [tt]skip[/tt] beim Lesen und den anderen beim Schreiben. Ich kann mir aber nie merken welchen bei welcher Aktion.
[/quote]

Danke, bin mit dd nicht so vertraut - manpage sagt:
seek=BLÖCKE
BLÖCKE obs‐große Blöcke am Anfang der Ausgabe überspringen
skip=BLÖCKE
BLÖCKE ibs‐große Blöcke am Anfang der Eingabe überspringen

[quote]
Die [b]UU[/b]ID ist eine Eigenschaft des Dateisystems, nicht der Partition.[/quote]
[/quote]

Ja - aber diese Info wird wohl Stage 1.5 abgespeichert. Grub versucht nämlich nach dem Start auf die UID der Bootpartition zuzugreifen.

cosmac
Beiträge: 4576
Registriert: 28.03.2005 22:24:30

Re: grub2 + mbr + USB-Stick clonen

Beitrag von cosmac » 31.08.2013 13:25:00

r900 hat geschrieben:# dd if=/dev/sdX of=stage15 bs=512 count=3 skip=1
# dd if=stage15 of=/dev/sdY bs=512 seek=1

Funktioniert so natürlich nur wenn auf beiden die Partitionen bei Block 2048 beginnen.
noch nicht ganz, "Block 2048" heißt ja, dass davor 2047 Blocks zu je 512 Byte frei wären, "bs=512" count=3" sichert aber nur 3. Nur 3 Blocks für Stage1.5 scheint mir sehr wenig zu sein (o.k., 2047 sind's sicher auch nicht).

Der klassische Partitionsanfang war ja Block 63, da könnte ich mir vorstellen, dass grub diese 62 Blocks auch nutzt.
Beware of programmers who carry screwdrivers.

Benutzeravatar
r900
Beiträge: 1053
Registriert: 09.10.2011 20:06:11
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: Stockholm

Re: grub2 + mbr + USB-Stick clonen

Beitrag von r900 » 01.09.2013 19:27:32

Ach verflucht, immer wenn's schnell gehen soll.. Ich meinte alle Blöcke zwischen dem MBR (Block 0) und dem Anfang der Partition kopieren, also 2047. Hab's korrigiert.

klal
Beiträge: 243
Registriert: 20.12.2007 12:16:41

Re: grub2 + mbr + USB-Stick clonen

Beitrag von klal » 12.09.2013 09:43:04

Danke allen Antworten.
Hier ist meine Lösung:

# Backup erstellen
1. Ursprungsstick mounten und Inhalte aller gemounteten Partitionen mit
"rsync -avx /Pn /BACKUP" sichern
2. mbr ohne Partitionstabelle sichern mit: dd if=/dev/sdX of=/BACKUP/mbr bs=446 count=1
3. Grub Stage 1.5 sichern mit: dd if=/dev/sdX of=/BACKUP/grub2_stage2 bs=512 skip=1
count=62
4. mit blkid die UIDs sichern (merken).


# Backup auf neuen Stick kopieren
1. neuen Stick formatieren - mindestens soviele Partitionen wie Ursprungs-Stick.
Partitionsgröße beliebig (natürlich ausreichend groß für Inhalte).
Gleiches Filesystem (ext3,4 xfs, jfs) wie Ursprungsstick.
Darauf achten das die Partition die Grub enthalten wird (und - falls vorhanden - die logische
Partition) beim gleichen Sektor wie im Ursprungs-Stick beginnt (1. Partition beginnt i.d.R. bei
2048).
2. mbr ohne Partitionstabelle kopieren mit: dd of=/dev/sdX if=/BACKUP/mbr bs=446 count=1
3. Grub Stage 1.5 kopieren mit: dd of=/dev/sdX if=/BACKUP/grub2_stage2 bs=512 seek=1
count=62
4. Partitionen mounten und Backups mit "rsync -av /BACKUP/Pn/ /Ziel" kopieren
5. neuen Stick umounten und die UUIDs auf den Partitionen anpassen.
Wenn der Ursprungs-Stick nicht gemountet ist, können die UIDs auch gleich in Schritt 1., beim
Formatieren - gesetzt werden.
Zuletzt geändert von klal am 29.10.2013 11:55:56, insgesamt 1-mal geändert.

Benutzeravatar
r900
Beiträge: 1053
Registriert: 09.10.2011 20:06:11
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: Stockholm

Re: grub2 + mbr + USB-Stick clonen

Beitrag von r900 » 12.09.2013 13:21:15

klal hat geschrieben:3. Grub Stage 1.5 sichern mit: dd if=/dev/sdX of=/BACKUP/grub2_stage2 bs=512 skip=1
count=62
Wenn deine Partition bei 2048 beginnt solltest du auch dementsprechend count=2047 schreiben.
klal hat geschrieben:3. Grub Stage 1.5 kopieren mit: dd of=/dev/sdX if=/BACKUP/grub2_stage2 bs=512 skip=1
count=62
So funktioniert es nicht. Du musst beim Wiederherstellen seek und nicht skip benutzen.

klal
Beiträge: 243
Registriert: 20.12.2007 12:16:41

Re: grub2 + mbr + USB-Stick clonen

Beitrag von klal » 16.09.2013 12:54:18

Wenn deine Partition bei 2048 beginnt solltest du auch dementsprechend [tt]count=2047[/tt] schreiben.

Vielleicht. Aber es funktioniert bis count=62 und ich glaube nicht, das Grub jedesmal analysiert wo die 1. Partition anfängt. D.h. Grub wird wohl immer in den sicheren ungenutzen Bereich bis 62 schreiben.

So funktioniert es nicht. Du musst beim Wiederherstellen [tt]seek[/tt] und nicht [tt]skip[/tt] benutzen.
Oh ja - Schreibfehler!

jstolba
Beiträge: 1
Registriert: 15.10.2013 16:11:47

Re: grub2 + mbr + USB-Stick clonen

Beitrag von jstolba » 15.10.2013 16:43:06

Hey Leute, heisst das auf einem System mit "klassischem" Intel Part Table (also kein EFI), erstellt mit einer zeitgemäßen Version von gparted, gilt Folgendes?

bs=446 count=1
sichert den MBR exkl. P-Tabellen
bs=512 count=1
sichert den MBR inkl. P-Tabellen
bs=512 count=2047 skip=1
sichert Stage1.5 von GRUB2
bs=512 seek=1
stellt Stage1.5 von GRUB2 wieder her (von obigem Backup)
bs=512 count=2048
sichert GRUB2 komplett
bs=512
stellt GRUB2 komplett wieder her (von obigem Backup)

Antworten