Файловая система EXFAT

SLAX, Deep Style, ZenWalk

Модератор: Модераторы разделов

zenitur
Сообщения: 594
Статус: Одмин
ОС: openSuSE 10.2

Файловая система EXFAT

Сообщение zenitur »

Итак, если не считать Embedded-реализации Tuxera и Paragon - существует две реализации файловой системы exfat для Linux: Fuse и Samsung. Первая, как нетрудно догадаться, не ядерная.

История вопроса

В 2013 году энтузиаст нашёл на Github исходный код драйвера EXFAT под лицензией "AS-IS". Драйвер был для ARM-ов, а энтузиаст адаптировал его для десктопов и выложил в отдельный репозиторий. Так появился знаменитый ядерный драйвер Exfat-nofuse, которым пользуется большинство пользователей, которых не устраивает FUSE-драйвер.

Выяснилось, что драйвер написан Samsung-ом. Кроме того, туда "копипастили" куски кода из драйвера VFAT. Поэтому компанию попросили выложить исходники своего драйвера, как того требует GPL. Они выложили его на сайте http://opensource.samsung.com/

Так каким же драйвером пользоваться - форком или не-форком? Однозначно форком. Samsung Exfat Driver 1.2.4 скорее нерабочий, чем рабочий. Монтируешь с ним флешку, а запись от пользователя недоступна. В то время как форкнутый драйвер всё позволяет. Копируешь от root - в винде потом не открывается "нет прав". Эта ФС ещё и с правами. Круто!

В драйвере версии 1.2.5 кое-что исправили. Теперь, когда копируешь от root, в винде открывается. Но драйвера 1.2.5 нет на сайте выше! Его можно взять только в исходниках прошивок для смартфонов и планшетов. Последняя версия, которую мне удалось добыть, это 1.2.19 (в прошивке Samsung Galaxy S7 EDGE).

Несмотря на то, что Samsung EXFAT - трудный драйвер, я предпочитаю именно его, а не форк. По моему субъективному ощущению, не-форк работает более стабильно. Но доказать я ничего не могу.

Практикум

Исходники тут. Правила монтирования, чтобы была запись от пользователя, я взял здесь. Большая просьба: кто-нибудь, сделайте правило udev/udisks2!

Код: Выделить всё

$ tar xf exfat-1.2.19.tar.gz
$ cd exfat-1.2.19
... Патчи для ядер 3.19 и 4.1:
https://github.com/dorimanx/exfat-nofuse/commit/4dbbb389711fd966dda7cc8b9a14ac4b76976d6d
https://github.com/dorimanx/exfat-nofuse/commit/d2faf3226283c48a14d0c91bed108d685e473fb7
...
$ make
$ su
Password:
# mkdir /lib/modules/`uname -r`/kernel/fs/exfat
# cp *.ko /lib/modules/`uname -r`/kernel/fs/exfat
# depmod -a
# modprobe exfat_core
# modprobe exfat_fs
# mkdir /mnt/exfat
# mount -t exfat /dev/sdb1 -o rw,uid=1000,gid=1000,dmask=0002,fmask=0003 /mnt/exfat
# exit
$
А йа Ктулху! А йа - Медве-ед! А где Путин? Путина не-ет! Если встретишь - зохавай моск! А вернёшься - скажи ПРЕВЕД! Превед, Ктулху! Превед, Медвед!
Спасибо сказали: