题 如何在linux中挂载.bin映像文件


我使用AWS导入服务导入大型(2TB)驱动器,并在我的S3帐户中删除了两个.bin文件。他们的指示说要将EBS卷一起条带化以使驱动器足够大以容纳图像然后使用它。

好吧,我有条纹和诸如此类的东西,但我不知道如何处理这个.bin图像。似乎没有用 mount,或者至少,没有任何选择,我不知道要放什么选项。

>file -k image-NPX7P-0000.bin
image-NPX7P-0000.bin: x86 boot sector; partition 1: ID=0xb, starthead 1, startsector 63, 3907024821 sectors, extended partition table (last)\011, code offset 0x0

>file -k image-NPX7P-0001.bin
image-NPX7P-0001.bin: data

编辑:我附加了文件信息,从它的外观,我假设我无法安装0000的原因是因为0001是它的扩展(跟踪我如何假设他们这样做)。但是我如何将两者合并并安装呢?

编辑2:使用osgx的答案,我能够将两个bin文件放在一起,并使用kpartx读取分区表。

> file-sk: /dev/dm-2: x86 boot sector, code offset 0x58, OEM-ID "BSD 4.4", sectors/cluster 64, heads 255, sectors 3907024821 (volumes > 32 MB) , FAT (32 bit), sectors/FAT 476816, reserved3 0x1000000, reserved 0x1, serial number 0x5cb415f7, label: "SOURCE-PSE " DOS executable (COM), boot code –

然而,这仍然不会安装。它说它需要一个文件系统类型,我用过的任何东西都没有帮助。也发布到pastebin因为它的长度是相关(可能)值的我的内核配置:

http://pastebin.com/j7iS7RF3


7
2017-07-30 17:43




试着跑一个 file -k 在您的bin文件上并在此处发布结果。 - osgx
添加在文件-k信息中 - UltimateBrent
什么是尺寸(ls -l image*)? - osgx
kpartx可以从映像文件中读取分区表,并将每个分区重新映射到单独的设备。 - osgx


答案:


根据 file -k,你有一个磁盘映像(可能是分成两个卷);磁盘映像具有一个2TB(39个扇区,512 = 2TB)和FAT32(0x0b)类型的分区表。

做一只猫将两个图像连成一个

cat image*bin > image.iso

要么  (小心!这会修改第一个文件)

cat image*0001* >> image*0000*

跑一个 kpartx 通过loop1设备读取image.iso上的分区表(现在你需要一个root;如果你做了第二种方式,请将image.iso替换为image * 0000 * cat婷)

losetup /dev/loop1 image.iso; kpartx -av /dev/loop1;

输出就像 add map loop1p1 ...

然后找到 loop1p1  在/ dev / mapper中

ls -l /dev/mapper
file -sk /dev/mapper/*   # finally check that it is a FAT32

装载它:

mount -o ro -t auto /dev/mapper/loop1p1 /where/to/mount

使用fs;卸下它;跑一个 kpartx -d -v /dev/loop1; ; unmap loop1 with losetup

(手动使用 http://nfolamp.wordpress.com/2010/08/16/mounting-raw-image-files-and-kpartx/ )


8
2017-08-03 00:01



我希望你有6 TB的磁盘空间(2TB用于原始文件; 2TB用于image.iso; 2 TB用于恢复数据)。在类似的情况下(恢复2 TB),我没有这样的磁盘空间,仍然没有。 - osgx
好吧,我的天才无所不知。我做了第二种方法,认为至少对于那部分我不需要额外的空间,但是没想到它会抓到另一个文件而需要总共3TB。所以我必须重新调整文件。这需要一段时间,然后我会发布我的结果。 - UltimateBrent
没有骰子:losetup / dev / loop1 image-NPX7P-0000.bin; kpartx -av / dev / loop1; / dev / loop1:权限被拒绝/ dev / mapper / control:open failed:权限被拒绝无法与内核设备映射驱动程序通信。设备映射器先决条件未得到满足 - UltimateBrent
UltimateBrent,好的。尝试找到nls模块并modprobe它们。你能复制精确的dmesg和mount输出吗? mount -o ro -t vfat /dev/dm-2 /where/to/mount  和 mount -o ro -t auto /dev/dm-2 /where/to/mount  和 mount -o ro,codepage=850,iocharset=iso8859-1 -t vfat /dev/dm-2 /where/to/mount 。也许你应该用你的输出打开新的问题(社区将帮助更快地安装比我更胖的脂肪) file -sk /dev/dm-2,mount命令尝试并报告dmesg / mount错误。 - osgx
以为我会在这里发布以完成循环。我刚刚结束了那个ec2实例,发现了一个预制的suse预制版,它已经准备就绪了,你的mount选项就像魅力一样。我欠你osgx的大好时光! - UltimateBrent


尝试用它安装它 -o loop 选项。


3
2017-07-30 21:10



这仅适用于ISO9660文件。 - ismail
@Ismail:不,它适用于任何具有可识别文件系统的图像文件 mount。 - ninjalj
告诉我我必须指定一个文件系统类型,但我不知道要放什么。 ntfs和iso9660不起作用 - UltimateBrent


使用bchunk并转换成iso然后你可以轻松安装 http://goinggnu.wordpress.com/2007/05/08/howto-mount-bincue-files-in-linux/


2
2017-07-30 18:47



没有提示文件,只有垃圾箱 - UltimateBrent
如果您有一个没有提示的bin文件,您可以尝试使用此内容创建新的文本文件:FILE“yourbinfilenamehere.bin”BINARY TRACK 01 MODE1 / 2352 INDEX 01 00:00:00但我认为osgx的解决方案是正确的答案。 - Chris Hasiński


将文件转换为ISO并从那里使用它。我成功地使用了iat(Iso9660分析工具)。

安装它(在我住的Ubuntu下 - YMMV):

sudo apt-get install iat

用它:

iat inputFile.bin > newShiny.iso

0
2018-04-03 08:37