gptzfsboot bootcode Installation ... scheme zerstört

ath0

Well-Known Member
Hallo,

ich habe gerade den Bootcode meines Rechners austauschen wollen, bzw es gemacht und nun sind meine Schemas weg.

Installiert hatte ich die Kiste so:

Code:
#gpart create -s mbr ada0
#gpart add -t freebsd ada0
#gpart create -s BSD ada0s1
#gpart set -a active -i 1 ada0
#gpart add -s 225G -t freebsd-zfs ada0s1
#gpart add -t freebsd-swap ada0s1
#zpool create zroot /dev/ada0s1a
#zpool set bootfs=zroot zroot
#zpool export zroot
#gpart bootcode -b /boot/boot0 ada0
#dd if=/boot/zfsboot of=/dev/ada0s1a count=1
#sysctl kern.geom.debugflags=0x10
#dd if=/boot/zfsboot of=/dev/ad0s1a skip=1 seek=1024

Den Bootcode habe ich wie in dem Beispiel in UPDATING ausgetauscht
Code:
gpart bootcode -p /boot/gptzfsboot -i 1 ada0

Evtl. hätte ich das besser mit dem Schalter -b machen sollen, denn nun sind die habe ich nur noch ada0 MBR und Index 1 Freebsd (als aktiv). freebsd-zfs (ada0s1a) und freebsd-swap(ada0s1b) sind weg.

Will ich mir ada0s1 anzeigen lassen (gpart show ada0s1) bekomme ich "gpart: no such geom ada0s1" gemeldet.
Das zfs auf der Platte ist noch via live USB ansprechbar Booten tut der Rechner aber von der Platte nicht mehr :(

Bekomme ich das irgendwie wieder gerade gebogen?
Bitte helft mir :') :)
 
Dein Fehler war gptzfsboot (was für GPT-Bootpartitionen gedacht ist) in ein bsdlabel zu schreiben. Damit sind die ersten >150 Kilobyte der ersten Partition überschrieben worden, was wahrscheinlich die Partitionstabelle gekillt hat. Wenn es dir hilft: Ich habe mal aus Versehen gptboot in eine Windows-Bootpartition geschrieben. Windows dazu zu bringen seine Bootpartition neu zu erstellen ist recht "interessant".

Wenn die Auflistung oben exakt der Installation entspricht, ist das einfachste die Partitionen einfach neu zu erstellen. Wenn die Partitionen an exakt den gleichen Stellen liegen, wird dadurch automatisch der Partitionsinhalt wieder lesbar. Zuerst ein Backup machen:

Code:
dd if=/dev/ada0 of=ada0_head.img bs=4M count=5

Das könnte man später einfach zurückspielen, um den unveränderten Beginn der Platte wiederzubekommen. Natürlich darf das ZFS zwischendurch nicht angefasst worden sein, sonst schrottet man es durch teilweise Überschreiben mit älteren Daten:

Code:
dd if=ada0_head.img of=/dev/ada0 bs=4M

Anschließend alles was von den Partitionen noch übrig ist kaputt hauen:

Code:
gpart destroy -F ada

Und von vorn:

Code:
gpart create -s mbr ada0
gpart add -t freebsd ada0
gpart create -s BSD ada0s1
gpart set -a active -i 1 ada0
gpart add -s 225G -t freebsd-zfs ada0s1
gpart add -t freebsd-swap ada0s1

Das Ganze ist recht haarig und wird eh nur funktionieren, wenn ZFSs Uberblock noch lebt... Aber was Besseres fällt mir im Moment nicht ein. Normalerweise würde ich testdisk empfehlen, aber das kann meines Wissens nach keine bsdlabel erkennen und wiederherstellen. Einmal davon abgesehen, dass es durch das komplette Überschreiben des Labels nur durch Scannen der Platte die Partitionen finden könnte. Wofür es wiederum mindestens ZFS erkennen müsste.
 
Vielen Dank Yamagi! Ganz genau mein Setup war das nicht, das sind die Aufeichnungen meines Servers gewesen, die als vorlage für alle meine Rechner gedient haben.
Ich denke das es besser ist wenn ich mir die Daten des Pools weg lege und einfach den Krempel neu mache, zumal ich nicht weiß wie groß ich den Swap gemacht hatte ^^.
Bei der gelegenheit steige ich dann auch auf gpt partitionen um, scheint ja irgendwie bevorzugt zu sein.
 
Zurück
Oben