mount -o loop更改已挂载的ISO映像文件


22

看起来像mount -o loop更改了挂载的图像文件。我下载了ISO映像文件并检查了其SHA-1校验和。然后我挂载了那个ISO文件,校验和改变了。以下是我执行的确切步骤,即从控制台CentOS 7 x64复制粘贴(请注意,ISO文件是只读的):

[mbartnicki@89-78-33-81 Downloads]$ ls -lh
total 3.1G
-r--r--r--. 1 mbartnicki mbartnicki 3.1G Mar 31 18:28 X17-58997.iso
[mbartnicki@89-78-33-81 Downloads]$ sha1sum X17-58997.iso 
6c9058389c1e2e5122b7c933275f963edf1c07b9  X17-58997.iso
[mbartnicki@89-78-33-81 Downloads]$ sudo mount -o loop X17-58997.iso /mnt/iso/
mount: /dev/loop0 is write-protected, mounting read-only
[mbartnicki@89-78-33-81 Downloads]$ sha1sum X17-58997.iso 
994944df320e9e03c032263d7b9e36157a0a587c  X17-58997.iso

我很惊讶,以至于我在另一台机器(Ubuntu 14.04 x64)上重复了上述步骤,只是得到了相同的结果:文件校验和在之后更改mount -o loop。卸载ISO映像不会将其校验和恢复为原始值。文件更改是持久的。此外,下一次安装再次将校验和更改为某个新值。怎么解释?

聚苯乙烯

通过添加ro挂载选项将挂载显式只读,可以防止文件被更改,因此,如果我使用:

sudo mount -o ro,loop X17-58997.iso /mnt/iso

那么一切正常,并且安装后ISO映像文件保持不变。仅当ro未指定option 时才会发生错误的行为,即使ISO映像文件在文件系统级别上是只读的也是如此。我尝试了三种不同的ISO映像:Windows 7安装DVD(官方),SystemRescueCD(小型救援Linux)和由genisoimage工具创建的手工制作的ISO 。

我用file实用程序检查了所有这些ISO文件,并file说它们都是ISO 9660 CD-ROM文件系统数据。ISO映像中的文件未更改-我也进行了检查-看起来错误的装载方案添加了一些元数据或只是垃圾。


卸载后的sha1sum是多少?
Volker Siegel 2014年

您可以尝试使用创建的空白iso图像genisoimage -o empty.iso emptydir吗?
Volker Siegel 2014年

您可以尝试制作新的循环设备并尝试将其安装iso到该设备吗?您也mknod -m 660 /dev/loop1 b 7 1可以在跑步后使用chmod 660 /dev/loop*
Simply_Me 2014年

@VolkerSiegel卸载不会返回以前的校验和。文件已永久更改。但是感谢您指出这一点,我将编辑我的问题以包括此信息。

2
Launchpad上的类似错误报告:mount -o loop ....更改了udf图像
Volker Siegel 2014年

Answers:


1

Iso不是只读的同义词,在某些情况下,您可能希望挂载iso读/写(在创建启动媒体时)。

如果您想只读,请使用选项

 mount -o ro,iso

3
我的ISO文件是通过文件系统权限来只读的,并且按照挂载输出中的说明以只读方式挂载。
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.