Dan
Dan

Reputation: 283

What FAT32 symlink standard does cygwin and msys2 use?

I've noticed that in cygwin and MSYS2 I'm allowed to make symlinks on FAT32 volumes, and these symlinks are visible both in cygwin and MSYS2 interchangeably. The "links" are not links in the traditional sense, because FAT32 has no concept of that. Instead they are flat files with a magic header of 0x213c73796d6c696e6b3e (ASCII: !<symlink>) followed by a BOM prepended UTF-16 little endian null terminated string providing the relative (or absolute) path to target.

Z:\link-test> ls -l link.d
lrwxrwxrwx 1 cygwin cygwin 7 Jan  9 20:59 link.d -> test.d/

Z:\link-test> <link.d xxd -g2 -e
00000000: 3c21 7973 6c6d 6e69 3e6b feff 0074 0065  !<symlink>..t.e.
00000010: 0073 0074 002e 0064 002f 0000            s.t...d./...

Z:\link-test> <link.d tail -c +13
test.d/

So, is this standardized anywhere, and if so, how can I mount a vfat filesystem in linux that honors these pseudo-symlink references?

Upvotes: 0

Views: 157

Answers (1)

matzeri
matzeri

Reputation: 8496

The symlinks used by Cygwin on FAT32 are Cygwin specific implementation

https://cygwin.com/faq.html#faq.api.symlinks
https://cygwin.com/cygwin-ug-net/using.html#pathnames-symlinks

If you need to share with WSL, convert to NTFS and use Windows native one

Upvotes: 0

Related Questions