Accessing both Windows FAT and NTFS file systems from Linux is quite easy, with tools like NTFS-3G. However (following with the MS tradition of making itself incompatible with everything else, to thwart competition), doing the opposite (accessing Linux file systems from Windows) is more complicated. One would have to guess why (and how!) closed and proprietary and technically inferior file systems can be read by free software tools, whereas proprietary software with such a big corporation behind is incapable (or unwilling) to interact with superior and free software file systems. Why should Windows users be deprived of the choice over JFS, XFS or ReiserFS, when they are free? MS techs are too dumb to implement them? Or too evil to give their users the choice? Or, maybe, too scared that if choice is possible, their users will dump NTFS? Neither explanation makes one feel much love for MS, does it?
This stupid inability of Windows to read any of the many formats Linux can use gives rise to problems for not only Windows users, but also Linux users. For example, when I format my external hard disks or pendrives, I end up wondering if I should reserve some space for a FAT partition, so I could put there data to share with hypothetical Windows users I could lend the disk to. And, seriously, I abhor wasting my hardware with such lousy file systems, when I could use Linux ones.
Anyway, there are some third-party tools to help us which such a task. I found at least two:
I have used the first one, but as some blogs point out (e.g. BloggUccio), ext2fsd is required if the inode size is bigger than 128 B (256 B in some modern Linux distros).
It is a simple exe file you can download from fs-driver.org. Installing it consists on the typical windows next-next-finish click-dance. In principle the defaults are OK. It will ask you about activating "read-only" (which I declined. It's less safe, but I would like to be able to write too), and something about large file support (which I accepted, because it's only an issue with Linux kernels older than 2.2... Middle Age stuff).
Formatting the hard drive
In principle, Ext2IFS can read ext2/ext3 partitions with no problem. In practice, if the partition was created with an inode size of more than 128 bytes, Ext2IFS won't read it. To create a "compatible" partition, you can mkfs it with the -I flag, as follows:
# mkfs.ext3 -I 128 /dev/whatever
I found out about the 128 B inode thing from this forum thread [es].
What I have done, and tested, is what follows: I format my external drives with almost all of it as ext3, as described, leaving a couple of gigabytes (you could cut down to a couple of megabytes if you really want to) for a FAT partition. Then copy the Ext2IFS_1_11a.exe executable to that partition.
Whenever you want to use that drive, Linux will see two partitions (the ext3 and the FAT one), the second one of which you can ignore. From Windows, you will see only a 2GB FAT partition. However, you will be able to open it, find the exe, double-click, and install Ext2IFS. After that, you can unplug the drive and plug it again...et voilà, you will see the ext3 partition just fine.