+link rel
[www.jankratochvil.net.git] / project / captive / doc / About.html.pl
1 #! /usr/bin/perl
2
3 # $Id$
4 # Captive project doc About page Perl template.
5 # Copyright (C) 2003 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
6
7 # This program is free software; you can redistribute it and/or modify
8 # it under the terms of the GNU General Public License as published by
9 # the Free Software Foundation; exactly version 2 of June 1991 is required
10
11 # This program is distributed in the hope that it will be useful,
12 # but WITHOUT ANY WARRANTY; without even the implied warranty of
13 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14 # GNU General Public License for more details.
15
16 # You should have received a copy of the GNU General Public License
17 # along with this program; if not, write to the Free Software
18 # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
19
20
21 package project::captive::doc::About;
22 require 5.6.0;  # at least 'use warnings;' but we need some 5.6.0+ modules anyway
23 our $VERSION=do { my @r=(q$Revision$=~/\d+/g); sprintf "%d.".("%03d"x$#r),@r; };
24 our $CVS_ID=q$Id$;
25 use strict;
26 use warnings;
27
28 BEGIN{ open F,"Makefile"; our $top_dir=pop @{[split /\s/,(grep /^top_srcdir/,<F>)[0]]}; eval "use lib '$top_dir'"; close F; }
29 use My::Web;
30 require CGI;
31 BEGIN { Wuse 'project::captive::doc::Macros'; }
32
33
34 project::captive::doc::Macros->init(
35                 "__PACKAGE__"=>__PACKAGE__,
36                 "title"=>'Captive NTFS Developer Documentation: About',
37                 "rel_prev"=>'Index.html.pl',
38                 "rel_next"=>'Architecture.html.pl',
39                 );
40
41
42 print <<"HERE";
43
44
45 <h1>About</h1>
46
47         <a name="reasons"><h2>Reasons for the Implementation</h2></a>
48
49                 <p>Currently there is no possibility to any of the available $freespeech
50                         ($freespeech used in the following text in the meaning of
51                         &quot;@{[ a_href 'http://www.gnu.org/philosophy/free-sw.html','free as in speech' ]}&quot;)
52                 operating systems to reliably write to the most common disk partition
53                 filesystem type &ndash; <span class="productname">Microsoft NTFS</span>. It would
54                 be already supported a long time ago but there is no proper documentation of
55                 <span class="productname">NTFS</span> filesystem data structures available.
56                 Since <span class="productname">Microsoft</span> corporation continues in its
57                 propagation of <span class="productname">Microsoft Windows NT</span>
58                         (<span class="productname">NT</span> identifier used in the following text
59                         applies to all the products of <span class="productname">Microsoft</span>
60                         <span class="productname">NT</span> series such as
61                         <span class="productname">NT&nbsp;4.0</span>,
62                         <span class="productname">2000</span> as NT-5.0
63                         and
64                         <span class="productname">XP</span> as NT-5.1.)
65                 based operating systems <span class="productname">NTFS</span> is the default
66                 disk file system type for vendor preinstalled <span class="productname">Microsoft Windows</span>.
67
68                 <p>Unfortunately the <span class="productname">NTFS</span> filesystem has too
69                 complex data structure to allow a complete reverse enginnering process in
70                 reasonable time. Currently available $freespeech solutions such as $LinuxNTFS
71                 filesystem have already implemented reliable reverse
72                 engineered read-only access. However <a name="reliability">reliabile</a>
73                 read-write part of the access would require much better
74                 knowledge of the <span class="productname">NTFS</span> data structures.
75                 Currently only rewriting of already existing file data blocks is supported
76                 by $LinuxNTFS &mdash; no file creation, no file deletion, no directory operations etc.
77                 Also any future versions of <span class="productname">NTFS</span> filesystem
78                 would require another major reverse engineering effort.</p>
79
80
81         <a name="challenges"><h2>Challenges of the Project</h2></a>
82
83                 <p>The <a name="NTFSgoal">ultimate goal</a> of this project is definitely the
84                 free implementation of @{[ a_href '#reliability','reliable' ]} read-write <span
85                 class="productname">NTFS</span> filesystem driver. This project chose to
86                 solve this problem in the style of $Wine project by using the original binary
87                 <span class="fname">ntfs.sys</span> and emulating all the required layers of
88                 <span class="productname">Microsoft Windows NT</span> for it.</p>
89
90                 <p>Unfortunately this effort is tainted by only partial and generally
91                 insufficient documentation of API between filesystem driver
92                 (<span class="fname">ntfs.sys</span>) and the
93                 <span class="productname">Microsoft Windows NT</span>
94                 (&quot;@{[ a_href 'http://mail.gnu.org/archive/html/libtool/2000-09/msg00000.html','W32' ]}&quot;
95                 in the following text) kernel <span class="fname">ntoskrnl.exe</span>. Note
96                 that this API is a different than the one being used in the $Wine project
97                 since <span class="productname">Wine</span> implements only the user space
98                 part of W32.</p>
99
100
101         <a name="versions"><h2>Microsoft Windows Versions Compatibility</h2></a>
102
103                 <p>Currently this project supports only driver files of
104                 <span class="productname">Microsoft Windows XP</span> (NT-5.1)
105                 in the following releases:</p>
106
107                 <ul>
108                         <li>Microsoft Windows XP Service Pack 1a Checked Build U.S.</li>
109                         <li>Microsoft Windows XP Service Pack 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                 There may be @{[ a_href 'Architecture.html.pl#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 project::captive::doc::Macros->footer();