Mounten einer alten Disketten-Image-Datei (.ima-Format) - wie schwer kann es sein?

10

Ich versuche unter ArchLinux mountauf eine Disketten-Image-Datei im .ima-Format (Raw Dump to Floppy, ähnlich wie .img ) zuzugreifen .

Diese Datei ist Teil eines Satzes von 30. Sie ist nicht bootfähig, sondern eine Fortsetzung eines Satzes. Der Zweck ist keine Manipulation zum Zwecke der Installation oder des Klonens. Ich interessiere mich für die Dokumentation mit anderen Daten auf der Festplatte.

Informationen zur Bilddatei

Hier einige Informationen zu dieser Bilddatei:

# file U19.IMA
U19.IMA: PC formatted floppy with no filesystem

# fdisk -lu U19.IMA
Disk U19.IMA: 1.4 MiB, 1474560 bytes, 2880 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

(parted) print
Error: /home/meh/Downloads/U19.IMA: unrecognised disk label
Model: (file)
Disk /home/meh/Downloads/U19.IMA: 1475kB
Sector size (logical/physical): 512B/512B
Partition Table: unknown
Disk Flags:

Montage fehlgeschlagen

Hier ist die allgemeine Fehlermeldung:

mount -o ro,loop U19.IMA /mnt/cd/
mount: wrong fs type, bad option, bad superblock on /dev/loop0,
missing codepage or helper program, or other error

Ich habe viele Kombinationen ausprobiert, um einen Typ mit -t anzugeben, dh ntfs, msdos, iso9660, vfat, und immer den gleichen Fehler zu erhalten. Ich dachte, es ist vielleicht eine Art ntfs-Dateiformat, aber ntfs-3G macht es nicht viel besser, also nein, es ist nicht:

# ntfs-3g -o loop U19.IMA /mnt
NTFS signature is missing.
Failed to mount '/home/meh/Downloads/U19.IMA': Invalid argument
The device '/home/meh/Downloads/U19.IMA' doesn't seem to have a valid NTFS.
Maybe the wrong device is used? Or the whole disk instead of a
partition (e.g. /dev/sda, not /dev/sda1)? Or the other way around?

# ntfsclone -r -o file.img U19.IMA
ntfsclone v2013.1.13 (libntfs-3g)
ERROR: Input file is not an image! (invalid magic)

Jemand schlug vielleicht einen Minix fs vor. Obwohl nicht klar ist, ob ich ein solches Dateisystem mit meiner aktuellen Konfiguration wirklich mounten kann, habe ich versucht:

mount -t minix -o loop U19.IMA /mnt/cd
which gave the generic error but there was this at the bottom of the log:
VFS: Can't find a Minix filesystem V1 | V2 | V3 on device loop0.

Dies scheint nicht schlüssig zu sein, da bei der Angabe eines bestimmten Dateisystemtyps ein bestimmter Fehlertyp im Protokoll angezeigt wird. Auch versucht [fuseiso][2]:

# fuseiso U19.IMA /mnt/cd
init: wrong standard identifier in volume descriptor 0, skipping..
init: wrong standard identifier in volume descriptor 1, skipping..
init: wrong standard identifier in volume descriptor 2, skipping..
init: wrong standard identifier in volume descriptor 3, skipping..
init: wrong standard identifier in volume descriptor 4, skipping..
init: wrong standard identifier in volume descriptor 5, skipping..
init: wrong standard identifier in volume descriptor 6, skipping..
init: wrong standard identifier in volume descriptor 7, skipping..
init: wrong standard identifier in volume descriptor 8, skipping..
init: wrong standard identifier in volume descriptor 9, skipping..
init: wrong standard identifier in volume descriptor 10, skipping..
init: wrong standard identifier in volume descriptor 11, skipping..
init: wrong standard identifier in volume descriptor 12, skipping..
init: wrong standard identifier in volume descriptor 13, skipping..
init: wrong standard identifier in volume descriptor 14, skipping..
init: wrong standard identifier in volume descriptor 15, skipping..
init: wrong standard identifier in volume descriptor 16, skipping..
init: wrong standard identifier in volume descriptor 17, exiting..

Wo ich solche Dinge sehen kann mit dmesg:

[ 5316.082629] FAT-fs (loop0): invalid media value (0xf6)
[ 5316.082644] FAT-fs (loop0): Can't find a valid FAT filesystem

Auch lsmod | grep loopgibt

loop 18511 0

Es gibt keinen alternativen Superblock :

# mkfs -n U19.IMA
mke2fs 1.42.8 (20-Jun-2013)
U19.IMA is not a block special device.
Proceed anyway? (y,n) y
Filesystem label=
OS type: Linux
Block size=1024 (log=0)
Fragment size=1024 (log=0)
Stride=0 blocks, Stripe width=0 blocks
184 inodes, 1440 blocks
72 blocks (5.00%) reserved for the super user
First data block=1
Maximum filesystem blocks=1572864
1 block group
8192 blocks per group, 8192 fragments per group
184 inodes per group

Im Gegensatz zu vielen Fällen, über die ich gelesen habe, scheint es hier nicht erforderlich zu sein, einen Versatz anzugeben, da im Bild keine Partition erstellt ist. In solchen Fällen wird manchmal der ddBefehl verwendet, um den Inhalt unter Verwendung eines Versatzwerts, der das Mounten ermöglicht, auf ein ähnliches Bild zu übertragen. Dies scheint dasselbe zu sein, als würde ein mountBefehl direkt für den Befehl angegeben. Dies sollte jedoch einfach sein, wie in diesem anderen Fall, in dem ein einfaches losetupverwendet wird und dann das Schleifengerät montiert wird. Ich kann die .ima-Datei mit losetup verknüpfen, aber wenn ich versuche, das Loop-Gerät zu mounten, erhalte ich meine erste Fehlermeldung.

Datenintegrität

Schließlich werden safecopy --stage1keine Probleme mit den Daten gemeldet, und die Ausgabe bis Stufe 3 bleibt gleich und führt zum gleichen Fehler:

# safecopy U19.IMA test.img --stage1
Low level device calls enabled mode: 2
Reported hw blocksize: 4096
Reported low level blocksize: 4096
File size: 1474560
Blocksize: 4096
Fault skip blocksize: 147456
Resolution: 147456
Min read attempts: 1
Head moves on read error: 0
Badblocks output: stage1.badblocks
Marker string: BaDbLoCk
Starting block: 0
Source: U19.IMA
Destination: test.img
. ;-} 100%
Done!
Recovered bad blocks: 0
Unrecoverable bad blocks (bytes): 0 (0)
Blocks (bytes) copied: 360 (1474560)

Hier ist der Anfang der Datei und der Inhalt scheint intakt zu sein:

dd if=U19.IMA | hexdump -C | head -n 10
00000000 f6 f6 f6 f6 f6 f6 f6 f6 f6 f6 f6 f6 f6 f6 f6 f6 |................|
*
00004600 34 2e 30 2e 32 20 33 38 36 75 6e 69 78 20 46 6e |4.0.2 386unix Fn|
00004610 64 20 53 65 74 20 35 20 6f 66 20 31 30 0a 00 00 |d Set 5 of 10...|
00004620 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|

"Forensik"

Da ein Rohbild aus einer sektorweisen binären Kopie des Quellmediums besteht, hängt das tatsächliche Format des Dateiinhalts vom Dateisystem der Festplatte ab, von der das Bild erstellt wurde (z. B. eine Version von FAT). [...] Da IMG-Dateien keine zusätzlichen Daten über den Festplatteninhalt hinaus enthalten, können diese Dateien nur von Programmen verarbeitet werden, die ihre Dateisysteme erkennen können.

Nach den Vorschlägen analysierte ich einige der anderen Bilddateien im Set (30):

fdisk -lu U14.IMA
Disk U14.IMA: 1.4 MiB, 1474560 bytes, 2880 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x00000000
This doesn't look like a partition table. Probably you selected the wrong device.

Device Boot Start End Blocks Id System
U14.IMA1   3840       11519      3840       0  Empty
U14.IMA2   2425393152 4850786447 1212696648 0  Empty
U14.IMA3 ? 2425393296 4850786591 1212696648 90 Unknown
U14.IMA4 ? 2425393296 4850786591 1212696648 90 Unknown

Entschuldigung, aber es sieht aus wie eine Partitionstabelle, ist aber ungewöhnlich. Es enthält die Eigenschaft id 90 :

90h     MBR, EBR    CHS, LBA    x86, 68000, 8080/Z80    Hidden, Filesystem  FreeDOS     Free FDISK  Hidden FAT16 (corresponds with 04h i.e. MS Fat16 DOS 3.0+ < 65536 sectors)

Ich versuche also, das Bild zu mounten, das ich bekomme:

# mount -t auto U14.IMA /mnt/cd
mount: unknown filesystem type 'sysv'  <-----

Wie jemand angedeutet hat, muss im Kernel etwas Bestimmtes wie " System V- und kohärente Dateisystemunterstützung " kompiliert sein, um so etwas verwenden zu können mount -t sysv. Die sysv-Zeichenfolge ist nicht so überraschend, da dies Teil des Installationsmediums von AT & T UNIX System V / 386 Release 4 Version 2.1 ist - ein Port, der von Sun bis 2006 unterstützt wurde - und diese Bilder 2007 in der Wildnis landeten. Eigentlich ein Text Eine mit den Images gebündelte Datei zeigt an, dass sie aufgrund der Art des Bootsektors und des verwendeten Formats für die Installation erforderlich sind. Es gibt einen Hinweis darauf, dass das Material ursprünglich im Teledisk (TD0) -Format war. Ich möchte hier betonen, dass dies kein Originalmaterial ist. Auf jeden Fall kann ich die Offsets nicht wie in der Frage erläutert berechnen - entweder habe ich beim Teilen durch 512 keine ganzen Zahlen, und selbst wenn ich es versuche, kann ich anscheinend nicht den richtigen Offset finden - dd: cannot skip to specified offset, 0 writesusw. Also An dieser Stelle geht es bei der Antwort um Forensik und nicht mehr um eine Bilddatei.

Schnelle Emulation des Betriebssystems für historische Bildquellen mit qemu

AT & T UNIX System V Version 4 Version 2.1

                          LABEL             Version         X of X
  AT&T UNIX SVR4.0 2.1 --------------------------------------------------

  U01.IMA                 Maintanace Disk1  2.1             2 of 2
  U02.IMA                 Remote Terminal   2.1             1 of 1
                          Package
  U03.IMA                 BSD Comp. Pkg.    2.1             1 of 2
  U04.IMA                 BSD Comp. Pkg.    2.1             2 of 2
  U05.IMA                 Networking Supp.  2.1             1 of 1
                          Util. Pkg.
  U06.IMA                 Xenix Comp. Pkg   2.1             1 of 1
  U07.IMA                 FACE Pkg.         2.1             1 of 1
  U08.IMA                 FMLI Pkg.         2.1             1 of 1
  U09.IMA                 Editing Utils.    2.1             1 of 1
  U10.IMA                 OA&M Basic & Ext. 2.1             1 of 3
  U11.IMA                 OA&M Basic & Ext. 2.1             2 of 3
  U12.IMA                 OA&M Basic & Ext. 2.1             3 of 3
  U13.IMA                 Foundation Set    2.1             1 of 10
                          Base System Pkg.
                          2 User System
  U14.IMA                 Base              2.1a            1 of 10
  U15.IMA                 Base              2.1             2 of 10
  U16.IMA                 Base              2.1a            2 of 10
  U17.IMA                 Base              2.1             3 of 10
  U18.IMA                 Base              2.1             4 of 10
  U19.IMA                 Base              2.1             5 of 10
  U20.IMA                 Base              2.1             6 of 10
  U21.IMA                 Base              2.1             7 of 10
  U22.IMA                 Base              2.1             8 of 10
  U23.IMA                 Base              2.1             10 of 10
  U24.IMA                 Maintanance 1     2.1             1 of 2
  U25.IMA                 Base              2.1             9 of 10
  U26.IMA                 Printer Pkg       2.1             3 of 3
  U27.IMA                 Printer Pkg       2.1             2 of 3
  U28.IMA                 Printer Pkg       2.1             1 of 3
  U29.IMA                 16 to unlimited   2.1             1 of 1
                          User License
  U30.IMA                 2 to 16 User      2.1             1 of 1
                          License

Wie vorgeschlagen, habe ich von einem vorherigen Image im Set installiert. Es beinhaltet die Verwendung qemu wie hier erklärt, beginnend mit Image 14 (zuerst losetup /dev/loop0 U14.IMAdann ein einfaches qemu-system-x86_64 -m 256 -hda test.img -fda /dev/loop0 -boot a), da U19 nicht bootfähig ist. Was hier schön ist, ist, dass Sie keine Images im Betriebssystem selbst mounten / umounten müssen. Sie verwenden einfach ctrl-alt-2oder 1 mit qemu, um auf den Monitor zuzugreifen oder ihn zu verlassen, und Sie verwenden, um list blockszu sehen, was gemountet ist, und change floppy0 imagenamein dieser Schnittstelle, um das Image zu ändern Datei dh während der Installation zum Beispiel.

Ich musste während der Installation U19.IMA (Datenträger 5) bereitstellen (ein Textprotokoll der Installation finden Sie hier - ein Highlight ist der Verweis auf MS-DOS!), Und am Ende hatte ich ein ordnungsgemäß installiertes AT & T UNIX-System V 386 OS, dies bestätigt also ziemlich genau, dass U19.IMA ein funktionierendes Disk-Image ist:

Geben Sie hier die Bildbeschreibung ein

Standardmäßig ist / dev / fd auf / dev / fd gemountet und es gibt auch Diskettenzugriff über ein Block- (/ dev / dsk / f0) und ein Raw-Gerät (/ dev / dsk / f0). Wenn Sie das Verzeichnis auf die Diskette wechseln, werden nur Dateien mit den Nummern 1 bis 23 angezeigt (dies ist vermutlich nur die Struktur des Zeichengeräts). Sie können auch catdie Raw- und Block-Geräte anzeigen und sehen, dass die Diskettendaten vorhanden sind, aber das ist so nah wie möglich.

Ich habe festgestellt, dass Sie in diesem Betriebssystem keine Inhalte von Disketten installieren, indem Sie ein Skript aus einem Verzeichnis darauf starten, wie Sie es beispielsweise mit dekomprimierten Binärdateien tun - hier verwenden Sie pkgadd -d diskette1(sicherlich ist das letzte Wort ein Alias, aber ich fand einen Verweis auf den Schalter -d im SCO-Zeug für pkgadd (1M)und im Allgemeinen erscheint es häufig in kommerziellem Unix (Oracle, HP Share pkgadd (1M)). Durch die Ausgabe des Befehls wird eine Routine gestartet, in der Sie Disketten bereitstellen und keine Kontrolle haben, außer "Nein" zu sagen, nachdem die Routine herausgefunden hat, was sich im Laufwerk befindet. Bei Festplatten, die eine Installationssequenz beginnen (U03, U05 usw.), wird diese installiert und Sie werden nach der nächsten Diskette usw. gefragt, bis die Paketinstallation abgeschlossen ist. Wenn Sie eine Diskette einlegen, die nicht der Anfang eines Satzes ist, findet sie im Grunde nichts, sagt Ihnen aber, dass Sie möglicherweise installpkgstattdessen den Befehl verwenden müssen.

Installiere ich ein physisches Diskettenlaufwerk auf meinem Rig, um auf die Daten in dieser Image-Datei zuzugreifen?


quelle
Nur eine Vermutung: Es könnte sich um ein Minix-Dateisystem handeln. Sie müssen Ihren Kernel wahrscheinlich neu kompilieren, um ihn zu unterstützen. Die Installation eines physischen Diskettenlaufwerks hilft nicht. Wie groß ist die Bilddatei? Wenn Ihre Datei nur ein Rohbild ist, enthält sie definitiv keines der (aktuellen / modernen) Dateisysteme, die Sie ausprobiert haben. Es scheint, dass es auf i386-Systemen nicht bootfähig ist.
Jofel
@jofel Die Datei ist 1475k groß. Wenn ich versuche, es so zu mounten, mount -t minix -o loop U19.IMA /mnt/cderhalte ich den generischen Fehler, aber dieser landet in dmesg. VFS: Can't find a Minix filesystem V1 | V2 | V3 on device loop0.Ist das ein Hinweis darauf, dass der Kernel ihn bereits hat, oder kann ich mich nicht darauf verlassen? Wie auch immer, ich werde untersuchen, was Sie gesagt haben. Ich weiß, dass es nicht bootfähig ist, aber ich möchte auf den Inhalt zugreifen. Vielen Dank.
Die Ausgabe von filelegt nahe, dass das Image kein Dateisystem enthält. Sind Sie sicher, dass Ihre Daten tatsächlich vorhanden sind? Es hört sich so an, als würden Sie versuchen, ein Image eines unformatierten Laufwerks ohne Partitionen und ohne Dateisystem bereitzustellen.
Terdon
@terdon Genau das möchte ich in der Tat tun. Ist das ein logischer Fehler? Dies ist ein Installationssatz. Ich hoffte, "Dateien" einschließlich Dokumentation zu finden. Kann ich außerhalb der Installation des Ganzen nicht darauf zugreifen?
2
Wenn es sich um eine Installationsdiskette handelt, enthält möglicherweise nur die erste Diskette ein Dateisystem / ist bootfähig. Die anderen Festplatten können nur Daten in einem benutzerdefinierten Format ohne Dateisystem-Overhead enthalten.
Jofel

Antworten:

4

Wenn Sie das Image nicht mounten können, können Sie in einigen Fällen möglicherweise noch einige seiner Daten mit "streamen" cpio.

Sobald Sie festgestellt haben, ob das Bild ist:

  • Ein Image mit einem unterstützten Dateisystem und einer Partition -> mount
  • Ein Image, das ein unterstütztes Dateisystem und mehr als eine Partition verwendet -> mount with offsetoder ddzum Extrahieren einer Partition mit Offset verwendet wird, mounten Sie dann nur diese Partition oder verwenden Sie so etwaskpartx
  • Ein Image, das kein unterstütztes Dateisystem verwendet oder überhaupt kein Dateisystem hat -> Kernelunterstützung und weitere Untersuchung ...

Sie können die Verwendung hexdumpund stringsDienstprogramme zu versuchen , den Header zu analysieren und Textzeichenfolgen aus dem Bild zu extrahieren und weitere Informationen über die Image - Datei und seine Struktur zu gewinnen.


Etwas hat mein Interesse daran geweckt:

@(#)/usr/bin/echo.sl 1.1 4.0 10/01/90 16865 AT&T-SF

Es gibt eine solche Zeile für jede einzelne Binärdatei im Bild, sodass Sie etwas wissen, was darin enthalten ist. Wenn Sie sich in diesem Fall genauer ansehen, wie der Installationsprozess auf der ursprünglichen Plattform mit abläuft installpkg, stellen Sie Folgendes fest:

Der grundlegende Mechanismus zum Übertragen von Software von einer Diskette auf die UNIX System V / 386-Festplatte ist cpio.

Grundsätzlich werden die Daten mit cpio/ usr / tmp / install extrahiert und eine Reihe von Dateien sind darin enthalten (eine Installations-, ASCII-, Datei-, Namens- und Größendatei). Es kommt hier so vor, dass dieser Befehl:

cat U19.IMA | cpio -imdv

gibt zunächst fehlerhafte Zahlenfehler aus , erstellt dann aber einen Ordner / usr / bin mit dem Inhalt des Bildes! Das, trwonach ich gesucht habe, ist da:

#file tr
tr: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), stripped.

Es cpiokann nicht schaden, es überhaupt zu versuchen !


quelle
Seien Sie vorsichtig mit der Option -d und cpio. Ich erinnere mich an diesen Versuch, direkt auf mein Root-Laufwerk zu extrahieren!