Gắn một tệp hình ảnh đĩa mềm cũ (định dạng .ima) - nó có thể khó đến mức nào?


10

Tôi đang cố gắng mountvà truy cập tệp hình ảnh đĩa mềm ở định dạng .ima (kết xuất thô thành đĩa mềm, tương tự như .img ) trên ArchLinux.

Tập tin này là một phần của bộ 30. Nó không có khả năng khởi động, mà là sự tiếp nối của một bộ. Mục đích không phải là thao túng vì mục đích cài đặt hay nhân bản. Tôi quan tâm đến tài liệu chứa dữ liệu khác trên đĩa.

Thông tin tập tin hình ảnh

Dưới đây là một số thông tin về tập tin hình ảnh này:

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

Núi thất bại

Đây là thông báo lỗi chung:

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ôi đã thử nhiều kết hợp khi cố gắng chỉ định một loại với -t tức là ntfs, msdos, iso9660, vfat và luôn gặp lỗi tương tự. Tôi nghĩ rằng nó có thể là một số loại định dạng tệp ntfs nhưng ntfs-3G không làm tốt hơn nhiều nên không phải vậy:

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

Ai đó đề nghị có thể là một fix Minix. Mặc dù không rõ liệu tôi có thể thực sự gắn kết một hệ thống tập tin như vậy với cấu hình hiện tại của mình hay không, tôi đã thử:

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.

Có vẻ như điều này không có kết luận, vì khi bạn chỉ định một loại hệ thống tệp cụ thể, bạn sẽ có một loại lỗi cụ thể trong nhật ký. Cũng đã thử [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..

Nơi tôi có thể thấy những điều như vậy với dmesg:

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

Ngoài ra, lsmod | grep loopcho

loop 18511 0

Không có siêu khối thay thế dưới bất kỳ hình thức nào:

# 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

Trái với nhiều trường hợp tôi đọc, dường như không cần chỉ định bất kỳ phần bù nào ở đây vì không có phân vùng được xây dựng trong hình ảnh. Trong những trường hợp như vậy, đôi khi ddlệnh được sử dụng để chuyển nội dung sang hình ảnh tương tự bằng cách sử dụng giá trị bù cho phép gắn. Điều này có vẻ giống như chỉ định một phần bù cho mountlệnh trực tiếp. Nhưng điều này nên được dễ dàng, giống như trong này trường hợp khác, nơi một đơn giản losetupđược sử dụng và sau đó thiết bị vòng lặp được gắn kết. Tôi có thể liên kết tệp .ima với losetup nhưng khi tôi cố gắn thiết bị lặp, tôi kết thúc với thông báo lỗi ban đầu.

Toàn vẹn dữ liệu

Cuối cùng, safecopy --stage1không báo cáo bất kỳ vấn đề nào với dữ liệu và đầu ra cho đến giai đoạn 3 vẫn giữ nguyên và gây ra cùng một lỗi:

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

Đây là phần trên cùng của tệp và nội dung dường như còn nguyên vẹn:

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

"Pháp y"

Do một hình ảnh thô bao gồm một bản sao nhị phân theo từng khu vực của phương tiện nguồn, định dạng thực tế của nội dung tệp sẽ phụ thuộc vào hệ thống tệp của đĩa mà hình ảnh được tạo ra (chẳng hạn như phiên bản của FAT). [...] Vì các tệp IMG không chứa dữ liệu bổ sung ngoài nội dung đĩa, các tệp này chỉ có thể được xử lý bởi các chương trình có thể phát hiện hệ thống tệp của chúng.

Theo đề xuất, tôi đã tiến hành phân tích một số tệp hình ảnh khác trong bộ (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

Xin lỗi nhưng nó trông giống như một bảng phân vùng nhưng nó không bình thường. Nó bao gồm tài sản 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)

Vì vậy, cố gắng gắn kết hình ảnh tôi nhận được:

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

Như ai đó đã gợi ý, bạn cần phải có một cái gì đó cụ thể như ' System V và Coherent hỗ trợ hệ thống tập tin ' được biên dịch trong kernel để sử dụng cái gì đó như mount -t sysv. Chuỗi sysv không quá bất ngờ, vì đây là một phần của phương tiện cài đặt AT & T UNIX System V / 386 Phiên bản 4 Phiên bản 2.1 - một cổng được Sun hỗ trợ cho đến năm 2006 - và những hình ảnh này đã xuất hiện trong tự nhiên vào năm 2007. tập tin được đóng gói với hình ảnh cho biết rằng chúng được yêu cầu để cài đặt vì bản chất của khu vực khởi động và định dạng được sử dụng. Có một dấu hiệu cho thấy nguyên liệu ban đầu ở định dạng Teledisk (TD0). Tôi muốn nhấn mạnh ở đây rằng đây không phải là tài liệu gốc. Trong mọi trường hợp, tôi thực sự không thể tính toán các phần bù như được giải thích trong câu hỏi - hoặc tôi không kết thúc với số nguyên khi chia cho 512 và ngay cả khi tôi thử, có vẻ như tôi không thể tìm thấy phần bù thích hợp - dd: cannot skip to specified offset, 0 writesv.v. tại thời điểm này, câu trả lời là về pháp y, và không còn về một tệp hình ảnh.

Mô phỏng hệ thống nguồn hình ảnh lịch sử nhanh chóng với qemu

AT & T UNIX System V Phiên bản 4 Phiên bản 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

Như đã đề xuất, tôi đã cài đặt từ một hình ảnh trước đó trong bộ ảnh. Nó liên quan đến việc sử dụng qemu như được giải thích ở đây về cơ bản bắt đầu với hình ảnh 14 (đầu tiên losetup /dev/loop0 U14.IMAsau đó là đơn giản qemu-system-x86_64 -m 256 -hda test.img -fda /dev/loop0 -boot a), vì U19 không thể khởi động. Điều tuyệt vời ở đây là bạn không phải gắn / bỏ hình ảnh trong hệ điều hành, bạn chỉ cần sử dụng ctrl-alt-2hoặc 1 với qemu để truy cập hoặc rời khỏi màn hình và bạn sử dụng list blocksđể xem những gì được gắn và change floppy0 imagenametrong giao diện đó để thay đổi hình ảnh ví dụ như trong quá trình cài đặt.

Tôi đã phải cung cấp U19.IMA (đĩa 5) trong khi cài đặt (đối với nhật ký văn bản của bản cài đặt, hãy xem phần này - một điểm nổi bật là tham chiếu đến MS-DOS!), Và tôi đã kết thúc với điều này tức là AT & T UNIX Sys được cài đặt đúng Hệ điều hành V 386, vì vậy điều này khá nhiều xác nhận U19.IMA là hình ảnh đĩa hoạt động:

nhập mô tả hình ảnh ở đây

Theo mặc định / dev / fd được gắn trên / dev / fd và cũng có quyền truy cập đĩa mềm thông qua một khối (/ dev / dsk / f0) và thiết bị thô (/ dev / dsk / f0). Thay đổi thư mục thành đĩa mềm chỉ hiển thị các tệp được đánh số từ 1 đến 23 (đây chỉ là cấu trúc của thiết bị ký tự mà tôi đoán). Bạn cũng có thể catcác thiết bị thô và chặn và xem dữ liệu đĩa mềm ở đó nhưng gần như vậy.

Tôi đã nhận thấy rằng trong hệ điều hành đó, bạn không cài đặt nội dung từ đĩa mềm bằng cách khởi chạy một số tập lệnh từ một thư mục trên chúng giống như bạn làm với các tệp nhị phân được giải nén chẳng hạn - ở đây bạn sử dụng pkgadd -d diskette1(chắc chắn từ cuối cùng là bí danh, nhưng tôi đã tìm thấy một tham chiếu đến công tắc -d trong công cụ SCO cho pkgadd (1M)và nói chung nó xuất hiện thường xuyên trong Unix thương mại (Oracle, HP share pkgadd (1M)). Việc ban hành lệnh khởi chạy một thói quen trong đó bạn cung cấp đĩa mềm và bạn không có quyền kiểm soát, ngoại trừ nói "không" sau khi thói quen tìm ra những gì trong ổ đĩa. Trong trường hợp các đĩa bắt đầu trình tự cài đặt (U03, U05, v.v.), điều này sẽ cài đặt sau đó yêu cầu đĩa mềm tiếp theo, vv cho đến khi cài đặt gói hoàn tất. Nếu bạn đặt một đĩa mềm không phải là khởi đầu của một tập hợp, về cơ bản nó không tìm thấy gì ngoài việc cho bạn biết có lẽ bạn phải sử dụng installpkglệnh thay thế.

Tôi sẽ cài đặt ổ đĩa mềm vật lý vào giàn khoan của mình để truy cập dữ liệu trong tệp hình ảnh đó chứ?


Chỉ cần đoán: Nó có thể là một hệ thống tập tin Minix. Bạn có thể cần phải biên dịch lại kernel của bạn để hỗ trợ nó. Cài đặt ổ đĩa mềm vật lý không giúp được gì. Làm thế nào lớn là tập tin hình ảnh? Nếu tệp của bạn chỉ là một hình ảnh thô, nó chắc chắn không chứa bất kỳ hệ thống tệp (hiện tại / hiện đại) nào bạn đã thử. Có vẻ như nó không khởi động được trên các hệ thống i386.
jofel 27/12/13

@jofel Tập tin lớn 1475k. Nếu tôi cố gắn nó như vậy mount -t minix -o loop U19.IMA /mnt/cdvà tôi gặp lỗi chung nhưng điều này xảy ra trong dmesg VFS: Can't find a Minix filesystem V1 | V2 | V3 on device loop0.Có phải đó là dấu hiệu cho thấy hạt nhân đã có nó hay tôi không thể dựa vào điều đó?. Dù sao, tôi sẽ điều tra những gì bạn nói. Tôi biết rằng nó không thể khởi động, tôi muốn truy cập nội dung mặc dù. Cảm ơn.

Đầu ra của filegợi ý không có hệ thống tập tin trên hình ảnh. Bạn có chắc chắn dữ liệu của bạn thực sự ở đó? Có vẻ như bạn đang cố gắn hình ảnh của một ổ đĩa thô không có phân vùng và không có hệ thống tập tin.
terdon

@terdon Đây chính xác là những gì tôi muốn làm thực sự. Đó có phải là một logic thất bại? Đây là một bộ cài đặt. Tôi hy vọng tìm thấy "tập tin", bao gồm cả tài liệu. Tôi không thể truy cập bên ngoài cài đặt toàn bộ?

2
Nếu là đĩa cài đặt, có thể chỉ có đĩa đầu tiên chứa hệ thống tập tin / có khả năng khởi động. Các đĩa khác chỉ có thể chứa dữ liệu ở định dạng tùy chỉnh mà không có bất kỳ chi phí hệ thống tập tin nào.
jofel 27/12/13

Câu trả lời:


4

Nếu bạn không thể gắn hình ảnh, trong một số trường hợp bạn vẫn có thể "truyền phát" một số dữ liệu của nó cpio.

Khi bạn đã xác định liệu hình ảnh có phải là:

  • Hình ảnh sử dụng hệ thống tệp được hỗ trợ và phân vùng -> mount
  • Một hình ảnh sử dụng một hệ thống tập tin được hỗ trợ và nhiều hơn một phân vùng -> mount with offsethoặc sử dụng ddđể trích xuất một phân vùng có offset sau đó chỉ gắn kết phân vùng đó hoặc sử dụng một cái gì đó nhưkpartx
  • Một hình ảnh không sử dụng hệ thống tệp được hỗ trợ hoặc hoàn toàn không có hệ thống tệp -> hỗ trợ kernel và điều tra thêm ...

Bạn có thể sử dụng hexdumpstringscác tiện ích để cố gắng phân tích tiêu đề và trích xuất các chuỗi văn bản từ hình ảnh và có thêm thông tin về tệp hình ảnh và cấu trúc của nó.


Một cái gì đó thu hút sự quan tâm của tôi khi làm như vậy:

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

Có một dòng như thế này cho mỗi nhị phân trong ảnh để bạn phần nào biết những gì trong đó. Ngoài ra, trong trường hợp này, khi bạn xem xét kỹ hơn quá trình cài đặt xảy ra trên nền tảng ban đầu installpkg, bạn phát hiện ra rằng:

Cơ chế cơ bản để chuyển phần mềm từ đĩa mềm sang đĩa cứng UNIX System V / 386 là cpio.

Về cơ bản, dữ liệu được trích xuất với cpio/ usr / tmp / install và một loạt các tệp được bao gồm trong tệp này (một tệp cài đặt, ascii, tệp, tên và kích thước). Nó xảy ra ở đây rằng lệnh này:

cat U19.IMA | cpio -imdv

xuất ra lỗi số không đúng định dạng để bắt đầu, nhưng sau đó tạo thư mục / usr / bin với nội dung của hình ảnh! Cái trtôi đang tìm là ở đó:

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

Cố gắng cpioở nơi đầu tiên không thể làm tổn thương!


Chỉ cần cẩn thận với tùy chọn -d và cpio. Tôi dường như nhớ điều này đã cố gắng trích xuất trực tiếp vào ổ đĩa gốc của tôi!
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.