Установка старого файла образа флоппи (формат .ima) – насколько это сложно?

Я пытаюсь mount и получить доступ к файлу дискеты в формате .ima (необработанный дамп на дискету, аналогичный .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 ie 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 (eg /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 fs. Хотя неясно, могу ли я смонтировать такую ​​файловую систему с моей текущей конфигурацией, я попытался:

 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 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 с losetup, но когда я пытаюсь подключить устройство loop, я получаю сообщение об ошибке.

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

Наконец, 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 ie MS Fat16 DOS 3.0+ < 65536 sectors) 

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

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

Как кто-то намекнул, вам нужно иметь что-то конкретное, например « System V и Coherent файловая система », скомпилированные в ядре , чтобы использовать что-то вроде mount -t sysv . Строка sysv не настолько удивительна, поскольку это часть AT & T UNIX System V / 386 Release 4 Version 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 ), as U19 не загружается. Здесь приятно, что вам не нужно монтировать / umount изображения в самой ОС, вы просто используете 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) и raw (/ dev / dsk / f0). При изменении каталога на дискету отображаются только файлы с номерами от 1 до 23 (это всего лишь структура устройства символов, которое я предполагаю). Вы также можете cat необработанные и блокировать устройства и видеть, что данные на дискете есть, но это как можно ближе.

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

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

Если вы не можете смонтировать образ, вы все равно сможете в некоторых случаях «вытолкнуть» некоторые из своих данных с помощью 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 в первую очередь не повредит!