
Hallo habe hier eine Disk, die Probleme macht ... System bootet nicht mehr. Der Hardwaretest im BIOS meint, daß die Platte defekt ist. Also dachte ich mir mit dd versuchen zu retten, was noch zu retten ist (System und Platte ist nicht von mir) Nun verwirrt mich die Ausgabe von fdisk: lap:~ # fdisk -l /dev/sdc Disk /dev/sdc: 465.8 GiB, 500107862016 bytes, 122096646 sectors Units: sectors of 1 * 4096 = 4096 bytes Sector size (logical/physical): 4096 bytes / 4096 bytes I/O size (minimum/optimal): 4096 bytes / 4096 bytes Disklabel type: dos Disk identifier: 0x79712c91 Device Boot Start End Sectors Size Id Type /dev/sdc1 * 2048 2101247 2099200 8G 7 HPFS/NTFS/exFAT /dev/sdc2 2101248 942725119 940623872 3.5T 7 HPFS/NTFS/exFAT /dev/sdc3 942725120 972568575 29843456 113.9G 7 HPFS/NTFS/exFAT /dev/sdc4 972568576 976762879 4194304 16G b W95 FAT32 alle Partitionen sind meiner Meinung nach um den Faktor 8 zu groß. Hat jemand eine Idee, was hier passiert sein könnte ? Es handelt sich hierbei um eine: TOSHIBA MQ01ABF050 PQ: 0 ANSI: 2 CCS laut spec sheet hat die Platte folgende daten: Number of User Data Cylinders 231,312 Bytes Per Sector (HOST) 512 byte Bytes Per Sector (DISK) 4096 byte Logical Blocks (LBA) 976,773,168 Danke für Eure tips :) -- Christian ------------------------------------------------------------ https://join.worldcommunitygrid.org?recruiterId=177038 ------------------------------------------------------------ http://www.sc24.de - Sportbekleidung ------------------------------------------------------------ -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um den Listen Administrator zu erreichen, schicken Sie eine Mail an: opensuse-de+owner@opensuse.org

Hallo Christian, hallo zusammen, Am Mittwoch, 26. Juli 2017, 18:54:49 CEST schrieb Christian:
Ein Sektor ist also laut fdisk 4096 bytes = 4 KB groß.
Mal rechnen: sdc1 hat 2099200 Sektoren a 4 KB = 8396800 KB = 8200 MiB = 8 GiB. Das passt zu den 8 GiB, die fdisk berichtet. sdc2 wird mit 3,5 TB berichtet, was rechnerisch auch stimmt, aber nicht zur Plattengröße von (laut fdisk) 465,8 GiB passt. sdc3 und scd4 habe ich jetzt nicht nachgerechnet, erwarte aber auch da ein "rechnerisch richtig".
Dieser Unterschied von 512 vs. 4096 Bytes per Sector HOST vs. DISK dürfte das Problem erklären ;-) Laut man fdisk sollte Dir die Option --sector-size helfen, um fdisk in die richtige Bahn zu lenken. Aber: es geht Dir ja vermutlich eher darum, die Daten von der Platte zu retten als sie neu zu partitionieren. Daher: mache ein Image der Platte und lese dann aus diesem Image die Partitionen / Daten aus. Ich hatte das schon mit meinem Halbwissen zusammengeschrieben, aber doch wieder gelöscht und mit meinem Archiv der uralten FAQ [1] ersetzt - die kann das trotz dicker Staubschicht besser ;-) (Sorry, ich habe leider nur noch die XML-Version griffbereit.) <question shortref="filesystems-mount_image" title="Wie kann ich Partitionen aus dd-Images mounten?" status="public"> <keyword>dd</keyword> <keyword>image</keyword> <keyword>mount</keyword> <keyword>loop</keyword> <keyword>fdisk</keyword> <answer author="Jens Nixdorf" editor="cboltz"> <p>Hat man eine einzelne Festplatten-Partition mit dd in ein Imagefile kopiert (z. B. mit dem Befehl <tt>dd if=/dev/hda2 of=<Image-Dateiname></tt>), kann man dieses Image relativ einfach über ein loop-Device mounten:</p> <code>mount -t <filesystem> -o loop,ro <Image-Dateiname> <Zielverzeichnis></code> <p>Ist jedoch von einer kompletten Festplatte mit mehreren Partitionen eine solche Kopie erstellt worden (z. B. <tt>dd if=/dev/hda of=<Image-Dateiname></tt>) und man möchte einzelne Partitionen aus diesem Image mounten, dann muss man genau wissen, wo diese Partitionen beginnen.</p> <p>Angenommen, die kopierte Festplatte ist ein Hitachi-Microdrive mit 512 MB, hat zwei primäre Partitionen und einen MasterBootRecord (MBR) und wurde in das Image <tt>platte.bin</tt> kopiert. Wir wollen die beiden Partitionen einzeln mounten, also müssen wir zuerst die Lage der Partition feststellen. Das geht mit fdisk:</p> <code>fdisk -l -u platte.bin</code> <p>Mit dem Argument <tt>-l</tt> bekommen wir von fdisk eine Ausgabe der Partitionstabelle und <tt>-u</tt> sorgt dafür, daß Anfang und Ende jeder Partition in Sektoren statt Zylindern angegeben wird. Man bekommt dann eine solche oder mindestens eine sehr ähnliche Ausgabe:</p> <code>Platte platte.bin: 0 MByte, 0 Byte 16 Köpfe, 63 Sektoren/Spuren, 0 Zylinder, zusammen 0 Sektoren Einheiten = Sektoren von 1 × 512 = 512 Bytes Gerät boot. Anfang Ende Blöcke Id System platte.bin1 63 498959 249448+ c W95 FAT32 (LBA) platte.bin2 499968 1052351 276192 83 Linux</code> <p>Die Größen-Angaben von null Byte bei einem Image sollten uns nicht stören, wichtig ist die Angabe der Sektorengröße, hier 512 Byte. Die erste Partition, hier die FAT32-Partition, beginnt mit Sektor 63. Da jeder Sektor 512 Byte groß ist, rechnen wir nun den Speicherbereich aus, den wir am Anfang des Images überspringen müssen, um bei Sektor 63 anzukommen: 63 * 512 = 32256 Byte.</p> <p>Diese 32256 Byte nehmen wir jetzt als Offset für ein loop-Device. Dieses wird mit losetup eingerichtet:</p> <code>losetup -o 32256 /dev/loop0 platte.bin</code> <p>Danach kann dann dieses loop-Device gemountet werden:</p> <code>mount -t vfat -o ro /dev/loop0 /mnt</code> <p>Nachdem das Image wieder umountet wurde oder falls doch Fehler bei der Offset-Berechnung aufgetreten sind, sollte man das loop-Device wieder freigeben:</p> <code>losetup -d /dev/loop0</code> </answer> </question> Ich würde beim losetup noch --read-only empfehlen, und auch mount -o ro verwenden, ansonsten sollte alles passen. Falls jemand Lust hat - dieser und einige andere Texte aus der uralten FAQ sind immer noch aktuell und wären eine schöne Ergänzung fürs Wiki. Bei Interesse stelle ich das XML mit allen Fragen und Antworten gern zur Verfügung. Gruß Christian Boltz [1] Damals unter suse-linux-faq.koehntopp.de, inzwischen aber nicht mehr online. "Uralt" heißt übrigens, dass die letzte Änderung 2007 war. -- <tyhicks> bah, shouldn't have said that "I was done" [from #apparmor] -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um den Listen Administrator zu erreichen, schicken Sie eine Mail an: opensuse-de+owner@opensuse.org

Hallo Christian, hallo zusammen, Am Mittwoch, 26. Juli 2017, 18:54:49 CEST schrieb Christian:
Ein Sektor ist also laut fdisk 4096 bytes = 4 KB groß.
Mal rechnen: sdc1 hat 2099200 Sektoren a 4 KB = 8396800 KB = 8200 MiB = 8 GiB. Das passt zu den 8 GiB, die fdisk berichtet. sdc2 wird mit 3,5 TB berichtet, was rechnerisch auch stimmt, aber nicht zur Plattengröße von (laut fdisk) 465,8 GiB passt. sdc3 und scd4 habe ich jetzt nicht nachgerechnet, erwarte aber auch da ein "rechnerisch richtig".
Dieser Unterschied von 512 vs. 4096 Bytes per Sector HOST vs. DISK dürfte das Problem erklären ;-) Laut man fdisk sollte Dir die Option --sector-size helfen, um fdisk in die richtige Bahn zu lenken. Aber: es geht Dir ja vermutlich eher darum, die Daten von der Platte zu retten als sie neu zu partitionieren. Daher: mache ein Image der Platte und lese dann aus diesem Image die Partitionen / Daten aus. Ich hatte das schon mit meinem Halbwissen zusammengeschrieben, aber doch wieder gelöscht und mit meinem Archiv der uralten FAQ [1] ersetzt - die kann das trotz dicker Staubschicht besser ;-) (Sorry, ich habe leider nur noch die XML-Version griffbereit.) <question shortref="filesystems-mount_image" title="Wie kann ich Partitionen aus dd-Images mounten?" status="public"> <keyword>dd</keyword> <keyword>image</keyword> <keyword>mount</keyword> <keyword>loop</keyword> <keyword>fdisk</keyword> <answer author="Jens Nixdorf" editor="cboltz"> <p>Hat man eine einzelne Festplatten-Partition mit dd in ein Imagefile kopiert (z. B. mit dem Befehl <tt>dd if=/dev/hda2 of=<Image-Dateiname></tt>), kann man dieses Image relativ einfach über ein loop-Device mounten:</p> <code>mount -t <filesystem> -o loop,ro <Image-Dateiname> <Zielverzeichnis></code> <p>Ist jedoch von einer kompletten Festplatte mit mehreren Partitionen eine solche Kopie erstellt worden (z. B. <tt>dd if=/dev/hda of=<Image-Dateiname></tt>) und man möchte einzelne Partitionen aus diesem Image mounten, dann muss man genau wissen, wo diese Partitionen beginnen.</p> <p>Angenommen, die kopierte Festplatte ist ein Hitachi-Microdrive mit 512 MB, hat zwei primäre Partitionen und einen MasterBootRecord (MBR) und wurde in das Image <tt>platte.bin</tt> kopiert. Wir wollen die beiden Partitionen einzeln mounten, also müssen wir zuerst die Lage der Partition feststellen. Das geht mit fdisk:</p> <code>fdisk -l -u platte.bin</code> <p>Mit dem Argument <tt>-l</tt> bekommen wir von fdisk eine Ausgabe der Partitionstabelle und <tt>-u</tt> sorgt dafür, daß Anfang und Ende jeder Partition in Sektoren statt Zylindern angegeben wird. Man bekommt dann eine solche oder mindestens eine sehr ähnliche Ausgabe:</p> <code>Platte platte.bin: 0 MByte, 0 Byte 16 Köpfe, 63 Sektoren/Spuren, 0 Zylinder, zusammen 0 Sektoren Einheiten = Sektoren von 1 × 512 = 512 Bytes Gerät boot. Anfang Ende Blöcke Id System platte.bin1 63 498959 249448+ c W95 FAT32 (LBA) platte.bin2 499968 1052351 276192 83 Linux</code> <p>Die Größen-Angaben von null Byte bei einem Image sollten uns nicht stören, wichtig ist die Angabe der Sektorengröße, hier 512 Byte. Die erste Partition, hier die FAT32-Partition, beginnt mit Sektor 63. Da jeder Sektor 512 Byte groß ist, rechnen wir nun den Speicherbereich aus, den wir am Anfang des Images überspringen müssen, um bei Sektor 63 anzukommen: 63 * 512 = 32256 Byte.</p> <p>Diese 32256 Byte nehmen wir jetzt als Offset für ein loop-Device. Dieses wird mit losetup eingerichtet:</p> <code>losetup -o 32256 /dev/loop0 platte.bin</code> <p>Danach kann dann dieses loop-Device gemountet werden:</p> <code>mount -t vfat -o ro /dev/loop0 /mnt</code> <p>Nachdem das Image wieder umountet wurde oder falls doch Fehler bei der Offset-Berechnung aufgetreten sind, sollte man das loop-Device wieder freigeben:</p> <code>losetup -d /dev/loop0</code> </answer> </question> Ich würde beim losetup noch --read-only empfehlen, und auch mount -o ro verwenden, ansonsten sollte alles passen. Falls jemand Lust hat - dieser und einige andere Texte aus der uralten FAQ sind immer noch aktuell und wären eine schöne Ergänzung fürs Wiki. Bei Interesse stelle ich das XML mit allen Fragen und Antworten gern zur Verfügung. Gruß Christian Boltz [1] Damals unter suse-linux-faq.koehntopp.de, inzwischen aber nicht mehr online. "Uralt" heißt übrigens, dass die letzte Änderung 2007 war. -- <tyhicks> bah, shouldn't have said that "I was done" [from #apparmor] -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um den Listen Administrator zu erreichen, schicken Sie eine Mail an: opensuse-de+owner@opensuse.org
participants (2)
-
Christian
-
Christian Boltz