Exfat – это файловая система, придуманная компанией Microsoft специально для флешек. В отличии от FAT32, exfat умеет хранить файлы размером больше 4Gb, а в отличии от NTFS, exfat умеет “выравнивать износ” ячеек (что должно здорово продлевать срок жизни флешек). Поддерживается в Windows начиная с XP SP2, в OS X начиная с 10.6.5. В Ubuntu 14.04 так же поддерживается из коробки, для этого достаточно установить пакет exfat-fuse. Но как и все драйвера, работающие через fuse, этот драйвер медленнее, чем драйвер, выполненный в виде модуля ядра. Его мы и будем ставить. Чтобы этот модуль автоматически пересобирался при обновлении ядра, добавим его в DKMS.
Разумеется, эта же инструкция подойдет не только к ubuntu, но и к любому другому линуксу.
Для начала удалим exfat-fuse, если он был установлен. Скачаем исходники из официального git-репозитария проекта и положим их в /usr/src. На момент публикации этой статьи последняя версия – 1.2.9.
$ sudo -i # cd /usr/src # git clone https://github.com/dorimanx/exfat-nofuse # mv exfat-nofuse exfat-nofuse-1.2.9
Добавим в каталог /usr/src/exfat-nofuse-1.2.9 такой файл с именем dkms.conf:
PACKAGE_NAME="exfat-nofuse" PACKAGE_VERSION="1.2.9" BUILT_MODULE_NAME[0]="exfat" DEST_MODULE_LOCATION[0]="/kernel/fs/exfat" AUTOINSTALL="yes" MAKE[0]="CONFIG_EXFAT_FS=m make KDIR=$kernel_source_dir"
Несколько волшебных строк, которые расскажут DKMS о новом модуле, заставят собрать этот модуль и установить его.
# dkms add exfat-nofuse/1.2.9 # dkms build exfat-nofuse/1.2.9 # dkms install exfat-nofuse/1.2.9
Теперь можно попробовать загрузить модуль руками:
# modprobe exfat
И убедиться, что он корректно загрузился:
# dmesg
В конце вывода должна появиться примерно такая запись: “exFAT: Version 1.2.9”.
Если всё в порядке, то можно вставлять флешку и пользоваться. Отформатировать флешку в эту файловую систему поможет mkfs.exfat из пакета exfat-utils. При обновлении ядра никаких телодвижений делать не придется, dkms соберет новый модуль самостоятельно.