# $Id$ # Captive project doc About page Perl template. # Copyright (C) 2003-2005 Jan Kratochvil # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; exactly version 2 of June 1991 is required # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA package project::captive::doc::About; require 5.6.0; # at least 'use warnings;' but we need some 5.6.0+ modules anyway our $VERSION=do { my @r=(q$Revision$=~/\d+/g); sprintf "%d.".("%03d"x$#r),@r; }; our $CVS_ID=q$Id$; use strict; use warnings; use My::Web; sub handler { BEGIN { Wuse 'project::captive::doc::Macros'; } project::captive::doc::Macros->init( "__PACKAGE__"=>__PACKAGE__, "title"=>'Captive NTFS Developer Documentation: About', "rel_prev"=>'./', "rel_next"=>'Architecture.pm', ); print <<"HERE";

About

Reasons for the Implementation

Currently there is no possibility to any of the available $freespeech ($freespeech used in the following text in the meaning of "@{[ a_href 'http://www.gnu.org/philosophy/free-sw.html','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 $freespeech solutions such as $LinuxNTFS 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 $LinuxNTFS — 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 @{[ a_href '#reliability','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 ("@{[ a_href 'http://mail.gnu.org/archive/html/libtool/2000-09/msg00000.html','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 only driver files of Microsoft Windows XP (NT-5.1) in the following releases:

The latest list of supported driver files can be found in: @{[ captive_srcfile '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: @{[ a_href 'http://www.microsoft.com/WindowsXP/pro/downloads/servicepacks/sp1/checkedbuild.asp' ]}

There may be @{[ a_href 'Architecture.pm#law','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.

HERE exit; } 1;