Update for: Service pack 2
[www.jankratochvil.net.git] / project / captive / doc / About.pm
1 # $Id$
2 # Captive project doc About page Perl template.
3 # Copyright (C) 2003-2005 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
4
5 # This program is free software; you can redistribute it and/or modify
6 # it under the terms of the GNU General Public License as published by
7 # the Free Software Foundation; exactly version 2 of June 1991 is required
8
9 # This program is distributed in the hope that it will be useful,
10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12 # GNU General Public License for more details.
13
14 # You should have received a copy of the GNU General Public License
15 # along with this program; if not, write to the Free Software
16 # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
17
18
19 package project::captive::doc::About;
20 require 5.6.0;  # at least 'use warnings;' but we need some 5.6.0+ modules anyway
21 our $VERSION=do { my @r=(q$Revision$=~/\d+/g); sprintf "%d.".("%03d"x$#r),@r; };
22 our $CVS_ID=q$Id$;
23 use strict;
24 use warnings;
25
26 use My::Web;
27
28
29 sub handler
30 {
31         BEGIN { Wuse 'project::captive::doc::Macros'; }
32 project::captive::doc::Macros->init(
33                 "__PACKAGE__"=>__PACKAGE__,
34                 "title"=>'Captive NTFS Developer Documentation: About',
35                 "rel_prev"=>'./',
36                 "rel_next"=>'Architecture.pm',
37                 );
38
39
40 print <<"HERE";
41
42
43 <h1>About</h1>
44
45         <h2 id="reasons">Reasons for the Implementation</h2>
46
47                 <p>Currently there is no possibility to any of the available $freespeech
48                         ($freespeech used in the following text in the meaning of
49                         &quot;@{[ a_href 'http://www.gnu.org/philosophy/free-sw.html','free as in speech' ]}&quot;)
50                 operating systems to reliably write to the most common disk partition
51                 filesystem type &ndash; <span class="productname">Microsoft NTFS</span>. It would
52                 be already supported a long time ago but there is no proper documentation of
53                 <span class="productname">NTFS</span> filesystem data structures available.
54                 Since <span class="productname">Microsoft</span> corporation continues in its
55                 propagation of <span class="productname">Microsoft Windows NT</span>
56                         (<span class="productname">NT</span> identifier used in the following text
57                         applies to all the products of <span class="productname">Microsoft</span>
58                         <span class="productname">NT</span> series such as
59                         <span class="productname">NT&nbsp;4.0</span>,
60                         <span class="productname">2000</span> as NT-5.0
61                         and
62                         <span class="productname">XP</span> as NT-5.1.)
63                 based operating systems <span class="productname">NTFS</span> is the default
64                 disk file system type for vendor preinstalled <span class="productname">Microsoft Windows</span>.</p>
65
66                 <p>Unfortunately the <span class="productname">NTFS</span> filesystem has too
67                 complex data structure to allow a complete reverse enginnering process in
68                 reasonable time. Currently available $freespeech solutions such as $LinuxNTFS
69                 filesystem have already implemented reliable reverse
70                 engineered read-only access. However <span id="reliability">reliabile</span>
71                 read-write part of the access would require much better
72                 knowledge of the <span class="productname">NTFS</span> data structures.
73                 Currently only rewriting of already existing file data blocks is supported
74                 by $LinuxNTFS &mdash; no file creation, no file deletion, no directory operations etc.
75                 Also any future versions of <span class="productname">NTFS</span> filesystem
76                 would require another major reverse engineering effort.</p>
77
78
79         <h2 id="challenges">Challenges of the Project</h2>
80
81                 <p>The <span id="NTFSgoal">ultimate goal</span> of this project is definitely the
82                 free implementation of @{[ a_href '#reliability','reliable' ]} read-write <span
83                 class="productname">NTFS</span> filesystem driver. This project chose to
84                 solve this problem in the style of $Wine project by using the original binary
85                 <span class="fname">ntfs.sys</span> and emulating all the required layers of
86                 <span class="productname">Microsoft Windows NT</span> for it.</p>
87
88                 <p>Unfortunately this effort is tainted by only partial and generally
89                 insufficient documentation of API between filesystem driver
90                 (<span class="fname">ntfs.sys</span>) and the
91                 <span class="productname">Microsoft Windows NT</span>
92                 (&quot;@{[ a_href 'http://mail.gnu.org/archive/html/libtool/2000-09/msg00000.html','W32' ]}&quot;
93                 in the following text) kernel <span class="fname">ntoskrnl.exe</span>. Note
94                 that this API is a different than the one being used in the $Wine project
95                 since <span class="productname">Wine</span> implements only the user space
96                 part of W32.</p>
97
98
99         <h2 id="versions">Microsoft Windows Versions Compatibility</h2>
100
101                 <p>Currently this project supports driver files of
102                 <span class="productname">Microsoft Windows XP</span> (NT-5.1)
103                 in the following releases (plus some hotfixes):</p>
104
105                 <ul>
106                         <li>Microsoft Windows XP Service Pack 2 Checked Build U.S.</li>
107                         <li>Microsoft Windows XP Service Pack 2 Free Build U.S.</li>
108                         <li>Microsoft Windows XP Service Pack 1/1a Checked Build U.S.</li>
109                         <li>Microsoft Windows XP Service Pack 1/1a Free Build U.S.</li>
110                         <li>Microsoft Windows XP (No Service Pack) Checked Build U.S.</li>
111                         <li>Microsoft Windows XP (No Service Pack) Free Build U.S.</li>
112                 </ul>
113
114                 <p>The latest list of supported driver files can be found in:
115                 @{[ captive_srcfile 'src/install/acquire/w32-mod-id.captivemodid.xml' ]}</p>
116
117                 <p>Microsoft Windows NTFS filesystem driver is capable of accessing even
118                 the older formats of the filesystem. Porting to Microsoft Windows 2003
119                 Server is expected to be done soon. There can be also a danger of Microsoft
120                 Windows upgrading NTFS disk filesystem where you would no longer be able
121                 to access your NTFS disk by your original
122                 <span class="productname">Microsoft Windows</span> version.
123                 This upgrade does not happen as it occurs only during complete CD-ROM
124                 Microsoft Windows system installation &ndash; such operation is not performed
125                 by this project.</p>
126
127                 <p>There is no problem technically obtaining the needed driver files of
128                 <span class="productname">Microsoft Windows XP</span> as they are freely
129                 downloadable at:
130                 @{[ a_href 'http://www.microsoft.com/WindowsXP/pro/downloads/servicepacks/sp1/checkedbuild.asp' ]}</p>
131                 <p>There may be @{[ a_href 'Architecture.pm#law','legal reasons' ]} you would not be allowed
132                 to use there files if you own license to a different version of
133                 <span class="productname">Microsoft Windows</span>. Legal rights will very
134                 depending on your country.</p>
135
136
137 HERE
138
139
140 exit;
141 }
142 1;