Jan Kratochvil
Projects Products GIT Resume Contact
UNIX UNIX-devel Web Amiga MS-Windows MS-DOS Patches
Captive: The first free NTFS read/write filesystem for GNU/Linux


Previous document Parent Next document


Reasons for the Implementation

Currently there is no possibility to any of the available Free (Free used in the following text in the meaning of "free as in speech") operating systems to reliably write to the most common disk partition filesystem type – Microsoft NTFS. It would be already supported a long time ago but there is no proper documentation of NTFS filesystem data structures available. Since Microsoft corporation continues in its propagation of Microsoft Windows NT (NT identifier used in the following text applies to all the products of Microsoft NT series such as NT 4.0, 2000 as NT-5.0 and XP as NT-5.1.) based operating systems NTFS is the default disk file system type for vendor preinstalled Microsoft Windows.

Unfortunately the NTFS filesystem has too complex data structure to allow a complete reverse enginnering process in reasonable time. Currently available Free solutions such as Linux NTFS filesystem have already implemented reliable reverse engineered read-only access. However reliabile read-write part of the access would require much better knowledge of the NTFS data structures. Currently only rewriting of already existing file data blocks is supported by Linux NTFS — no file creation, no file deletion, no directory operations etc. Also any future versions of NTFS filesystem would require another major reverse engineering effort.

Challenges of the Project

The ultimate goal of this project is definitely the free implementation of reliable read-write NTFS filesystem driver. This project chose to solve this problem in the style of Wine project by using the original binary ntfs.sys and emulating all the required layers of Microsoft Windows NT for it.

Unfortunately this effort is tainted by only partial and generally insufficient documentation of API between filesystem driver (ntfs.sys) and the Microsoft Windows NT ("W32" in the following text) kernel ntoskrnl.exe. Note that this API is a different than the one being used in the Wine project since Wine implements only the user space part of W32.

Microsoft Windows Versions Compatibility

Currently this project supports driver files of Microsoft Windows XP (NT-5.1) in the following releases (plus some hotfixes):

The latest list of supported driver files can be found in: src/install/acquire/w32-mod-id.captivemodid.xml

Microsoft Windows NTFS filesystem driver is capable of accessing even the older formats of the filesystem. Porting to Microsoft Windows 2003 Server is expected to be done soon. There can be also a danger of Microsoft Windows upgrading NTFS disk filesystem where you would no longer be able to access your NTFS disk by your original Microsoft Windows version. This upgrade does not happen as it occurs only during complete CD-ROM Microsoft Windows system installation – such operation is not performed by this project.

There is no problem technically obtaining the needed driver files of Microsoft Windows XP as they are freely downloadable at: http://www.microsoft.com/WindowsXP/pro/downloads/servicepacks/sp1/checkedbuild.asp

There may be legal reasons you would not be allowed to use there files if you own license to a different version of Microsoft Windows. Legal rights will very depending on your country.



Previous document Next document