Схоже, 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*