File system compatible with all OSes?

I use Linux and Mac OS X on a regular basis, and sometimes I have to use Windows. I need to use a flash drive on all three, and I need a filesystem that will work well on all of them. None of the ext’s work on Mac or Windows, HFS+ doesn’t work on Windows (or well on Linux), NTFS is read-only on Mac, and FAT sucks on all OSes. Is there a file system that would work reasonably well on all operating systems? I’d like it to work without drivers or additional installations, so it can be used on any computer.

Answers:

Thank you for visiting the Q&A section on Magenaut. Please note that all the answers may not help you solve the issue immediately. So please treat them as advisements. If you found the post helpful (or not), leave a comment & I’ll get back to you as soon as possible.

Method 1

UDF is a candidate. It works out-of-the-box on linux >= 2.6.31, Windows >= Vista, MacOS >= 9 and on many BSDs.

Note: UDF comes in different versions, which are not equally supported on all platforms, see Wikipedia – Compatibility.

UDF can be created on Linux with the tool mkudffs from the package udftools.

Method 2

Without troubles, use FAT32. There is no other compatible possibility. Linux since version 2.6.xy has no more problems with NTFS, but Mac OS does…Maybe you could make more partitions at your flash, but this is actualy not great solution.

Other solution:
Try to imagine you have 4GB flash memory.
Split it to 2 partitions.
1) FAT32 with freeware portable applications to access all other FS types.
2) Universal partition, which can be whatever you want – NTFS, ReiserFS (if you want real security and encryption) or whatever. Thanks first partition of your flash memory, you can easily read/write from whatever OS, because of programms you have stored at your FAT32 partition of your flash memory.

Better solution:
Forget using a flash drive. Use Dropbox or something through network. They are one of the simplest ways of sharing files between machines.

edit: Thank you for correction: let me write one of comments here:
” the maximum size depends on the selected cluster size. The limits really are from 2TB to 16TB for cluster sizes 512B to 4KB for FAT32 (also mentioned on the wikipage).”
That is right, excuse my mistake.

Thank you peterph

Method 3

Since you have cut it to the filesystems supported by OS X and Windows out of the box, I’m afraid the least common denominator is FAT32. exFAT might be an option if you can relax the requirement and accept using FUSE – it is patent encumbered and hence it isn’t going to make it to kernel till 2029 or until Microsoft grants the patent on royalty-free basis, whichever happens first.

Update: Microsoft publicly released the exFAT specification in 2019 and exFAT is available as kernel driver in Linux 5.4+. For additional information see wikipedia, MS blog.

On the other hand, remember that lots of informed people would argue that exFAT trades of functionality for simplicity. Thus you will get something that is capable of storing data and works across various OSes, but feature-wise is rather rudimentary.

Method 4

I’d suggest exFAT. Here’s why:

  • It works in RW everywhere (unlike NTFS, that’s supported read only on Mac OSX), it’s included in Windows since Windows XP and in Mac OSX since Mac OS X 10.6 (Snow Leopard), and afaik all the GNU/Linux distros out there includes packages for it in default repos.
    Even Android devices, iOS devices (iPhones and iPads), and some smart TVs support it as of year 2017.
  • It doesn’t support permissions and ownership of files (unlike ext2/3/4, NTFS and HFS+), and it’s a good thing, since they can be very annoying on a flash drive that you often connect to several, different, computers.
  • It supports large disks and big file systems without wasting space, and supports files bigger than 4GB (unlike FAT32).
    It supports almost any unicode character in file and directory names (unlike FAT32
  • It’s simple enough to be fast (unlike NTFS) and reliable (unlike FAT32).
  • With SDXC cards exFAT became the standard for SD and micro SD cards with storage bigger than 32 GB, so one can expect support for it in most recent cameras, camcorders, smartphones and game consoles. So even if you don’t think to need it, maybe you already have one or more devices using it or ready for it.

Unfortunately, patents on exFAT prevent to include it in mainline Linux kernel, so you need to manually install an implementation of exFAT to add support for it in your system. Anyways, once you install it, the system will be able to mount or unmount it using normal mechanisms.

Most distros provide packages to install a FUSE implementation that works fine and flawlessly. I used it for flash drives, SD cards and external USB disks, and I’m happy with it.

I’d expect a FUSE file system to be slower than a native one, but most often the bottle neck is in the hardware, not in the file system (often flash drives themselves are slower than file system drivers), so for “normal” use it won’t be a problem at all.

To use exFAT on Ubuntu and Debian you just need to install the exfat-fuse and exfat-utils packages:

sudo apt-get install exfat-fuse exfat-utils


All methods was sourced from stackoverflow.com or stackexchange.com, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0

0 0 votes
Article Rating
Subscribe
Notify of
guest

0 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x