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