И снова файловые системы. На этот раз меня замучил вопрос: “Почему Дисковая утилита не отображает дополнительные файловые системы FAT, поддержка которых изначально имеется в системе?”. Острой необходимости в этих ФС у мен нет, на крайний случай форматну что нужно через консоль. Но спортивный интерес – это такой интерес… Отправился осматривать строение одного из компонентов драйвера MS-DOS (FAT) – бандл msdos.fs, который находится в /System/Library/Filesystems. Так как модули типа *.fs являются пакетами (бандлами), можно легко просмотреть их структуру: кликаем правой клавишей по msdos.fs и выбираем пункт меню Показать содержимое пакета. После данного действия взору открывается структура:
Как видно, msdos.fs состоит из исполнительного модуля msdos.util, папки Resources (в которой находятся файлы локализации), файла version.plist (в котором находится информация о версии данного модуля) и файла Info.plist (в котором указаны параметры работы с файловыми системами) – он нас как раз и интересует. Сделаем на всякий случай резервную копию файла Info.plist, а потом откроем оригинальный Info.plist при помощи любого удобного текстового редактора, например при помощи TextMate. Обратите внимание на выделенные строки:
В каждом выделенном сегменте нам нужно заметить значение исходного параметра FSFormatMaximumSize на 8796093022208, то есть для MS-DOS FAT12 вместо выделенного фрагмента вставляем вот такой:
<key>FSFormatMaximumSize</key>
Параметр FSFormatMinimumSize не трогаем. Проделываем замену для FAT12, изменив в параметре FSFormatMaximumSize значение 133169152 на 8796093022208:
<integer>8796093022208</integer>
То же самое проделываем и для для FAT16, изменив в параметре FSFormatMaximumSize значение 2147483648 на 8796093022208:
Сохраняем изменения в файле Info.plist подтвердив свои действия паролем администратора. Что мы только что сделали? – Параметр FSFormatMaximumSize задаёт в байтах максимальный размер накопителя или раздела, который можно отформатировать в конкретной файловой системе. Если вы читали предыдущую заметку о файловых системах FAT, то вам станет ясно, почему для форматирования накопителя недоступны файловые системы FAT12 и FAT16. Изменив значение параметра FSFormatMaximumSize мы принудительно увеличили допустимый объём накопителя или раздела до 8 ТБ. Конечно, это не правильно, так как ФС FAT12 и FAT16 не умеют оперировать такими объёмами. Но что делать, когда нужно 🙂 ? Теперь дело осталось за малым: загружаем вот этот образ диска, двойным кликом по нему монтируем и перетягиваем три имеющиеся бандла в папку Filesystems:
Подтверждаем действия паролем админа. Бандлы fat12.fs, fat16.fs и fat32.fs – это “фейковые” файловые системы. Я повырезал оттуда всё лишнее, а вместо исполнительного файла msdos.util и папки Resources поместил символичные ссылки на оригиналы. Ну вот, в принципе, и всё! Запускаем Дисковую утилиту, подключаем флешку, выбираем её из списка слева, клацаем на Раздел диска или Стереть и нажимаем на список доступных файловых систем:
Та-да-ммм! Можно создавать и форматировать накопители и разделы в любой файловой системе FAT. Тестируйте!
Ваще крутяк! Вы как всегда радуете)
Спасибо 😉
Волшебно!
Благодарю 😉
а для siera?