Re: Problem mounting new Sandisk 1TB USB drive
- In reply to: Polytropon : "Re: Problem mounting new Sandisk 1TB USB drive"
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Sat, 13 Jan 2024 07:22:42 UTC
Late to the 'old and stupid' party ... out of the pile, I'm responding to this one since Gary gives it as reference in his PR revival at https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=244461 On 11 January 2024 11:42:15 am AEDT, Polytropon <freebsd@edvax.de> wrote: > On Wed, 10 Jan 2024 16:42:22 -0700, Gary Aitken wrote: > > On 1/10/24 15:33, Polytropon wrote: > > > On Wed, 10 Jan 2024 13:03:28 -0700, Gary Aitken wrote: (cutting mercilessly) > > > The stick is actually pre-formatted with exFAT. > > > > > > Problem here: exFAT disguises itself as an NTFS partition, > > > but it does not have NTFS metadata and content, so ntfs-3g > > > cannot mount it, even though tools like gpart or fdisk > > > show a NTFS partition. It's worse than that, thanks again Microsoft! Reference: https://en.m.wikipedia.org/wiki/Partition_type MBR partition type 7 can be IFS, HPFS (both OS/2), NTFS or ExFAT (both MS). It's kinda understandable between HPFS and NTFS; well before FUSE there was read safely / write maybe code for both that was largely identical. I used it to read old OS/2 disks up to about FreeBSD 9. But overlaying NTFS with ExFAT was unforgivable really ... as this thread adequately demonstrates. > > > So here is what you should check: > > > > > > 1. /boot/loader.conf contains: > > > > > > fuse_load="YES" > > # Enable FUSE functionality for exfat filesystem mounting > > fuse_enable="YES" > > fuse_load="YES" > > THe _enable settings belong to /etc/rc.conf; /boot/loader.conf > uses the _load settings. > > > 2. Mount device manually, read-only, perform checks, then > > > unmount again: > > > > > > # mount.exfat -o ro /dev/da0s1 /mnt/memstick > > > # df -f /mnt/memstick > > > # ls -R /mnt/memstick > > > # umount /mnt/memstick > Should have been "df -h". :-) > > Intention: Compare "dmesg" entry (device reporting size) > with filesystem size, and then compare to what's written > on the device itself. > > A series of mount.exfat / umount / mount.exfat on fbsd seemed to > > clear it up. > There are also fsck tools for most filesystems, and there > probably is one for exFAT, just in case. sysutils/exfat-utils : exfatfsck(8) also mkexfatfs(8), dumpexfat(8), exfatlabel(8). > > > NB: mount.exfat does not have a manpage or help option. > > > > $ apropos exfat > > mount.exfat-fuse(8) - mount an exFAT file system > Okay, thanks for that pointer. It's not obvious that you > need the manpage of "mount.exfat-fuse" when you want to > know the options of "mount.exfat" though... sysutils/fusefs-exfat is installed as mount.exfat-fuse, with a symlink for /usr/local/sbin/mount.exfat Unfortunately there's no such link for manpage mount.exfat-fuse(8) > > > Why don't you simply run newfs on the stick, with the > > > filesystem *you* _want_ to use? You can use UFS it you > > > want to, works perfectly well. ;-) > > > > I want to be able to read it from an android phone, and I was/am > > concerned reformatting may make it unreadable by the phone. I was pleasantly surprised to hear that Android reads/writes exfat. I installed it for Ventoy, but can now directly write from the phone, ta! I also have some 64G USB2 sticks that become useful with exfat. > That's a trap to easily fall into: exFAT does not identify > itself as exFAT or FAT, but as NTFS, but it is not NTFS. Nor is it HPFS (in about 7 years of OS/2 in the nineties, I can't recall losing a single file to HPFS) ~~~~~~~ To address points Gary raises in the abovementioned PR: -> I would consider it a bug. Documenting ambiguous behavior does not make it any less of a problem. Agreed. -> It affects anyone who attempts to mount a usb stick with >32GB of storage. Well, and smaller exfat media too. -> If gpart can tell that a partition is exFAT, it should report it as such to avoid confusion It doesn't seem like a small 'if'. It means adding code to detect the real type in use - and there may be none before a makefs. And it's not binary; IFS and HPFS as well. Maybe there's some simple test to delineate between those four, some clear signature? I don't know; you'd need to examine fsck (or analogous) code, test and present it to the gpart maintainer. Good luck!