오래된 플로피 이미지 파일 (.ima 형식) 마운트-얼마나 힘들 수 있습니까?


10

나는에 노력하고있어 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 파일을 losetup과 연결할 수 있지만 루프 장치를 마운트하려고하면 초기 오류 메시지가 나타납니다.

데이터 무결성

마지막으로, 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 and Coherent filesystem support ' 같은 특정한 것이 필요합니다 . sysv 문자열은 AT & T UNIX System V / 386 릴리스 4 버전 2.1 설치 미디어 ( 2006 년까지 Sun에서 지원하는 포트)의 일부 이며 2007 년에 실제로 종료 되었기 때문에 놀랍지 않습니다 . 이미지와 함께 번들로 제공되는 파일은 부트 섹터의 특성 및 사용중인 형식으로 인해 설치에 필요함을 나타냅니다. 자료가 원래 디스크 디스크 (TD0) 형식 이었다는 표시가 있습니다.mount -t sysv. 나는 이것이 원래의 재료가 아니라는 것을 강조하고 싶다. 어쨌든 나는 실제로 질문에 설명 된 것처럼 오프셋을 계산할 수 없습니다-512로 나눌 때 정수로 끝나지 않으며 시도하더라도 올바른 오프셋을 찾을 수없는 것 같습니다 dd: cannot skip to specified offset, 0 writes. 이 시점에서 답은 법의학에 관한 것이며 더 이상 이미지 파일에 관한 것이 아닙니다.

qemu로 빠른 히스토리 이미지 소스 OS 에뮬레이션

AT & T UNIX 시스템 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

제안했듯이, 나는 세트의 이전 이미지에서 설치했습니다. U19는 부팅 할 수 없으므로 기본적으로 이미지 14부터 시작하여 먼저 qemu 설명 된 것과 같은 것을 사용합니다 (먼저 losetup /dev/loop0 U14.IMA간단한 qemu-system-x86_64 -m 256 -hda test.img -fda /dev/loop0 -boot a). 여기서 좋은 점은 OS 자체에서 이미지를 마운트 / 마운트 해제 할 필요가 없으며 ctrl-alt-2qemu와 함께 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) 및 raw (/ dev / dsk / f0) 장치를 통한 플로피 액세스도 있습니다. 디렉토리를 플로피로 변경하면 1에서 23까지 번호가 매겨진 파일 만 표시됩니다 (이것은 필자가 추측 한 문자 장치의 구조 일뿐입니다). 또한 cat원시 장치와 블록 장치를 사용할 수 있으며 플로피 데이터가 있지만 그 정도에 가깝습니다.

나는 그 OS에서 압축 해제 된 바이너리 파일과 같이 디렉토리에서 스크립트를 시작하여 플로피로 물건을 설치하지 않는다는 것을 알았습니다. 여기에서 사용합니다 pkgadd -d diskette1(마지막 단어는 별명입니다. pkgadd (1M) 에 대한 SCO 항목에서 -d 스위치에 대한 참조를 찾았습니다.일반적으로 상용 Unix (Oracle, HP share pkgadd (1M))에서 자주 나타납니다. 명령을 실행하면 플로피를 제공하는 루틴이 시작되고 루틴이 드라이브에있는 내용을 찾은 후 "no"라고 말하지 않는 한 제어 할 수 없습니다. 설치 순서를 시작하는 디스크 (U03, U05 등)의 경우, 설치 후 패키지 설치가 완료 될 때까지 다음 플로피 등을 요청합니다. 세트의 시작이 아닌 플로피를 넣으면 기본적으로 아무것도 발견되지 installpkg않고 대신 명령 을 사용해야 할 수도 있습니다 .

해당 이미지 파일의 데이터에 액세스하기 위해 실제 플로피 드라이브를 장비에 설치합니까?


그냥 추측 : 그것은 Minix 파일 시스템 일 수 있습니다. 커널을 지원하려면 커널을 다시 컴파일해야합니다. 물리 플로피 드라이브를 설치해도 도움이되지 않습니다. 이미지 파일이 얼마나 큽니까? 파일이 단지 원시 이미지 인 경우, 시도한 (현재 / 현대) 파일 시스템이 포함되어 있지 않습니다. i386 시스템에서 부팅 할 수없는 것 같습니다.
jofel

@jofel 파일의 크기는 1475k입니다. 내가 그렇게 마운트하려고 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
설치 디스크 인 경우 첫 번째 디스크에만 파일 시스템이 포함되어 있거나 부팅 가능한 것일 수 있습니다. 다른 디스크에는 파일 시스템 오버 헤드없이 사용자 정의 형식의 데이터 만 포함될 수 있습니다.
jofel

답변:


4

이미지를 마운트 할 수없는 경우 여전히 일부 데이터를로 "스트리밍"할 수 있습니다 cpio.

이미지가 있는지 확인한 후 :

  • 지원되는 파일 시스템 및 파티션을 사용하는 이미지-> mount
  • 지원되는 파일 시스템과 둘 이상의 파티션을 사용하는 이미지-> mount with offset또는 dd오프셋이있는 파티션을 추출한 다음 해당 파티션 만 마운트하거나 다음과 같은 것을 사용하는 데 사용kpartx
  • 지원되는 파일 시스템을 사용하지 않거나 파일 시스템이 전혀없는 이미지-> 커널 지원 및 추가 조사 ...

당신은 사용할 수 있습니다 hexdumpstrings헤더를 분석하려고하고 이미지에서 텍스트 문자열을 추출하고 이미지 파일 및 구조에 대한 자세한 정보를 얻을 수 유틸리티.


그 일에 관심이 생겼습니다.

@(#)/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. 나는 이것이 내 루트 드라이브로 직접 추출하려고 시도한 것을 기억하는 것 같습니다!
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.