FAT32: установить длинное имя файла и 8.3 имя файла отдельно

Мне нужно создать карту SDHC (FAT32) с каталогом, в котором я независимо выбрал короткие и длинные имена файлов. Например, короткое имя файла MYDIR но длинное имя i am a cool name. yeah. check out the awesomeness. Исходя из Википедии, между двумя именами нет обязательной взаимосвязи, поэтому моя цель должна быть возможной:

не существует обязательного алгоритма для создания имени 8.3 из LFN

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

Я могу использовать любую необходимую систему для этого (Windows, Mac, Linux, Hex Editor), но чем проще, тем лучше. Спасибо!

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

Толстый драйвер генерирует краткое имя для каталога: THISIS~1. Вы можете использовать оба имени для доступа к нему.

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

Затем, после размонтирования раздела, я открыл изображение в шестнадцатеричном редакторе (Okteta на KDE), искал запись SFN THISIS~1 и заменил ее на MYNEWDIR. Кроме того, каждая 32-байтовая вложенная запись LFN хранит контрольную сумму SFN по смещению 13. Поэтому мне пришлось вычислить и заменить контрольную сумму THISIS~1(которая равна 0xA6) контрольной суммой для MYNEWDIR(которая равна 0x6A) во всех Подзаписи LFN. После сохранения изменений я перемонтировал образ и смог получить доступ к каталогу, используя старый LFN и новый SFN.

#cd /mnt/ThisIsALongDirectoryName
#cd /mnt/MYNEWDIR

Я бы не стал полагаться на Википедию в качестве технического справочника. Лучше обратиться к документации Microsoft. Читая об этом, я думаю, что между этими двумя файлами может быть связь, поэтому я бы не советовал возиться с ними. Возможно, вам лучше использовать короткое имя.

Другие вопросы по тегам