0

我需要构建一个 SDHC 卡(FAT32),其中包含一个我独立选择短文件名和长文件名的目录。例如短文件名MYDIR但长名称i am a cool name. yeah. check out the awesomeness.根据维基百科,这两个名称之间没有强制关联,所以我的目标应该是可能的:

从 LFN 创建 8.3 名称没有强制算法

-- http://en.wikipedia.org/wiki/8.3_filename#Overview

我可以使用任何必要的系统来执行此操作(windows、mac、linux、十六进制编辑器),但越简单越好。谢谢!

4

2 回答 2

2

短文件名是使用您提到的算法从 LFN 自动和强制构造的。(在 FAT32规范中也有详细说明)。这是由文件系统驱动程序完成的(至少在 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

fat 驱动程序为目录生成一个短名称:THISIS~1。您可以使用这两个名称来访问它。

#cd /mnt/ThisIsALongDirectoryName
#cd /mnt/THISIS~1

然后在卸载分区后,我在十六进制编辑器(KDE 上的 Okteta)中打开图像,搜索 SFN 条目THISIS~1,并将其替换为MYNEWDIR。此外,每个 32 字节的 LFN 子条目在偏移量 13 处存储 SFN 的校验和。所以我必须计算并用 MYNEWDIR 的校验和(即 0x6A)替换所有 THISIS~1(即 0xA6)的校验和。 LFN 子条目。保存修改后,我重新安装了映像,并且能够使用旧的 LFN 和新的 SFN 访问目录。

#cd /mnt/ThisIsALongDirectoryName
#cd /mnt/MYNEWDIR
于 2013-01-02T15:01:48.267 回答
0

我不会依赖维基百科作为技术参考。最好查阅微软的文档。阅读此内容,我认为这两个文件之间可能存在关系,因此我不建议摆弄这些文件。使用短名称可能会更好。

于 2013-01-02T14:05:33.460 回答