Похоже, 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-образа не возвращает его контрольную сумму к исходному значению; изменение файла является постоянным. Более того, при следующем монтировании снова измените контрольную сумму на какое-то новое значение. Чем это можно объяснить?
PS
Монтирование только для чтения путем добавления ro
опции монтирования предотвращает изменение файла, поэтому, если я использую:
sudo mount -o ro,loop X17-58997.iso /mnt/iso
тогда все в порядке, и файл образа ISO остается неизменным после монтирования. Неправильное поведение возникает, только если ro
опция не указана, даже если файл образа ISO доступен только для чтения на уровне файловой системы. Я попробовал три разных ISO-образа: установочный DVD-диск Windows 7 (официальный), SystemRescueCD (небольшой аварийный Linux) и созданный вручную ISO-образ ISO genisoimage
.
Я проверил все эти файлы ISO с помощью file
утилиты и file
сказал, что все они являются данными файловой системы CD-ROM ISO 9660 . Файлы внутри ISO-образов не изменяются - я тоже это проверил - похоже, что сценарий ошибочного монтирования добавляет метаданные или просто мусор.
genisoimage -o empty.iso emptydir
?
iso
к нему? Вы можете использовать mknod -m 660 /dev/loop1 b 7 1
также после запускаchmod 660 /dev/loop*