我得到了一个包含区分大小写的文件/目录名的 ISO。
当我使用 将它安装到我的 Ubuntu 12.04 系统上时mount -o loop
,所有文件名都是小写的。有一个名为 的选项map=off
,但使用该选项时,所有文件名都是大写的。我在研究中发现,ISO9660 默认不支持区分大小写的文件名。但是,有一个名为 的扩展乔利埃特确实如此。我的 iso 似乎正在使用 joliet,因为在 windows/mac os x 上安装时,它的文件名区分大小写。基尼索夫也支持 joliet。
但是,我找不到使用 joliet 安装 ISO 的方法。我该怎么做?
编辑:
Dmesg 确实会记录[ 149.293945] ISO 9660 Extensions: Microsoft Joliet Level 1
。但不确定为什么不使用它。
编辑2: 您可以在这里找到 ISO:http://sourceforge.net/projects/cloverefiboot/files/Bootable_ISO/CloverISO-1914.tar.lzma/download
答案1
首先确保已为内核启用 Joliet 扩展。我猜是因为您正在使用 Ubuntu,所以已经启用了,但无论如何还是要检查一下,以确保万无一失:
grep -i joliet /boot/config-`uname -r`
那应该返回此行:
CONFIG_JOLIET=y
如果文件丢失,请尝试在 中搜索 joliet /proc/config.gz
。我的系统上没有这个文件,我重复了我读到的内容这里。
现在,假设您启用了 joliet,我猜您有一张不是 Joliet 的 CD。我尝试通过创建包含两个区分大小写的文件的 joliet iso 来复制您的问题:
$ ls foo/
Aaaaa Bbbbb
$ genisoimage -J -R -o foo.iso foo/
I: -input-charset not specified, using utf-8 (detected in locale settings)
Total translation table size: 0
Total rockridge attributes bytes: 323
Total directory bytes: 0
Path table size(bytes): 10
Max brk space used 0
181 extents written (0 MB)
$ sudo mount ./foo.iso baz/
mount: warning: baz/ seems to be mounted read-only. <-- ignore this, not a problem
$ ls baz
Aaaaa Bbbbb
换句话说,只要使用 Joliet 扩展创建了镜像,默认情况下它应该区分大小写。我真的不是图像文件系统方面的专家,但问题可能不是 Joliet,而是完全不同的东西。如果按照我上面所做的步骤操作,是否可以区分大小写地安装?
编辑:
我下载了你的 iso,得到了与你描述的相同的行为,我无法区分大小写地安装它。不过我确实找到了一个可能的原因。我isoinfo
在你的文件和我的文件上运行了:
$ isoinfo -d -i Clover-1914-X64.iso | grep Joliet
Joliet with UCS level 1 found
$ isoinfo -d -i foo.iso | grep Joliet
Joliet with UCS level 3 found
我不知道 Joliet 1 级和 3 级之间的区别是什么,但我怀疑这就是你的 iso 无法正常工作的原因。这至少可以给你一条新的研究途径。