Итак, если не считать Embedded-реализации Tuxera и Paragon - существует две реализации файловой системы exfat для Linux:
- FUSE (не ядерная)
- Samsung:
- Форк, поддерживающий Linux 4.9 (лучший выбор)
- Не-форк версии 1.2.19, поддерживающий Linux 2.6.32-3.18 (может возникнуть проблема с правами на запись). Патч для 3.19, 4.1, 4.2-4.4.
Форк монтирует с правильными правами, в то время как оригинальный Самсунговский не-форк что-то мудрит с Windows ACL. Выбор очевиден - форк! Но вот лично мне кажется, что раз форк патчили-перепатчили энтузиасты, внося туда новые возможности, то он (по моим субъективным ощущениям) может работать нестабильно. Однако я не могу привести ни одного доказательства и скорее всего вру. :-)
Пример использования не-форка:
$ tar xf exfat-1.2.19.tar.gz
$ cd exfat-1.2.19
$ make
$ su
Пароль:
# 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
$
Правило HAL /etc/hal/fdi/policy/10-exfat.fdi
// Помогите создать правило udev, хотя udisks2 в моём Debian 8 монтирует с UID, поэтому наверно не надо
<?xml version="1.0" encoding="UTF-8"?>
<deviceinfo version="0.2">
<device>
<match key="volume.fstype" string="exfat">
<match key="@block.storage_device:storage.hotpluggable" bool="true">
<merge key="volume.fstype" type="string">exfat</merge>
<merge key="volume.policy.mount_filesystem" type="string">exfat</merge>
<append key="volume.mount.valid_options" type="strlist">dmask=</append>
<append key="volume.mount.valid_options" type="strlist">fmask=</append>
<append key="volume.mount.valid_options" type="strlist">silent</append>
<append key="volume.mount.valid_options" type="strlist">uid=</append>
<append key="volume.mount.valid_options" type="strlist">gid=</append>
<append key="volume.mount.valid_options" type="strlist">allow_other</append>
<merge key="volume.policy.mount_option.dmask=0002" type="bool">true</merge>
<merge key="volume.policy.mount_option.fmask=0003" type="bool">true</merge>
<merge key="volume.policy.mount_option.uid=1000" type="bool">true</merge>
<merge key="volume.policy.mount_option.gid=1000" type="bool">true</merge>
<merge key="volume.policy.mount_option.allow_other" type="bool">true</merge>
<merge key="volume.policy.mount_option.silent" type="bool">true</merge>
</match>
</match>
</device>
</deviceinfo>