Монтирование старого файла образа дискеты (формат .ima) - насколько это сложно?

10

Я пытаюсь получить mountдоступ к файлу образа дискеты в формате .ima (raw dump to floppy, аналогично .img ) в ArchLinux.

Этот файл является частью набора из 30. Он не загрузочный, а скорее продолжение набора. Цель не манипулирование ради установки или клонирования. Я заинтересован в документации, содержащейся с другими данными на диске.

Информация о файле изображения

Вот некоторая информация об этом файле изображения:

# 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:

Сбой

Вот общее сообщение об ошибке:

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

Я пробовал много комбинаций, пытаясь указать тип с -t, то есть ntfs, msdos, iso9660, vfat, и всегда получал ту же ошибку. Я думал, что это может быть какой-то формат файла NTFS, но NTFS-3G не намного лучше, так что нет, это не так:

# 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)

Кто-то предложил, может быть, Minix фс. Пока не ясно, смогу ли я действительно смонтировать такую ​​файловую систему с моей текущей конфигурацией, я попробовал:

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.

Кажется, это не является окончательным, так как при указании определенного типа файловой системы вы будете иметь определенный тип ошибки в журнале. Также попробовал [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..

Где я могу увидеть такие вещи с dmesg:

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

Кроме того, lsmod | grep loopдает

loop 18511 0

Там нет альтернативного Суперблока любого вида:

# 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

Вопреки многим случаям, о которых я читал, здесь нет необходимости указывать здесь какое-либо смещение, поскольку в образе нет встроенных разделов. В таких случаях иногда ddкоманда используется для переноса контента в похожее изображение с использованием значения смещения, которое позволяет монтировать. Это похоже на указание смещения для mountкоманды напрямую. Но это должно быть легко, как и в этом другом случае , когда простой losetupиспользуется , а затем устройство контура установлен. Я могу связать файл .ima с помощью losttup, но когда я пытаюсь смонтировать устройство зацикливания, я получаю исходное сообщение об ошибке.

Целостность данных

Наконец, safecopy --stage1не сообщает о каких-либо проблемах с данными, и выходные данные до этапа 3 остаются прежними и выдают ту же ошибку:

# 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)

Вот вершина файла, и содержимое, кажется, не повреждено:

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 |................|

«Криминалистика»

Поскольку необработанный образ состоит из бинарной копии секторов исходного носителя, фактический формат содержимого файла будет зависеть от файловой системы диска, с которого был создан образ (например, версия FAT). [...] Поскольку файлы IMG не содержат никаких дополнительных данных, кроме содержимого диска, эти файлы могут обрабатываться только программами, которые могут обнаруживать их файловые системы.

Следуя предложениям, я приступил к анализу некоторых других файлов изображений в наборе (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

Извините, но это выглядит как таблица разделов, но это необычно. Включает свойство 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)

Итак, пытаясь смонтировать образ, я получаю:

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

Как кто - то намекнул, что вам нужно иметь что - то конкретное , например , « System V и когерентной файловой системы поддержки » , составленной в ядре , чтобы использовать что - то вроде mount -t sysv. Строка sysv не столь удивительна, поскольку она является частью установочного носителя AT & T UNIX System V / 386 Release 4 версии 2.1 - порта, который поддерживался Sun до 2006 года - и эти образы оказались в дикой природе в 2007 году. Фактически текст Файл в комплекте с изображениями указывает, что они необходимы для установки из-за характера загрузочного сектора и используемого формата. Существует признак того, что материал был первоначально в TELEDISK (TD0) формате, Здесь я хочу подчеркнуть, что это не оригинальный материал. В любом случае я не могу на самом деле рассчитать смещения, как объяснено в вопросе - либо я не получаю целые числа при делении на 512, и даже если я пытаюсь, кажется, я не могу найти правильное смещение - dd: cannot skip to specified offset, 0 writesи т.д. на данный момент ответ о криминалистике, а не о файле изображения.

Быстрая эмуляция исторического источника изображения ОС с помощью qemu

AT & T UNIX System V, выпуск 4, версия 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

Как и было предложено, я установил с предыдущего изображения в комплекте. Он включает в себя использование qemu описанного здесь, как правило, начиная с образа 14 (сначала losetup /dev/loop0 U14.IMAпростого qemu-system-x86_64 -m 256 -hda test.img -fda /dev/loop0 -boot a, а затем ), поскольку U19 не является загрузочным. Здесь хорошо то, что вам не нужно монтировать / размонтировать образы в самой ОС, вы просто используете ctrl-alt-2или 1 с qemu для доступа к монитору или выхода из него, и вы используете, list blocksчтобы увидеть, что смонтировано, и change floppy0 imagenameв этом интерфейсе, чтобы изменить образ. например, во время установки.

Я должен был предоставить U19.IMA (диск 5) во время установки (для текстового журнала установки, посмотрите это - основной момент - ссылка на MS-DOS!), И я закончил с этим, то есть правильно установленным AT & T UNIX Sys V 386 OS, так что это в значительной степени подтверждает U19.IMA - это образ рабочего диска:

введите описание изображения здесь

По умолчанию / dev / fd монтируется в / dev / fd, а также имеется гибкий доступ через блочное (/ dev / dsk / f0) и необработанное (/ dev / dsk / f0) устройство. При смене каталога на дискету просто отображаются файлы с номерами от 1 до 23 (я думаю, это просто структура символьного устройства). Вы также можете catиспользовать необработанные и блокированные устройства и видеть, что данные на гибких дисках есть, но это настолько близко, насколько это возможно.

Я заметил, что в этой ОС вы не устанавливаете вещи с дискет, запуская некоторый скрипт из каталога на них, как, например, вы делаете это с распакованными двоичными файлами - здесь вы используете pkgadd -d diskette1(конечно, последнее слово - это псевдоним, но я нашел ссылку на ключ -d в SCO для pkgadd (1M)и обычно это часто встречается в коммерческом Unix (Oracle, HP share pkgadd (1M)). Выполнение команды запускает процедуру, когда вы поставляете дискеты, и у вас нет контроля, кроме как сказать «нет» после того, как процедура узнает, что находится на диске. В случае дисков, которые начинают последовательность установки (U03, U05 и т. Д.), Будет произведена установка, а затем запрос на следующую дискету и т. Д. До завершения установки пакета. Если вы вставляете дискету, которая не является началом набора, она практически ничего не находит, но говорит вам, что, возможно, вам придется использовать installpkgкоманду вместо этого.

Буду ли я устанавливать физическую флоппи-дисковод на мое устройство, чтобы получить доступ к данным в этом файле образа?


источник
Просто предположение: это может быть файловая система Minix. Вы, вероятно, должны перекомпилировать ваше ядро, чтобы поддержать его. Установка физического дисковода гибких дисков не помогает. Насколько большой файл изображения? Если ваш файл является просто необработанным изображением, он определенно не содержит ни одной (текущей / современной) файловой системы, которую вы пробовали. Кажется, что он не загружается на системах i386.
Джофель
@jofel Файл размером 1475 КБ. Если я пытаюсь смонтировать его таким образом, mount -t minix -o loop U19.IMA /mnt/cdи я получаю общую ошибку, но она появляется в dmesg. VFS: Can't find a Minix filesystem V1 | V2 | V3 on device loop0.Это указывает на то, что ядро ​​уже имеет это, или я не могу на это полагаться? В любом случае, я расследую то, что ты сказал. Я знаю, что это не загрузочный, но я хочу получить доступ к содержимому, хотя. Спасибо.
Вывод fileпредполагает, что на изображении нет файловой системы. Вы уверены, что ваши данные на самом деле там? Похоже, вы пытаетесь смонтировать образ сырого диска без разделов и файловой системы.
Terdon
@terdon Это именно то, что я действительно хочу сделать. Это логика не удалась? Это установочный комплект. Я надеялся найти «файлы», включая документацию. Могу ли я не получить доступ к этому вне установки целиком?
2
Если это установочный диск, возможно, только первый диск содержит файловую систему / является загрузочным. Другие диски могут содержать только данные в произвольном формате без каких-либо издержек файловой системы.
Джофель

Ответы:

4

Если вы не можете смонтировать образ, в некоторых случаях вы все равно сможете «вытеснить» некоторые его данные cpio.

Как только вы выяснили, является ли изображение:

  • Образ с использованием поддерживаемой файловой системы и раздела -> mount
  • Образ с использованием поддерживаемой файловой системы и нескольких разделов -> mount with offsetили используйте ddдля извлечения раздела со смещением, затем смонтируйте только этот раздел или используйте что-то вродеkpartx
  • Образ, не использующий поддерживаемую файловую систему или вообще не имеющий файловой системы -> поддержка ядра и дальнейшее исследование ...

Вы можете использовать hexdumpи stringsутилиты , чтобы попытаться проанализировать заголовок и для извлечения текста из изображения и получить более подробную информацию о файле изображения и его структуре.


Что-то заинтересовало меня в этом:

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

Такая строка есть для каждого двоичного файла на изображении, так что вы немного знаете, что там. Кроме того, в этом случае, когда вы более внимательно посмотрите на процесс установки на исходной платформе installpkg, вы обнаружите, что:

Основным механизмом переноса программного обеспечения с дискеты на жесткий диск UNIX System V / 386 является cpio.

По сути, данные извлекаются с помощью cpio/ usr / tmp / install, и в него входит ряд файлов (файл установки, ascii, файл, имя и размер). Так получилось, что эта команда:

cat U19.IMA | cpio -imdv

сначала выдает ошибки с искаженным числом , но затем создает папку / usr / bin с содержимым изображения! trЯ искал там:

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

Во cpio-первых, пытаться не повредит!


источник
Просто будьте осторожны с опцией -d и cpio. Кажется, я помню, что пытался извлечь непосредственно на мой корневой диск!