1 2## exfatprogs 3As new exfat filesystem is merged into linux-5.7 kernel, exfatprogs is 4created as an official userspace utilities that contain all of the standard 5utilities for creating and fixing and debugging exfat filesystem in linux 6system. The goal of exfatprogs is to provide high performance and quality 7at the level of exfat utilities in windows. And this software is licensed 8under the GNU General Public License Version 2. 9 10## Building exfatprogs 11Install prerequisite packages: 12``` 13For Ubuntu: 14 sudo apt-get install autoconf libtool pkg-config 15 16For Fedora, RHEL: 17 sudo yum install autoconf automake libtool 18``` 19 20Build steps: 21``` 22 cd into the exfatprogs directory: 23 ./autogen.sh 24 ./configure 25 make 26 make install 27``` 28 29## Using exfatprogs 30``` 31- mkfs.exfat: 32 Build a exfat filesystem on a device or partition(e.g. /dev/hda1, dev/sda1). 33 34Usage example: 35 1. No option(default) : cluster size adjustment as per device size, quick format. 36 mkfs.exfat /dev/sda1 37 2. To change cluster size(KB or MB or Byte) user want 38 mkfs.exfat -c 1048576 /dev/sda1 39 mkfs.exfat -c 1024K /dev/sda1 40 mkfs.exfat -c 1M /dev/sda1 41 3. For full format(zero out) 42 mkfs.exfat -f /dev/sda1 43 4. For set volume label, use -l option with string user want. 44 mkfs.exfat -L "my usb" /dev/sda1 45 5. To change boundary alignment(KB or MB or Byte) user want 46 mkfs.exfat -b 16777216 /dev/sda1 47 mkfs.exfat -b 16384K /dev/sda1 48 mkfs.exfat -b 16M /dev/sda1 49 50- fsck.exfat: 51 Check the consistency of your exfat filesystem and optionally repair a corrupted device formatted by exfat. 52 53Usage example: 54 1. check the consistency. 55 fsck.exfat /dev/sda1 56 2. repair and fix.(preparing) 57 58- tune.exfat: 59 Adjust tunable filesystem parameters on an exFAT filesystem 60 61Usage example: 62 1. print current volume label. 63 tune.exfat -l /dev/sda1 64 2. set new volume label. 65 tune.exfat -L "new label" /dev/sda1 66 3. print current volume serial. 67 tune.exfat -i /dev/sda1 68 4. set new volume serial. 69 tune.exfat -I 0x12345678 /dev/sda1 70 71- exfatlabel: 72 Get or Set volume label or serial 73 74Usage example: 75 1. get current volume label. 76 exfatlabel /dev/sda1 77 2. set new volume label. 78 exfatlabel /dev/sda1 "new label" 79 3. get current volume serial. 80 exfatlabel -i /dev/sda1 81 4. set new volume serial. 82 exfatlabel -i /dev/sda1 0x12345678 83 84- dump.exfat: 85 Show on-disk information 86 87Usage example: 88 dump.exfat /dev/sda1 89 90``` 91 92## Benchmarks 93 94Some fsck implementations were tested and compared for Samsung 64GB Pro 95microSDXC UHS-I Class 10 which was filled up to 35GB with 9948 directories 96and 16506 files by fsstress. 97 98The difference in the execution time for each testing is very small. 99 100 101| Implementation | version | execution time (seconds) | 102|----------------------|-----------------|--------------------------| 103| **exfatprogs fsck** | 1.0.4 | 11.561 | 104| Windows fsck | Windows 10 1809 | 11.449 | 105| [exfat-fuse fsck] | 1.3.0 | 68.977 | 106 107[exfat-fuse fsck]: https://github.com/relan/exfat 108 109## Sending feedback 110If you have any issues, please create [issues][1] or contact to [Namjae Jeon](mailto:linkinjeon@kernel.org) and 111[Hyunchul Lee](mailto:hyc.lee@gmail.com). 112[Contributions][2] are also welcome. 113 114[1]: https://github.com/exfatprogs/exfatprogs/issues 115[2]: https://github.com/exfatprogs/exfatprogs/pulls 116 117## Contributor information 118* Please base your pull requests on the `exfat-next` branch. 119* Make sure you add 'Signed-Off' information to your commits (e.g. `git commit --signoff`). 120