I suppose a third way might be to create a kind of Rosetta Stone layer in the product, that emulates a block device with FAT filesystem on the outside, but cleverly translates this to some other filesystem/database on the inside of the device.

I've had ideas for this kind of thing for years now (with the empeg in mind), but just never seem to have time to work on it or patent it (ha!).

Cheers