Сообщество Linux получило драйвер для файловой системы NTFS, которая используется в Windows. Код решения бесплатно передали разработчики российской компании Paragon Software.
Почему это важно
Последние версии Microsoft Windows включают NTFS в качестве файловой системы по умолчанию. Это проприетарное ПО, и использовать его в свободной ОС Linux напрямую нельзя. Разработчики не раскрывают спецификации NTFS, поэтому писать код для ее полноценной поддержки сложно.
Технически в ядро Linux 2.2 и более новых версий по умолчанию включен модуль, который позволяет работать с NTFS. Но здесь поддерживается только режим чтения: можно подключить диски и скопировать с них информацию, но изменить или удалить данные не получится.
Чтобы обеспечить поддержку файловой системы NTFS в Linux, использовался сторонний драйвер. Пользователям была доступна только его коммерческая версия. Теперь появилась и свободная реализация.
Ранее единственным доступным способом получения прав на запись в NTFS-разделах в Linux без покупки коммерческого ПО было использование утилиты ntfs-3g. В этом случае NTFS-разделы монтировались с помощью модуля FUSE. Но проект обладает низкой производительностью и с 2017 года не обновлялся.
Патч в списке рассылки
Специалисты Paragon Software разработали собственную реализацию драйвера файловой системы NTFS. Этот код они передали разработчикам ядра Linux: соответствующий патч в список рассылки добавил глава компании Константин Комаров.
Драйвер будет распространяться по свободной лицензии GPL 2.0. Он поддерживает возможности NTFS 3.1, в частности, поддержку разреженных, сжатых и стандартных файлов, а также воспроизведение изменений из журнала.
В Paragon заявили, что будут совершенствовать и развивать проект драйвера. Разработчики готовы добавлять новые функции и исправлять ошибки. В планах реализация полного журналирования поверх JBD. На основе этой технологии работает журналирование в стандартной для Linux файловой системе ext4.
Есть нюанс
Формально драйвер Paragon Software не готов к включению в ядро Linux, – разработчики не выполнили все требования к оформлению патчей. Так, сейчас код передали в единственном файле, который включает 27 тыс. строк кода. Это серьезно осложняет работу контрибуторов, которые должны проверить такой код перед тем, как он станет частью ядра.
В комментариях к рассылке разработчики отметили, что собрать драйвер из исходного кода не получится, если не вносить изменения в Makefile проекта. Этот файл позволяет автоматизировать сборку с помощью утилиты make. Пока эти недочеты не устранят, драйвер вряд ли включат в очередное обновление.
Ранее Paragon Software передали сообществу разработчиков ядра Linux свою реализацию драйвера файловой системы exFAT для флеш-накопителей. На момент передачи кода драйвер поддерживал только режим чтения, но позднее обещали добавить и доступ на запись. В январе 2020 года инженеры Samsung представили собственную реализацию exFAT, и разработчики ядра Linux выбрали именно ее.