views:

67

answers:

2

Why are there no good drivers for Windows for reading ext2/3/4 filesystems? Googling around indicates that there's 2 or 3 out there, but all of them have problems. Is there some technical inconsistency that makes it difficult to correctly code up something that would enable me to open up My Computer and work with an extN partition just like NTFS or FAT? I thought one of the benefits of open sources and standards was that problems like this should be solved fairly quickly.

+1  A: 

I haven't used it myself, but a coworker of mine has used Ext2 IFS for Windows without any problems.

One of the benefits of open sources and standards is that problems like this can be solved fairly quickly. If no one is sufficiently motivated to work on a problem - whether that motivation comes from money, personal need, fame, whatever - then the problem is unlikely to get solved. (The closed source world is no different.) It probably doesn't help that relatively few open source developers have experience hacking on Windows kernel mode device drivers. Writing device drivers is a specialized skill. There are developers who understand the ext2/3/4 code very well and are very willing to work on it, but odds are that the the people experienced enough at hacking on the Linux kernel to work on the ext2/3/4 drivers are probably primarily Linux users (and so don't much care about writing drivers for Windows).

With regards to driver signing: It's my understanding that, starting with Windows Vista, Microsoft doesn't have to sign or certify your drivers for them to be installed without warnings, but you do need a code signing certificate. These are somewhere in the neighborhood of $400 - $500 a year (see Verisign's web site, for example), and most non-commercial developers aren't interested in paying out that kind of money. There are methods for disabling driver signing requirements, but none of them are something the average user is likely to try, which would hinder the acceptance of a non-signed driver.

I don't know how the Ext2 IFS for Windows handles it; either its author got a certificate somehow, or it requires that you disable the driver signing requirements.

So, to summarize, the best ext2/3/4 developers probably don't have much need for Windows, and driver signing discourages would-be open source driver developers for Windows, and the availability of NTFS for Linux means that you can use NTFS instead of ext2/3/4 to share data between Linux and Windows. These three factors work together to remove a lot of the interest in developing ext2/3/4 for Windows.

Josh Kelley
OK, but I don't get the impression that there's a lack of interest in this subject. Ext2/3 and now 4 driver code exists and (must be) well understood by those in the community that write and maintain it. This is what makes me suspect that there's a deeper technical hurdle that prevents a good, solid driver from being written for Windows.
Kelsey Rider
+1  A: 

Driver signing.

Microsoft's driver signing is by its own nature incompatible with the GPL and unsigned drivers don't work anymore.

Joshua
I don't think that driver signing is inherently incompatible with open source, but the requirement of spending hundreds of dollars a year for a code signing certificate is a serious roadblock for independent developers.
Josh Kelley
You mean, a driver not signed by M$ won't work (and there's no easy hack to get around that)?Also, if this is the case, how is it that things like Ext2 IFS work?
Kelsey Rider
In 32 bit mode you can still set a policy that allows unsigned drivers to load.
Joshua
@Josh -- it's incompatible for licensing reasons. If the resulting binary doesn't work if compiled from source code you have not complied with the GPL.
Joshua
@Joshua: But GPL'ed drivers exist (such as VirtualBox's or ext2fsd), and the question and my comment were about open source in general, not the GPL in particular. My understanding of the GPL is that it does not necessarily forbid writing signed drivers for a closed source OS, but discussing the exact requirements of the GPL is outside the scope of this question.
Josh Kelley