Схоже, 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, створений 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*