genisoimage 和 exec 位保存

genisoimage 和 exec 位保存

也许我做得不对,但我似乎无法让 genisoimage 生成 UDF 图像并保留执行位。

$ 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 支持目前处于 alpha 状态,因此无法创建仅支持 UDF 的映像。UDF 数据结构目前与 Joliet 结构耦合,因此当前实现存在许多缺陷。没有 UID/GID 支持,没有 POSIX 权限支持,不支持符号链接。

编辑:这肯定是问题所在。如果图像是用

genisoimage -input-charset utf-8 -r -volid minimal -o minimal.iso script.sh

那么 script.sh 就是可执行的(实际上甚至是-r-xr-xr-x,因为该-r选项会将可执行位传播到文件上)。如果您希望 iso 可供 Windows 读取,请使用 Joliet 扩展(选项-J)。

相关内容