grub2 + mbr + USB-Stick clonen
grub2 + mbr + USB-Stick clonen
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
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
Re: grub2 + mbr + USB-Stick clonen
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
cu,
niemand
Re: grub2 + mbr + USB-Stick clonen
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.
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.
- 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
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 mitklal hat geschrieben:Die Position dafür ist wohl leider nicht an feste Sektoren wie der mbr gebunden.
# 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.
Re: grub2 + mbr + USB-Stick clonen
Gut, das wäre in der Tat ein Arbeitsschritt mehr ….Gegen komplettes clonen mit dd spricht, das die Partitionen auf dem neuen Stick unterschiedliche Größen haben können.
cu,
niemand
Re: grub2 + mbr + USB-Stick clonen
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.
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.
- 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
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.klal hat geschrieben:dd if=/dev/sdX of=stage15 bs=1534 count=513
sichert stage 1.5
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.
Die UUID ist eine Eigenschaft des Dateisystems, nicht der Partition.klal hat geschrieben: Wenn nun der Ziel-Usb-Stick mit gleichen UIDs partitioniert wird
Zuletzt geändert von r900 am 01.09.2013 19:33:17, insgesamt 2-mal geändert.
Re: grub2 + mbr + USB-Stick clonen
[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.
[/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.
Re: grub2 + mbr + USB-Stick clonen
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).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.
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.
- 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
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.
Re: grub2 + mbr + USB-Stick clonen
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.
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.
- 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
Wenn deine Partition bei 2048 beginnt solltest du auch dementsprechend count=2047 schreiben.klal hat geschrieben:3. Grub Stage 1.5 sichern mit: dd if=/dev/sdX of=/BACKUP/grub2_stage2 bs=512 skip=1
count=62
So funktioniert es nicht. Du musst beim Wiederherstellen seek und nicht skip benutzen.klal hat geschrieben:3. Grub Stage 1.5 kopieren mit: dd of=/dev/sdX if=/BACKUP/grub2_stage2 bs=512 skip=1
count=62
Re: grub2 + mbr + USB-Stick clonen
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!
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!
Re: grub2 + mbr + USB-Stick clonen
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)
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)