EXT2 IFS for Windows NT Version 0.2 written by John Newbigin Copyright © 2003 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... <#Download> Project Status Version 0.2 has many improvements over version 0.1, and with over 12 months development you would hope so. 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. 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 and Microsoft Windows 2000 (NT 5.0). 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) The driver has not been tested but should work on the following operating systems: * Windows NT 5.1 (Often called Windows XP) * 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. 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. Download Binary only. For people who want to use the driver under NT4, Windows 2000 or Windows XP ext2ifs-0.2.zip 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 ext2ifs-0.2-src.zip Installation Instructions Downlod the .zip file. Extract all the files into a directory like c:\apps\ext2ifs. Run service.exe, install the driver, create some drive letters and start the driver. 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. Available for free. You can't get the nt4ddk from MS anymore but you can find it using google. * ntifs.h. From MS for $1000US 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 * Bo Branten's Projects page http://www.acc.umu.se/~bosse/ This is the home of the GNU ntifs.h and other IFS code written by Bo. * http://www.microsoft.com/ddk/IFSkit/ The official Microsoft IFS info page. Unfortunatly the IFS kit still costs $1000 US. * http://www.sysinternals.com. 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. * http://www.amazon.com/exec/obidos/ASIN/1565922492 Windows NT File System Internals : A Developer's Guide. by Rajeev Nagar. The bible of writing IFS drivers for NT. ------------------------------------------------------------------------ /Last modified // 20030127// Maintained by John Newbigin http://uranus.it.swin.edu.au/~jn/