我试图在ArchLinux上mount
访问.ima格式的软盘映像文件(原始转储到软盘,类似于.img)。
该文件是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 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
给
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文件与lostup链接起来,但是当我尝试安装循环设备时,我收到了最初的错误消息。
数据的完整性
最后,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文件不包含磁盘内容之外的其他数据,因此只能由能够检测其文件系统的程序来处理这些文件。
根据建议,我着手分析了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
抱歉,它的确看起来像分区表,但这并不常见。它包含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和Coherent文件系统支持 ”之类的特定内容,才能使用诸如之类的内容。sysv字符串不是很令人惊讶,因为它是AT&T UNIX System V / 386 Release 4 Version 2.1安装介质的一部分(Sun 一直支持到2006年是该端口),而这些映像最终在2007年大放异彩。与映像捆绑在一起的文件表明,由于引导扇区的性质和所使用的格式,安装它们是必需的。有迹象表明该材料最初是Teledisk(TD0)格式mount -t sysv
。我想在此强调,这不是原始材料。无论如何,我实际上无法像问题中所解释的那样计算偏移量-要么我在除以512时就不会以整数结尾,即使我尝试似乎也找不到合适的偏移量- dd: cannot skip to specified offset, 0 writes
等等。在这一点上,答案是关于取证,而不再是图像文件。
使用qemu进行快速历史图像源OS仿真
AT&T UNIX System V Release 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
在qemu中使用或1来访问或离开监视器,就可以使用它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
(请确保最后一个词是一些别名,但是我在SCO资料中找到了对pkgadd(1M)的-d开关的引用通常在商业Unix中经常出现(Oracle,HP共享pkgadd(1M))。发出命令将启动一个例程,在该例程中您将提供软盘,并且您没有控制权,只是在例程找出驱动器中的内容之后说“ no”。对于开始安装序列的磁盘(U03,U05等),将先安装磁盘,然后要求下一张软盘,直到软件包安装完成。如果您放置的软盘不是集合的开始,那么它基本上什么也找不到,但是会告诉您也许必须使用installpkg
命令。
我将在我的设备中安装物理软盘驱动器以访问该映像文件中的数据吗?
mount -t minix -o loop U19.IMA /mnt/cd
并得到一般错误,但是这落在dmesg中,VFS: Can't find a Minix filesystem V1 | V2 | V3 on device loop0.
这是否表明内核已经有了它或我不能依靠它?无论如何,我会调查你说的。我知道它不可启动,但是我想访问其中的内容。谢谢。
file
表明映像上没有文件系统。您确定数据确实存在吗?听起来您正在尝试挂载没有分区和文件系统的原始驱动器的映像。