我需要构建一个SDHC卡(FAT32),其中包含一个独立选择短文件名和长文件名的目录。例如。短文件名MYDIR
但是长名称i am a cool name. yeah. check out the awesomeness.
基于维基百科,两个名称之间没有强制关联,所以我的目标应该是可能的:
没有从LFN创建8.3名称的强制算法
我可以使用任何必要的系统来执行此操作(windows,mac,linux,hex编辑器)但更容易越好。谢谢!
答案 0 :(得分:1)
短文件名是使用您提到的算法从LFN自动强制构造的。 (详见FAT32 specifications)。这是由文件系统驱动程序完成的(至少在Windows和Linux上)。除非你修改了不可取的驱动程序,否则你真的无法改变它。如果您只想为一个目录执行此操作,那么您可以通过修改十六进制编辑器中的磁盘映像来实现此目的,因为它不会创建具有相同名称的重复条目。
以下是我在Linux上尝试的内容:
#dd if=/dev/zero of=fatImage bs=1048576 count=256
#mkfs.vfat -F 32 fatImage
#mount -o loop fatImage /mnt
#cd /mnt
#mkdir ThisIsALongDirectoryName
胖驱动程序为目录生成一个简短名称: THISIS~1 。 您可以使用这两个名称来访问它。
#cd /mnt/ThisIsALongDirectoryName
#cd /mnt/THISIS~1
然后在卸载分区后,我在十六进制编辑器(Okteta on KDE)中打开图像,搜索SFN条目 THISIS~1 , 并用 MYNEWDIR 替换它。此外,每个32字节LFN子条目在偏移13处存储SFN的校验和。 所以我不得不calculate并替换THISIS~1的校验和(即0xA6) 所有LFN子条目中的MYNEWDIR校验和(0x6A)。保存修改后,我重新安装了图像,并能够使用旧的LFN和新的SFN访问该目录。
#cd /mnt/ThisIsALongDirectoryName
#cd /mnt/MYNEWDIR
答案 1 :(得分:0)
我不会依赖维基百科作为技术参考。最好咨询微软的文档。读到这个,我想这两个文件之间可能存在关系,所以我不建议摆弄它们。你可能最好使用一个简短的名字。