Может быть, я просто не правильно делаю, но я не могу получить гениальный образ, чтобы создать 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?
Одной потенциальной проблемой вашей командной строки может быть опция -udf. Вот что говорится в руководстве:
Включить поддержку файловой системы UDF в сгенерированный образ файловой системы. Поддержка UDF в настоящее время находится в альфа-состоянии, и по этой причине невозможно создавать изображения только в UDF. Структуры данных UDF в настоящее время связаны со структурами Joliet, поэтому в текущей реализации есть много подводных камней. Нет поддержки UID / GID, нет поддержки разрешений POSIX , нет поддержки символических ссылок.
blockquote>РЕДАКТИРОВАТЬ: это определенно проблема. Если изображение создается с помощью
genisoimage -input-charset utf-8 -r -volid minimal -o minimal.iso script.sh
, то скрипт script.sh является исполняемым (фактически даже
-r-xr-xr-x
, поскольку опция-r
распространяет исполняемый бит на файлы). Если вы хотите, чтобы iso читался в Windows, используйте расширение Joliet (опция-J
).