755669f05d71ebe99d06d6a374848ab52d54b924
[captive.git] / README
1 $Id$
2
3
4 Operation Captive
5 -----------------
6
7 Existing binary Microsoft Windows file system drivers were exploited
8 for accessing drives with possibly proprietary file system data structures.
9 Open file system API is provided to access these file system drivers.
10 Microsoft Windows system components required by these drivers
11 were analyzed and successfuly emulated in the GNU/Linux operating system.
12
13 The implementation allows applications running under the GNU/Linux operating
14 system to access NTFS drives. File system driver compatibility with VFAT,
15 ISO9660 and EXT2 is also provided.
16
17
18 Drivers Availability
19 --------------------
20
21 All the source packages involved in this project are GNU General Public License
22 2.0 (GPL-2.0) compatible (see the file "AUTHORS" for details). The purpose of
23 this project is to run the original Microsoft Windows drivers to get the best
24 filesystem compatibility and safety ever reachable. This is the method known
25 most by the Wine http://www.winehq.com/ project. Required driver files:
26
27   ntoskrnl.exe - Windows NT kernel; required for ANY use of this project.
28   ntfs.sys - NTFS filesystem driver; required to access NTFS disk drives.
29
30 Run captive-install-aquire(1) installer for proper guided steps.
31
32
33 Packaged Installations
34 ----------------------
35
36 Case #1 - All packages installed:
37     captive-install - Acquire needed MS-Windows drivers and setup /etc/fstab.
38     captive-lufs - Linux User File System module driver to be native filesystem.
39     captive - Base package of this project.
40     lufs >=0.9.6-1captive - Linux User File System engine for captive-lufs.
41     gnome-vfs-httpcaptive - Gnome-VFS httpcaptive:// method for captive-install.
42     ntfsprogs >=200309071734 - Readonly NTFS to get drivers by captive-install.
43     ntfsprogs-gnomevfs - Gnome-VFS readonly NTFS access used by captive-install.
44
45   Required W32 drivers were automatically found if Microsoft Windows XP is
46   installed on any (mounted or unmounted) NTFS or (mounted) FAT partition.
47   You may want to run captive-install-acquire(1) to check the drivers state
48   and possibly update them. Installer uses X Windows or console automatically.
49
50   Any NTFS disk partitions were automatically added to /etc/fstab.
51   These partitions are now available for mount by
52     mount /mnt/captive-DISK_LABEL
53   such as (if the label is empty)
54     mount /mnt/captive-
55
56 Case #2 - Packages without installer:
57     captive-lufs - Linux User File System module driver to be native filesystem.
58     captive - Base package of this project.
59     lufs >=0.9.6-1captive - Linux User File System engine for captive-lufs.
60
61   You must obtain W32 drivers - at least "ntoskrnl.exe" and "ntfs.sys".
62   They should be stored in '/var/lib/captive' directory (lowercased filenames).
63   These driver must be from Microsoft Windows XP;
64   Service Pack 1 Check Build U.S. preferred:
65     http://www.microsoft.com/WindowsXP/pro/downloads/servicepacks/sp1/checkedbuild.asp
66
67   NTFS disk drives can be mounted by
68     mkdir /mnt/drive-c
69     mount -t captive-ntfs /dev/hda1 /mnt/drive-c
70   
71 Case #3 - Command-line client (or Gnome-VFS) access only:
72     captive - Base package of this project.
73
74   You must obtain W32 drivers - at least "ntoskrnl.exe" and "ntfs.sys".
75   They should be stored in '/var/lib/captive' directory (lowercased filenames).
76   These driver must be from Microsoft Windows XP;
77   Service Pack 1 Check Build U.S. preferred.
78     http://www.microsoft.com/WindowsXP/pro/downloads/servicepacks/sp1/checkedbuild.asp
79
80   NTFS disk drives can be accessed by:
81     captive-cmdline --load-module=/tmp/ntoskrnl.exe --filesystem=/tmp/ntfs.sys \
82             --sandbox-server=/usr/sbin/captive-sandbox-server \
83             --bug-pathname=/tmp/captive-bug-%FT%T.captivebug.xml.gz \
84             --disk --rw /dev/hda1
85     (Backslash end-of-line characters '\' to be omitted for line continuation.)
86
87   In the case of 'sandbox' invocation error you can also run directly but
88   read/write (--rw) mode is definitely discouraged in such case:
89     captive-cmdline --load-module=/tmp/ntoskrnl.exe --filesystem=/tmp/ntfs.sys \
90             --disk --rw /dev/hda1
91     (Backslash end-of-line characters '\' to be omitted for line continuation.)
92
93   Gnome-VFS aware applications can access NTFS disk drives by:
94     gnomevfs-info file:///dev/hda1#captive-ntfs:/config.sys
95     gnomevfs-copy file:///dev/hda1#captive-ntfs:/config.sys /tmp/
96   You can replace 'captive-ntfs' by other supported methods, see:
97     /etc/gnome-vfs-2.0/modules/captive.conf
98
99
100 Source Installations
101 --------------------
102
103 Case #1 - All packages installed:
104   ./configure --enable-lufs --enable-install-pkg
105 Case #2 - Packages without installer:
106   ./configure --enable-lufs
107 Case #3 - Command-line client (or Gnome-VFS) access only:
108   ./configure
109 'configure' will compile 'Case #1' or 'Case #2' automatically if possible
110 when run with no arguments. For generic instructions see the file 'INSTALL'
111 otherwise run:
112   ./configure --help
113
114 Compile by:
115   make
116
117 Now you have './src/client/cmdline/captive-cmdline' available for testing.
118 Later you may invoke standard:
119   make install
120
121 Manual addition of user and group 'captive' is required for '--sandbox-server':
122   useradd captive
123
124
125 Bug Reporting
126 -------------
127
128 Captive produces its bugreports automatically in '/var/lib/captive' directory
129 named by 'bug-yyyy-mm-ddThh:mm:ss.captivebug.xml.gz' template. Microsoft
130 Windows subsystem emulation failures should be reproducable from this snapshot
131 file. You should attempt to minimize the number of operations from the mount
132 operation till the expected crash to minimize the snapshot file size.
133
134   !!! Be aware '.captivebug.xml.gz' will contain data from your disk drive !!!
135
136
137 CVS Bleeding Edge
138 -----------------
139
140 cvs -d :pserver:pserver@cvs.jankratochvil.net:/cvs login
141     Just hit ENTER (empty password)
142 cvs -d :pserver:pserver@cvs.jankratochvil.net:/cvs -z3 checkout -d captive priv/captive
143 cd captive
144 cvs -d :pserver:pserver@cvs.jankratochvil.net:/cvs -z3 checkout -d reactos -r captive -kk priv/reactos
145 ./autogen.pl
146 make
147 ./src/client/cmdline/captive-cmdline --load-module=/var/lib/captive/ntoskrnl.exe --filesystem=/var/lib/captive/ntfs.sys --disk  --blind /dev/hda1
148
149
150 Files Overview
151 --------------
152
153 User:
154 src/client/lufs - Linux User File System module to access NTFS as filesystem.
155 src/client/sandbox-server - Security+safety wrapper of emulated W32 environment.
156     Disable during debugging sessions.
157 src/client/cmdline - Simple ftp(1)-like client.
158     Fallback if LUFS client not usable; also useful during debugging.
159 src/install - 'captive-install' package contents
160 src/install/fstab - Search and add/remove 'captive-ntfs' /etc/fstab entries.
161 src/install/acquire - Search/download needed MS Windows XP driver files.
162 src/install/acquire/w32-mod-id.captivemodid.xml - List of supported W32 drivers.
163
164 Developer:
165 src/client/gnomevfs - gnomevfs-copy(1) file:///dev/hda1#captive-ntfs:/config.sys
166 src/client/bug-replay - Debugging engine for files by --bug-pathname.
167 src/libcaptive/ke/exports.captivesym - List of implemented W32 API functions.
168 src/libcaptive/cc - Windows NT Cache Manager.
169 src/TraceFS - TraceFS W32 Cache Manager debug tracer utilities.
170 src/TraceFS/TraceFS-W32 - TraceFS native W32 Cache Manager debug tracer.
171 src/libcaptive/sandbox - CORBA/ORBit security+safety sandbox-server separation.
172 src/libcaptive/client - Code for interfacing libcaptive to its clients.
173 src/libcaptive/halcaptive - W32 hal.dll of captive.
174 src/libcaptive/include/captive - Include files for future 3rd party clients.
175 src/libcaptive/include/reactos - ReactOS include wrappers for UNIX gcc(1).
176 src/libcaptive/reactos - Build skeleton for gcc(1) compilation of ReactOS.
177 src/libcaptive/reactos/ntoskrnl - Compatible parts of ReactOS ntoskrnl.exe.
178 src/libcaptive/reactos/hal - Compatible parts of ReactOS hal.dll.
179 src/libcaptive/rtl/unicode.c - Interface UNIX UCS4/UTF8 vs. W32 UCS2 unicode.
180 src/libcaptive/storage - HDD/CD-ROM virtual block device UNIX<->W32 drivers.
181 src/libcaptive/se - Void security manager granting everything to everyone.
182 src/install/acquire/cabextract - Modified cabextract(1) for 'acquire'.
183 src/w32-mod - Supplied W32 driver module files.
184 macros - Generic AutoGen framework used by './autogen.pl' CVS bootstrapper.
185 captive.spec.in - Red Hat Linux packaging.
186 debian - Debian GNU/Linux packaging.
187
188
189 Linux-NTFS Project
190 ------------------
191
192 http://linux-ntfs.sourceforge.net/ is the most serious competitive NTFS driver
193 implementation. It is fully GPL-2.0 licensed and it needs no proprietary
194 drivers requirements. It should be now fully reliable for read/only operations.
195 Read/write operations are supported only for rewriting existing data blocks of
196 existing files - no file/directory create/delete operations possible.
197
198 'captive-install' package of this project 'ntfsprogs' package of Linux-NTFS
199 Project. This driver is very useful to obtain the original drivers from
200 Microsoft Windows XP already installed on existing NTFS disk partition by
201 'ntfsprogs' NTFS read/only access. 'ntfsprogs' are no longer used afterwards.
202
203 Although Linux-NTFS Project contains a lot of valuable reverse-engineering work
204 it is completely separated effort from Captive project, no knowledge can be
205 shared. Linux-NTFS revere-engineers on-disk data structures while Captive
206 reverse-engineers internal Windows NT kernel API.
207
208
209 Drivers Availability Details
210 ----------------------------
211
212 Microsoft Windows driver files are copyrighted by Microsoft corporation and
213 therefore they were not supplied along with this project. It is expected you
214 already have valid Microsoft Windows license if you need NTFS disk drive access
215 at all. Currently this project supports only driver files of Microsoft Windows
216 XP; other versions (such as NT-4.0, 2000 or 2003 Server) are currently not yet
217 supported. You still may safely access your NTFS disk drive of a different
218 MS-Windows version although depending on your country you may not have legal
219 rights to download the needed Microsoft Windows XP drivers if not owning
220 exactly the XP version license.
221
222 These drivers have only debugging meaning as such disks are well supported:
223   ext2fsd.sys - GNU/Linux EXT2 filesystem driver; supplied in: src/w32-mod/
224   fastfat.sys - FAT filesystem driver; required for (V)FAT-12/16/32 drives.
225   cdfs.sys - CDFS/ISO-9660 filesystem driver; required for CD-ROM media.
226
227
228 Installation
229 ------------
230
231 See the file 'INSTALL'.
232
233
234 Copyright
235 ---------
236
237 See the file 'COPYING' and 'AUTHORS'.