Can't mount FAT32 drive under Ubuntu Linux

I have a 320GB USB drive with a single large FAT32 partition. The volume mounts perfectly fine on my Mac OS X 10.5.8 machine and Disk Utility on the mac reports no issues with the volume. I can read/write all data on the drive.

However when I connect the drive to my Ubuntu 9.10 Karmic system, the partition does not mount. dmesg|tail says:

[ 2752.334822] scsi3 : SCSI emulation for USB Mass Storage devices
[ 2752.335040] usb-storage: device found at 3
[ 2752.335044] usb-storage: waiting for device to settle before scanning
[ 2757.330301] usb-storage: device scan complete
[ 2757.331005] scsi 3:0:0:0: Direct-Access     WD       3200AAK External 1.65 PQ: 0 ANSI: 0
[ 2757.331772] sd 3:0:0:0: Attached scsi generic sg2 type 0
[ 2757.355647] sd 3:0:0:0: [sdb] 625142448 512-byte logical blocks: (320 GB/298 GiB)
[ 2757.360737] sd 3:0:0:0: [sdb] Write Protect is off
[ 2757.360749] sd 3:0:0:0: [sdb] Mode Sense: 00 00 00 00
[ 2757.360755] sd 3:0:0:0: [sdb] Assuming drive cache: write through
[ 2757.367618] sd 3:0:0:0: [sdb] Assuming drive cache: write through
[ 2757.367631]  sdb: sdb1
[ 2762.797622] sd 3:0:0:0: [sdb] Assuming drive cache: write through
[ 2762.797636] sd 3:0:0:0: [sdb] Attached SCSI disk
[ 2822.866228] FAT: bogus number of reserved sectors
[ 2822.866237] VFS: Can't find a valid FAT filesystem on dev sdb1.

When I run fsck.vfat -a /dev/sdb1 I get:

root@cartman:~# fsck.vfat -a /dev/sdb1
dosfsck 3.0.3, 18 May 2009, FAT32, LFN
Logical sector size is zero.

Googling "vfat Logical sector size is zero" produced no consensus as to the solution. I would prefer not to have to completely reformat the disk if possible because it contains about 280GB of data I would rather not have to find a temporary home for. Any suggestions?


For me, fsck.vfat /dev/sdd1 returning "Logical sector size is zero." was because it was not vfat, but rather newer exfat. So I had to install tools appropriate tools (apt-get install exfat-utils exfat-fuse) to be able to mount and fsck it (by using fsck.exfat /dev/sdd1 instead, or even better just fsck /dev/sdd1 and have fsck autodetect the filesystem)


First, I would try to get access to chkdsk.exe if possible and run that on the drive just incase there is a problem with the filesystem and linux is just being much more picky about it.

It seems that fat32 has a backup boot sector at sector 6. You could always try to replace sector 0 with that sector and see if it helps you out, but I would probably try the chkdsk route and see if that helps you out at all.