Unable to mount fat drive in linux

This is sort of a continuation from How to mount a .bin image file in linux but it morphed into a different problem altogether, so I figured I'd ask a new question with the relevant info rather than making a gigantic comment chain.

I have a drive, which I believe is fat32, that I cannot mount:

> file-sk: /dev/dm-2: x86 boot sector, code offset 0x58, OEM-ID "BSD 4.4",
sectors/cluster 64, heads 255, sectors 3907024821 (volumes > 32 MB) , FAT (32 bit),
sectors/FAT 476816, reserved3 0x1000000, reserved 0x1, serial number 0x5cb415f7,
label: "SOURCE-PSE " DOS executable (COM), boot code –

When I try to mount, it gives the filesystem/badblock error, and this is the dmesg

> mount -o ro -t vfat /dev/dm-2 /mnt/bsp2
mount: wrong fs type, bad option, bad superblock on /dev/mapper/loop1p1,
       missing codepage or helper program, or other error
       In some cases useful info is found in syslog - try
       dmesg | tail  or so

> dmesg | tail
[155824.015650] FAT: IO charset iso8859-1 not found

User osgx led me down the path that the reason that iso isn't found, is because it's not loaded in the kernel. My kernal config is here: http://pastebin.com/j7iS7RF3

I listed the relevant mods I could find, and modprobed all of them.

> modprobe -l | grep fs
kernel/fs/nfs_common/nfs_acl.ko
kernel/fs/nls/nls_cp437.ko
kernel/fs/binfmt_misc.ko
kernel/fs/configfs/configfs.ko
kernel/fs/fscache/fscache.ko
kernel/fs/squashfs/squashfs.ko
kernel/fs/fat/fat.ko
kernel/fs/fat/vfat.ko
kernel/fs/fat/msdos.ko
kernel/fs/isofs/isofs.ko
kernel/fs/nfs/nfs.ko
kernel/fs/exportfs/exportfs.ko
kernel/fs/nfsd/nfsd.ko
kernel/fs/lockd/lockd.ko
kernel/fs/cifs/cifs.ko
kernel/fs/ufs/ufs.ko
kernel/fs/autofs4/autofs4.ko
kernel/fs/xfs/xfs.ko
kernel/fs/btrfs/btrfs.ko

The important one I believed to me isofs. But when I run modinfo on it, it says it's just iso9660. Since I'm assuming I need iso8559-1 (or 7), I guess it's not available? It's clearly listed in the kernel config as m which I thought it meant it would install as a module, but I'm not seeing those iso types available. Any help would be MUCH appreciated. Thanks!


Solution 1:

It's a language (character set) issue, rather than a pure filesystem one.
you need option CONFIG_NLS_ISO8859_1=y.

Update for modularity
Given that your kernal already supports module loading:
CONFIG_NLS_ISO8859_1=m
make && make modules_install
modprobe nls_iso8859-1