Файловые системы Mac OS X. NTFS — это целая история.

Продолжаю начатое — краткое обозревание поддерживаемых Mac OS X файловых систем. Небольшое уточнение — поддерживаемых «из коробки» (то есть изначально, без установки каких-либо дополнительных драйверов плагинов и заплаток) файловых систем.

NTFS (Windows NT Filesystem или Windows New Technology File System — «файловая система новой технологии»  для Windows) — стандартная файловая система для операционных систем Windows корпорации Microsoft начиная с Windows NT (~1993 год). До Windows NT стандартной файловой системой Windows была MS-DOS FAT разных типов; Windows 95, 98 и 98 Millennium по-прежнему использовали FAT. А широким массам NTFS стала доступной с выходом Windows 2000.

Разработка корпорации Майкрософт — файловая система NTFS — это, несомненно, большой прорыв в плане характеристик отказоустойчивости, скорости и надёжности среди файловых систем. По крайней мере того времени. Однако не стоит приписывать разработку NTFS сугубо лишь одной M$. Как известно, в своё время Microsoft и IBM плотно сотрудничали, в частности над созданием общей операционной системы высокого класса — OS/2 (читается как «ОС на два» или «ОС пополам»). Именно разработка OS/2, а точнее разработка файловой системы HPFS (High Performance File System) для этой ОС, заложила фундамент будущей NTFS. Потом Майкрософт успешно закрыла разработки «кинув» IBM, допилила HPFS и выпустила своё детище — Windows NT. Но это уже другая история. Вернёмся к NTFS.

Файловая система NTFS выглядит и по сей день достаточно выгодно, хоть и не так, как 20 с лишним лет тому. О её внедрении в качестве основной ФС подумывала даже Apple, но в итоге отказалась от данной затеи и выпустила свою собственную файловую систему HFS+ с очень схожими характеристиками. Почему же NTFS была такой желанной и одновременно недоступной? — Желанной она была потому, что уже в то время NTFS поддерживала такие «плюшки» как журналируемость, разграничение прав доступа, аудит и квотирование, сжатие и шифрование данных. Прибавить к этому высокую производительность, поддержку разделов до 2 ТБ (на MBR) или до 9 ЗБ (на GPT), поддержку файлов до 16 ТБ… Разве такие показателя не являются желанными? Но… Файловая система NTFS и по сей день является недоступной ввиду своей закрытости. Майкрософт просто-напросто не раскрывает всех нюансов и секретов работы NTFS, посему любая сторонняя разработка для поддержки чтения/записи NTFS вне Windows является продуктом дизассемблирования (реверс-инженирингом). Естественно, воссоздать, не имея исходных кодов и спецификаций, абсолютно повторяющий работу оригинального, драйвер NTFS невозможно! Как же тогда с драйверами NTFS-3g, TUXERA NTFS, Paragon NTFS? — Всё так же ребята, всё так же 😉 Поэтому рядом с любым пособием по активации режима «чтение/запись» на NTFS я пишу следующее предупреждение:

Не используйте файловую систему NTFS для хранения важных файлов при работе в Mac OS X! Не полагайтесь на сторонние решения, такие как Tuxera NTFS, Paragon NTFS или NTFS-3G. Используйте функцию записи на NTFS только для обмена файлами, потеря которых не критична, или если имеется их резервная копия.

Вот мы и подошли к вопросу NTFS в Mac OS X. Начиная с версии Mac OS X Panther (обновление 10.3.9), поддержка файловой системы NTFS имеется в «яблочной» операционной системе изначально, но только на чтение. В версии Mac OS X Snow Leopard (10.6) появилась новая версия NTFS драйвера которая работала с NTFS так же только на чтение, но… Не знаю кем именно впервые была найдена эта недокументированная лазейка, позволившая активировать работу стандартного NTFS драйвера не только на чтение, но и на запись, но впервые упоминание о ней я нашёл на форуме MacRumors. В операционках начиная с OS X Lion (10.7) NTFS драйвер снова обновили вырезав из него поддержку записи «при корню», но это не помешало мне на основе предыдущего выпустить системных хак для хактивации записи NTFS и в OS X Lion, и в OS X Mountain Lion. Что же это были такие за «качели» с NTFS в Mac OS X? — То, по-видимому, хотели добавить нативную запись NTFS, то потом снова вырезали… Копаясь в исходниках NTFS драйвера для Mac OS X в заголовках каждого файла я заметил интересненький такой копирайт:

В недрах исходников NTFS драйвера для Mac OS X

На скриншоте плохо видно, но я хочу обратить внимание на вот эти строки: * Copyright (c) 2006-2008 Anton Altaparmakov. All Rights Reserved.
* Portions Copyright (c) 2006-2008 Apple Inc. All Rights Reserved.
Да, да, я клоню вот сюда: Anton Altaparmakov. Простите меня, дорогие читатели, но с этого момента в статье образовывается ещё один виток событий 🙂

Далёкий 1995 год. Два года как файловая система NTFS доступна пользователям Windows NT. Хакер по прозвищу Мартин фон Льюис (Martin von Loewis) — основатель проекта Linux-NTFS Project и человек объединивший в нём целую армию именитых кодокопателей, спустя два долгих года напряжённых реверс-инжениринговых работ группы над расшифровкой базовых структур данных NTFS, публикует первую стабильную версию NTFS драйвера для Linux. Овации сопутствовали группе аж до конца 90-х, когда та внезапно распалась. Причиной распада послужила незначительная ошибка в драйвере, вылившаяся в значительные проблемы. Причина была очень простой: в NTFS драйвере для Linux не было проверки версий NTFS так как в то время других версий NTFS, кроме уже имеющейся, просто не существовало! К выходу Windows 2000 Майкрософт подготовила пакостный сюрприз в виде новой версии NTFS: в базовые структуры данных было добавлено пару новых полей, смещения всех остальных, соответственно, изменились. Драйвер NTFS для Linux, естественно, об этом ничего не знал, и при первой же попытке записи делал из файловой системы ололо. Это не очень положительно сказалось на репутации Linux-NTFS Project и они вскорости распались. Но наработки никуда не делись, и в 2002 году новый состав разработчиков, в который входили такие личности, как Якоб Кеми (Jakob Kemi) и Ричард Рассон (Richard Russon) — создатели загружаемого модуля ядра; Павел Кот (Pawel Kot) — человек, который портировал новый драйвер в ядро; и Антон Альтапармаков (Anton Altaparmakov) — лидер новой группы, создатель драйвера и служебных NTFS-утилит; выпускают новую, практически полностью переписанную с нуля, версию NTFS драйвера для Linux.

2005 год. Apple делает решительный шаг по переходу с PowerPC-архитектуры и, соответственно, процессоров PowerPC, на архитектуру x86 и процессоры Intel. Это открывает «двери» к невиданной ранее возможности — запуска на одной Mac-машине и конкурирующей Windows, и родной Mac OS X. Целая армия новых пользователей, реально заинтересованных в работе с NTFS, породила спрос, и Антон Альтапармаков (Anton Altaparmakov) перенес открытый NTFS-драйвер с Linux на Mac OS X. Таким образом появился ещё один проект под названием NTFS-3G project, и продукт NTFS-3G, который в настоящее время поддерживает операционные системы Mac OS X, BeOS, FreeBSD, NetBSD и Haiku. Сейчас Антон Альтапармаков является частью команды разработчиков компании TUXERA — лидера в разработке, поддержке и внедрению файловых систем NTFS и ExFAT в различное оборудование.

Вернёмся к Mac OS X 10.6, в которой, если вы помните, драйвер NTFS недокументированно научился записывать на NTFS. Заслуги сегодняшнего коммерческого драйвера TUXERA NTFS перед своим бесплатным собратом — NTFS-3G — это приличная скорость дисковых операций чтение/запись (NTFS-3G записывает на NTFS как черепаха). Судя по скорости чтения/записи стандартного NTFS драйвера в Mac OS X, которая при моих личных тестах ограничивалась лишь пропускной способностью USB 2.0, я могу предположить, что в Mac OS X используются (или по крайней мере использовались) наработки TUXERA. Почему с выходом OS X Lion разработки в направлении усовершенствования работы нативного NTFS драйвера прекратились? — Можно только гадать. Ясно только одно — если бы они продолжились, мы получили бы очень приятный встроенный функционал 🙂 Но сказка закончилась печально, хотя так хорошо начиналась…

Читайте так же:

В статье использованы материалы Википедии и журнала Хакер № 08/07 (104).

Share this article
0
Share
Prev Post

Обзор игры World Of Blocks для iOS.

Next Post

Методы автозагрузки приложений в Mac OS X. «Классический» или «простой» способ.

Comments 2
  1. Начиная с версии Mac OS X Leopard (10.5), поддержка файловой системы NTFS имеется в «яблочной» операционной системе изначально, но только на чтение.

    ORLY? O_o
    Как же у меня это работало в 10.3 и 10.4?
    Вероятно, у меня был какой-то особый Джобс, special for Russia.

    1. Моя ошибка, благодарю, поправим. В своё время Tiger обошёл меня немного стороной (в то время я только начал «хакинтошничать»), поэтому не вдавался в подобные детали, а стоило бы.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Read next