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

Re: 7.7 Can't we write a wrapper for Windows' driver?

> It sounds like a great idea, to start with, but there are numerous problems.

> The largest technical problem is joining the Windows system DLL to the Linux VFS. It could be done, but it wouldn't be pretty.
Yep. :-)

> It would have to run as part of the kernel which would mean that if it went wrong it could crash the machine. With no source, we might not be able to work around the problem.
Nope, Linux Userland File System (LUFS) moves the filesystem implementation to UNIX userland where the Microsoft Windows filesystem is completely unarmed by Captive jail of chroot(2), setuid(2) and setrlimit(2). There only remains one narrow connection to the rest of system (by CORBA/ORBit). The filesystem's life environment gets kill(2)ed when UNIX is no longer satisfied with it. Safety similiar to VMware sandbox.

> The next major problem is compatibility. Which version of the Windows system file would we use? Picking one would limit its use, making the wrapper versatile for all of them would be a programming nightmare.
Microsoft Windows NTFS filesystem driver is capable of accessing older formats of the filesystem. This project currently runs Microsoft Windows XP version, porting to Microsoft Windows 2003 Server expected. (Microsoft Windows upgrades NTFS disk filesystem to its own version during complete CD-ROM Microsoft Windows system installation – such operation is not threat this project use.)

> And it gets worse. The legal implications of distributing Windows systems files would cause problems.
User must be careful to obey all licensing restrictions according to his local country laws.
> Also the proprietary nature of the driver would mean that the other kernel coders would not investigate any problems if someone had used the NTFS wrapper.
It does not apply to this project due to the implemented filesystem separation.



Previous document