• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

[geloest]gparted sagt Platte ist nicht zugeteilt

da.cappo

Member
Hallo,
mein System: ich habe openSuse 11 mit KDE3.5 auf einem acer "extensa " am laufen
Nachdem ich die RettungsCd von Opensuse laufen lies sind meine ungueltigen Partitionseintraege zwar wieder ok...
aber gparted zeigt mir meine Platte als *nicht zugeteilt* an. alles d.h. die gesamte platte.

hmm bin etwas ratlos...
kann mir jemand sagen wie ich meine Partition wieder angezeigt bekomme?
Code:
sudo fdisk -l
Warnung: Schreiben wird ungültiges Flag 0x0000 in Part.-tabelle 5 korrigieren

Platte /dev/sda: 250.0 GByte, 250059350016 Byte
255 Köpfe, 63 Sektoren/Spuren, 30401 Zylinder
Einheiten = Zylinder von 16065 × 512 = 8225280 Bytes
Disk identifier: 0x8b421411

   Gerät  boot.     Anfang        Ende     Blöcke   Id  System
/dev/sda1               1         262     2104483+  82  Linux Swap / Solaris
/dev/sda2   *         263        2873    20972857+  83  Linux
/dev/sda3            2874       11242    67223992+  83  Linux
/dev/sda4           11243       17679    51705202+   5  Erweiterte

danke schonmal
Martin
 
OP
da.cappo

da.cappo

Member
qtparted sagt "critical error during ped_disk_new!"

das gleiche ist mit ubuntu live, und knoppix...
es sind zwar Leidensgenossen im Netz zu finden .... aber leider keine Loesung

komisch nach allem was ich gelesen habe, muesste, wenn fdisk -l die Partitionen korrect zeigt auch gparted sie zeigen.

aeh und "fdisk -l -u" gibt folgendes aus:

Code:
fdisk -l -u
Warnung: Schreiben wird ungültiges Flag 0x0000 in Part.-tabelle 5 korrigieren

Platte /dev/sda: 250.0 GByte, 250059350016 Byte
255 Köpfe, 63 Sektoren/Spuren, 30401 Zylinder, zusammen 488397168 Sektoren
Einheiten = Sektoren von 1 × 512 = 512 Bytes
Disk identifier: 0x8b421411

   Gerät  boot.     Anfang        Ende     Blöcke   Id  System
/dev/sda1              63     4209029     2104483+  82  Linux Swap / Solaris
/dev/sda2   *     4209030    46154744    20972857+  83  Linux
/dev/sda3        46154745   180602729    67223992+  83  Linux
/dev/sda4       180602730   284013134    51705202+   5  Erweiterte

Platte /dev/sdb: 500.1 GByte, 500107313152 Byte
255 Köpfe, 63 Sektoren/Spuren, 60801 Zylinder, zusammen 976772096 Sektoren
Einheiten = Sektoren von 1 × 512 = 512 Bytes
Disk identifier: 0x000c92b9

   Gerät  boot.     Anfang        Ende     Blöcke   Id  System
/dev/sdb1              63   410235839   205117888+   b  W95 FAT32
/dev/sdb2       410235840   770557724   180160942+   b  W95 FAT32
/dev/sdb3       770557725   976768064   103105170   83  Linux
 
A

Anonymous

Gast
Nur der Vollständigkeits halber falls wieder jemand mal dieses Problem haben sollte.
Aber bitte nicht auf euren aktiven Platten ausprobieren, das ist was für den Fehlerfall und nicht zum damit herumspielen. Die folgenden Aktionen können bei fehlerhafter Ausführung oder falschen Optionen euer System richtig patt machen

Ausgangssituation hier bei der Erklärung:
Code:
Disk /dev/sdc: 2028 MB, 2028994560 bytes
64 heads, 62 sectors/track, 998 cylinders
Units = cylinders of 3968 * 512 = 2031616 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/sdc1   *           1          11       21823+  83  Linux
/dev/sdc2              12         268      509888    5  Extended
/dev/sdc3             269        1015     1482048   83  Linux
Und ganz wichtig, es ist keine der Partitionen auf sdc gemountet.



Die Partitionstabelle (eigentlich nur die ersten 4 Partitionen ) befinden sich im MBR. Dort befindet sich auch eine MBR-Signatur, bedeutet die letzten beiden Byte kennzeichnen mit dem Wert 0x55 und 0xaa das diese Tabelle gültig ist.

Die Partitionstabelle der logischen Partitionen sind hier im MBR nicht untergebracht sondern befinden sich (maximal die ersten 4) im ersten Block der Erweiterten Partition. Dort befindet sich genau die selbe Struktur einer Partitionstabelle wie im MBR und auch eine solche MBR-Signatur am Ende der ersten 512 Byte.

Sind mehrere logische Partitionen vorhanden, dann wiederholt sich das ganze eventuell noch innerhalb der ersten Blöcke weiterer Logischer Partitionen. Wo und wie die Partitionstabellenteile der logischen Partitionen genau abgelegt werden, ist nicht eindeutig festgelegt. Es kommt auch etwas darauf an, mit welchem Tool nun partitioniert wurde.


Sich anschauen kann man das auch, hier im Beispiel wird die Partitiontabelle aus dem MBR mit anschließender MBR-Signatur hexadezimal angezeigt
Code:
priv0001:~ # dd if=/dev/sdc bs=1 count=66 skip=446 | hexdump -C
66+0 records in
66+0 records out
66 bytes (66 B) copied, 0.00424553 s, 15.5 kB/s
00000000  80 00 02 00 83 3f 3e 0a  01 00 00 00 7f aa 00 00  |.....?>.........|
00000010  00 00 01 0b 05 3f 7e 0b  80 aa 00 00 80 8f 0f 00  |.....?~.........|
00000020  00 00 41 0c 83 3f fe f6  00 3a 10 00 80 3a 2d 00  |..A..?...:...:-.|
00000030  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000040  55 aa                                             |U.|
00000042
Nach meiner oben aufgestellten Behauptung sollte auf der erweiterten Partition auch eine Partitionstabelle sein.
Code:
priv0001:~ # dd if=/dev/sdc2 bs=1 count=66 skip=446 | hexdump -C
66+0 records in
66+0 records out
66 bytes (66 B) copied, 0.00260342 s, 25.4 kB/s
00000000  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
00000040  55 aa                                             |U.|
00000042
Wie wir sehen ist die Partitionstabelle leer, ist ja klar, wir haben ja auch keine logischen Partitionen konfiguriert, aber wir sehen auch hier deutlich die 55 aa am Ende, genau eben diese MBR-Signatur die diese Partitionstabelle in der Gesamtpartitionstabelle als gültig erklärt.

Ist diese MBR-Signatur durch irgend eine Aktion zerstört, dann kommt es genau zu solchen Fehlern.

Zerstören wir als erstes einmal die Signatur im MBR selbst
Code:
priv0001:~ # echo -en "\x00\x00" | dd of=/dev/sdc bs=1 count=2 seek=510
2+0 records in
2+0 records out
2 bytes (2 B) copied, 0.0201091 s, 0.1 kB/s
priv0001:~ # fdisk -l

Disk /dev/sdc: 2028 MB, 2028994560 bytes
63 heads, 62 sectors/track, 1014 cylinders
Units = cylinders of 3906 * 512 = 1999872 bytes

Disk /dev/sdc doesn't contain a valid partition table
Das bedeutet, nachdem wir die Signatur mit 2 Nullen überschrieben haben, wird überhaupt keine gültige Partitionstabelle mehr gefunden.
Code:
priv0001:~ # fdisk /dev/sdc
Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel. Changes will remain in memory only,
until you decide to write them. After that, of course, the previous
content won't be recoverable.

Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)

Command (m for help):
Versuchen wir mit fdisk selber auf die Platte zuzugreifen sehen wir eine ähnliche Fehler-Meldung wie wir sie von oben her schon kennen, hier ist sie nur in englisch und betrifft den tabel 4.
Würden wir hier an dieser Stelle ein w(rite) als Befehl bei fdisk eingeben, würden wir eine gültige aber leer Paritionstabelle schreiben.

Korrigieren wir also unsere Partitions-Tabelle wieder in dem wir die Signatur wieder richtig "als gültig" darauf schreiben.
Code:
priv0001:~ # echo -en "\x55\xaa" | dd of=/dev/sdc bs=1 count=2 seek=510
2+0 records in
2+0 records out
2 bytes (2 B) copied, 0.00522583 s, 0.4 kB/s
priv0001:~ # fdisk -l

Disk /dev/sdc: 2028 MB, 2028994560 bytes
64 heads, 62 sectors/track, 998 cylinders
Units = cylinders of 3968 * 512 = 2031616 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/sdc1   *           1          11       21823+  83  Linux
/dev/sdc2              12         268      509888    5  Extended
/dev/sdc3             269        1015     1482048   83  Linux
Wir sehen, ;) und schon funktioniert die Partitionstabelle wieder.


Zerstören wir jetzt als nächstes die MBR-Signatur in der erweiterten Partition.
Code:
priv0001:~ # echo -en "\x00\x00" | dd of=/dev/sdc2 bs=1 count=2 seek=510
2+0 records in
2+0 records out
2 bytes (2 B) copied, 0.00219163 s, 0.9 kB/s
priv0001:~ # fdisk -l
Warning: invalid flag 0x0000 of partition table 5 will be corrected by w(rite)

Disk /dev/sdc: 2028 MB, 2028994560 bytes
64 heads, 62 sectors/track, 998 cylinders
Units = cylinders of 3968 * 512 = 2031616 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/sdc1   *           1          11       21823+  83  Linux
/dev/sdc2              12         268      509888    5  Extended
/dev/sdc3             269        1015     1482048   83  Linux
Wie wir sehen, die Partitionstabelle wird angezeigt, (zumindestens die ersten 4, hätten wir logischen Paritionen würden diese nicht angezeigt) aber wir sehen genau die Fehlermeldung mit dem Tabel 5 wie wir sie oben im Ausgangsfall dieses Threads hatten, nur eben hier in neudeutsch.
Warning: invalid flag 0x0000 of partition table 5 will be corrected by w(rite)
Es steht ja auch schon dort, das wenn wir mit fdisk die Partitionstabelle neu schreiben würden, dann würde das 0x0000 wieder zu einem
0xaa55 korrigiert. Dieses Schreiben mit fdisk hätte hier aber zur Folge, dass dort irgendwelche eventuellen Einträge die sich in der jetzt ungültigen Partitionstabelle in der Erweiterten Partition befinden würden, gelöscht würden. Das würde bedeuten, wir würden damit die eventuell noch richtig vorhandene Partitionierung der logischen Devices entgültig zerstören.

Aber wir haben es mit dd zerstört, also richten wir das Ganze auch wieder mit dd und die Tabelle der logischen Partitionen bliebe so erhalten.
Code:
priv0001:~ # echo -en "\x55\xaa" | dd of=/dev/sdc2 bs=1 count=2 seek=510
2+0 records in
2+0 records out
2 bytes (2 B) copied, 0.00291742 s, 0.7 kB/s
priv0001:~ # fdisk -l

Disk /dev/sdc: 2028 MB, 2028994560 bytes
64 heads, 62 sectors/track, 998 cylinders
Units = cylinders of 3968 * 512 = 2031616 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/sdc1   *           1          11       21823+  83  Linux
/dev/sdc2              12         268      509888    5  Extended
/dev/sdc3             269        1015     1482048   83  Linux
Und schon ist alles wieder ok.
Sicherheitshalber sollten wir die Partitionstabelle jetzt noch mal neu in den Rechner einlesen, oder den Rechner schnellstens rebooten, denn der Rechner würde immer noch mit der alten Partitionstabelle weiterarbeiten die wir vor unseren Tests hatten, der Kernel hat nämlich von der ganzen Zerstör- und Reparaturaktion der Partitionstabelle die wir eben veranstaltet haben, überhaupt nichts mitbekommen. Wir haben zwar zur Ausgangssituation in diesem Fall nichts verändert, doch Sicherheits- und Vollständigkeitshalber, folgender Befehl erwirkt ein re-read der Partitionstabelle von Platte. Der Kernel ließt hierbei die aktuelle Paritionsaufteilung von der Platte neu ein. (Funktioniert nur wenn nichts gemountet ist.)
Code:
priv0001:~ # sfdisk -R /dev/sdc
priv0001:~ #

Übrigens, hier schon mal gelesen, bei mir werden alle Partitionstabellen täglich gesichert und ua. auch in jedem Backup schnell auffindbar abgelegt.

robi
 
Oben