Testcases for case-sensitivity: dd if=/dev/null of=floppy.img seek=2880 mkfs.msdos floppy.img mkdir /mnt/image # These iocharset and codepage settings are valid for Russia mount -o loop,iocharset=utf8,codepage=866 floppy.img /mnt/image echo bad >/mnt/image/Æ echo good >/mnt/image/æ ls /mnt/image umount /mnt/image
mkfs.msdos floppy.img # These settings are correct for USA and are the defaults in Debian Lenny mount -o loop,iocharset=utf8,codepage=850 floppy.img /mnt/image echo bad >/mnt/image/Г echo good >/mnt/image/г ls /mnt/image umount /mnt/image The common pattern is that the offending characters are not representable in the DOS codepage for a given country. Mounting with this line instead of the above: mount -o loop,utf8,codepage=850 floppy.img /mnt/image doesn't trigger the warning, but still results in a case-sensitive filesystem, so can't be considered as a fix. Since the kernel doesn't want to keep the full (Unicode) mapping between upper and lower case, the following solutions to the FAT case sensitivity problem remain: * switch to a non-UTF-8 locale (e.g., ru_RU.KOI8-R), mount FAT filesystems with iocharset=koi8-r (or whatever is correct for your locale - but the problem is to teach KDE to do this right for removable media) * write a FUSE-based FAT filesystem driver, drop the kernel one. Everything else results in either a case-sensitive filesystem, or in incorrect display of filenames created under Windows (which is the official reference implementation of the FAT file system). -- Alexander E. Patrakov

