EXT2 IFS for Windows NT/2K/XP
Version 0.3
written by John Newbigin
Copyright © 2004 John Newbigin
jn@it.swin.edu.au

http://uranus.it.swin.edu.au/~jn/linux/ext2ifs.htm

This is the home page for my file system driver for NT which can read the Linux Second Extended File System (EXT2) and Third Extended File System (EXT3).

I  just want to download it...

Project Status

Version 0.3 has fixed a long standing bug with large disks.  Under Windows 2000 the driver should be quite stable and can be considered beta quality.  NT4 testing has been left behind and so the NT4 driver should be considered alpha quality.

This version probably does not work under XP SP2.  I have started to test this and I hope to update the driver soon to properly support XP.

Please read the information on this page carefully. There is important information that you need to be aware of before you try to use this driver.

What is EXT2IFS?

EXT2IFS is an Installable File System Driver (IFS) for Microsoft Windows NT 4.0,  Microsoft Windows 2000 (NT 5.0) and Microsoft Windows XP (NT 5.1).

The driver can read the Second Extended File System (EXT2) and Third Extended
File System (EXT3)

Why would I want EXT2IFS?

If you have a PC which can dual boot both Linux and NT then this driver may be of some use. By installing the driver you will be able to read files off your Linux filesystems using all the standard methods you use to access NTFS and FAT filesystems. That means you can use Explorer, cmd.exe and any other application to copy and read the files.

On what systems does EXT2IFS work?

EXT2IFS has been specifically written to run on the following operating systems:

  • Windows NT 4.0 Service Pack 6a.
  • Windows NT 5.0 Service Pack 3. (Often called Windows 2000)
  • Windows NT 5.1 (Often called Windows XP)

 

The driver has not been tested but should work on the following operating systems:

  • Windows NT 5.2 (Often called Windows .NET)

The driver has not been tested and probably will not work on the following operating systems:

  • Windows NT 3.1
  • Windows NT 3.5
  • Windows NT 3.51

The driver will NOT work on the following operating systems:

  • Windows 95
  • Windows 98
  • Windows ME
  • DOS
  • Windows 3.1*
  • Win32s*
  • Linux
  • OS2
  • any other operating system you can think of.

(* Strictly speaking this are not OS)

What can EXT2IFS do?

EXT2IFS is a read only driver. It provides access similar to other read only media like CDs. You can view directory listings and read files. You can not write files, add files, delete files etc.

You can share your ext filesystems so they can be read over the network. This has not been fully tested but I don't know of any reason why it should not work. 

What can't EXT2IFS do?

There are many things which are not yet implemented in EXT2IFS. Some of these are just because I haven't got round to them and others are not required until write support is added:

  • Asynchronous IRP completion
  • Write anything
  • FASTIO
  • Notification
  • Locking
  • OpLocks
  • wildcard directory listings
  • Use removable media (floppy disks)

It still shits me that there are so many ways in which things as simple as a directory listing can be done under NT.  I have implemented all the ways which seem to be used at the moment.  Another stupid thing is that wildcard matching in directory listings is handled by the FS driver.  This is fine for 8.3 FAT filesystems but UNIX/Linux users expect the power and flexibility of regular expressions.  This is clearly a feature which belongs in user space.  Under NT, every filesystem has to re-implement it (NTFS, FAT, CDFS(ISO9660) and EXT2).  This might mean you can put fancy smancy features into NTFS but is the complexity really worth it?  I don't think so.

What things are not tested in EXT2IFS?

I am sure there are many things which will not work to some degree.  Memory Mapping does not seem to be working under NT4 but does under NT5 

Who wrote EXT2IFS?

The majority of the code has been written by Me, John Newbigin. The code however uses a lot of ideas from Rajeev Nagar's book and Bo Branten's RomFS driver. It is my belief that all the code in the driver is covered by the GPL. Although the majority of the code is my work and therefore copyrighted by me, some of it is no doubt Bo's and I do use some header file's from the Linux kernel which states that is was written by Remy Card but is copyright Linus Torvalds. The driver is compiled against the GNU ntifs.h which is maintained by Bo Branten.

How do I install the driver?

I have written a custom install application which can install and configure the driver. Although there are in theory other ways of installing the driver I recommend that you use this install application for all installation, configuration and un-installation.

How do the drive letters work?

Under NT 4.0, there is a F*&!ed up way of assigning drive letters to partitions based on some stupid method which dates back to the days of DOS. Lucky for us, this magic only occurs for the filesystems that Microsoft know about and so we get to assign our own drive letters. There are some magic registry keys which are created which tell the Win32 subsystem to create some extra drive letters. 

These are pointed to the NT object which represents the partition which contains your EXT2 filesystem. The object manager then eventually asks the IFS if it can mount the partition which hopefully it does and from then on, your drive letter should work. 

In NT 5.0, much of the drive letter assigning has been changed. You can still use the NT 4.0 method but there are newer, more useful methods available. At last Microsoft are getting rid of drive letters and you can mount filesystems on a directory like you do under Linux. This is far from perfect but you can now use any of these three methods for accessing your EXT2 filesystems (called volumes by NT):

  • Assign a drive letter to the volume
  • Mount the volume on an empty NTFS directory
  • Mount the volume on any EXT2 directory (Not Yet Implemented)

The first two methods are standard NT 5.0 methods and can be configured by the Disk Management Console plugin (diskmgmt.msc) or the install application. The third is EXT2 specific at this point in time and can only be configured with the install application.

Unfortunately, Windows XP does not create volume objects for Linux filesystems which means the new way does not work.  Until I work out how to make the volumes, use the NT4 method.  This means you will have to reboot to apply the changes.

Do I need a File System Recogniser?

No. EXT2IFS can recognise EXT2 and EXT3 filesystems without the help of a recogniser. You can use one if you want but I don't see the point. Given that you are installing this driver you have EXT filesystems and this driver will end up being loaded so why add another driver which does not do anything? 

What about debug information?

The driver will spew out heaps of debug info. If you do not have a kernel debugger you could try your luck with DebugView from www.sysinternals.com. If you do not want to see the debug output, you can just ignore it.

Checked or Free?

This is a checked build of the driver. It works under a Free build of NT. Unless you are actively developing the driver, there is probably no need to use a checked build of NT.

What about EXT3?

EXT3 uses the same on disk structure as EXT2. This driver can read it. If there are entries in the journal which have not been written to disk then you might not have an accurate view of some data but apart from that it should not be a problem.

What about ReiserFS?

ReiserFS has nothing to do with EXT2 and is totally not supported by EXT2IFS. You might want to try these tools instead (all untested by me):

 

Download

Binary only.  For people who want to use the driver under NT4, Windows 2000 or Windows XP

File

Description

ext2ifs-0.3.zip Driver and install program
ext2ifs-0.2.zip Old version of the driver and install program
service-0.2b.exe Special version of service.exe for people having problems seeing the buttons and tabs.

Source code.  For people who are crazy enough to want to know how the driver works.  Also includes the (Delphi) source code to the install program and some test programs I use.

File

Description

ext2ifs-0.3-src.zip Source code
ext2ifs-0.2-src.zip Old version of source code

 

Installation Instructions

Download the .zip file.  Extract all the files into a directory like c:\apps\ext2ifs.  Run service.exe.  Read the introduction carefully so you know what you are getting yourself into.  Click on "Step 1".  Click on "Install", Click on "Step 2".  Create some drive letters (double click to open the appropriate dialog), Click on "Step 3" and click start.

(Note: If you use large fonts you might not be able to see the "Step 1", "Step 2" etc. tabs.  If you can't see the tabs, try adjusting your windows font size)

Uninstallation Instructions

Run service.exe

On step 1 Click uninstall.  This will stop Windows from being able to load the driver.  After this is done it is safe to delete ext2fs.sys from %SYSTEMROOT%\system32\drivers but I recommend that you leave it there. (It will not do any harm).

On step 2 delete any assignments you have made.  This is not strictly necessary but unless you have another ext2 driver then they will not be much good.  To remove a drive letter assignment, assign None.  To remove a path assignment, leave the folder blank, check Replace existing mount locations and click OK.

And you are done.  The driver will still be loaded until your next reboot but after that it will be gone.

 

Using the source code

To build the source code, you need a number of tools.

  • Visual C++.  I use version 6.0.  Other versions can work.
  • Windows NT/2000 DDK.  MS do their best to keep this out of reach but is part of the MSDN or you can order it on CD (for a cost) http://www.microsoft.com/whdc/ddk/winddk.mspx
  • ntifs.h. From M$ or for free from Bo Branton (see below)

Some other optional things

  • Checked build of NT4
  • Checked build of Windows 2000
  • Checked build of XP (If such a thing exists.  I can't find it on MSDN though I can get checked service packs)
  • vmware workstation.  This will save years off your development and testing time.
  • MS debugging tools

Other Resources

This is the home of the GNU ntifs.h and other IFS code written by Bo.

  • Ext2Fsd -- Ext2 File System Driver

This is another GPL driver written by Matt Wu.  This driver has write support.  I have not used this driver and don't know much about it.

The official Microsoft IFS info page.  The IFS kit used to cost ~$1000 US.  It is now only ~$150 but who would want it anyway?

Lots of tools for finding out what is going on inside your OS, including DebugView which will allow you to watch to debug output from the driver.

Windows NT File System Internals : A Developer's Guide.  by Rajeev Nagar.  The bible of writing IFS drivers for NT.

 

Some Other Drivers

Name Author Access Cost License Source
ext2ifs John Newbigin Read Only Free GPL Available
Ext2fsd Matt Wu Read/Write Free GPL Available
Ext2 ifs Stephan Schreiber Read/Write Free Freeware Not Available
ext2 drv Manoj Paul Joseph Read/Write Free LGPL Available

Frequent Asked Questions

This is just a mini FAQ.  Please look here before emailing me.

Why do some directories appear as files?

This bug should be fixed in version 0.3.  The problem was when a block number was translated to a 64 bit disk address, the result was being truncated to 32 bits.

Why can't I see my drives under Windows XP?

Use step 2b to assign drive letters.  You will have to reboot to activate them.

Why can't I see my ext3 drives?

ext3 is the same as ext2.  Your problem is not related to ext3.  Are you running windows XP (see previous answer).

 


Last modified 20060210
Maintained by John Newbigin http://uranus.it.swin.edu.au/~jn