genisoimage и exec битовое сохранение
Может быть, я просто не правильно делаю, но я не могу получить гениальный образ, чтобы создать UDF-изображение и сохранить бит exec.
$ genisoimage --version
genisoimage 1.1.11 (Linux)
$ echo "echo 'Hello world'" > script.sh
$ chmod +x script.sh
$ ./script.sh
Hello world
$ genisoimage -input-charset utf-8 -r -udf -volid minimal -o minimal.iso script.sh
Total translation table size: 0
Total rockridge attributes bytes: 250
Total directory bytes: 0
Path table size(bytes): 10
Max brk space used 0
420 extents written (0 MB)
$ mkdir mount
$ sudo mount minimal.iso $PWD/mount -o ro,loop -t udf
$ ls -l script.sh mount/script.sh
-r--r--r-- 1 root root 19 Sep 21 18:40 mount/script.sh
-rwxrwxr-x 1 kip kip 19 Sep 21 18:40 script.sh
В последней команде вы заметите, что script.sh был исполняемым в тот момент, когда он был внедрен в образ, но, похоже, не находится внутри смонтированного образа.
Это ошибка в genisoimage, проблема с тем, как я монтирую образ, или проблема в моем использовании genisoimage?
1 ответ
Одна потенциальная проблема с вашей командной строкой может быть опцией -udf. Вот что говорится в руководстве:
Включить поддержку файловой системы UDF в созданный образ файловой системы. Поддержка UDF в настоящее время находится в альфа-состоянии, и по этой причине невозможно создавать изображения только в UDF. Структуры данных UDF в настоящее время связаны со структурами Joliet, поэтому в текущей реализации есть много подводных камней. Нет поддержки UID/GID, нет поддержки разрешений POSIX, нет поддержки символических ссылок.
РЕДАКТИРОВАТЬ: это определенно проблема. Если изображение создано с
genisoimage -input-charset utf-8 -r -volid minimal -o minimal.iso script.sh
тогда скрипт.sh исполняемый (на самом деле даже -r-xr-xr-x
, поскольку -r
опция распространяет исполняемый бит на файлы). Если вы хотите, чтобы ISO был доступен для чтения в Windows, используйте расширение Joliet (опция -J
).