NTFS FAQ (Frequently Asked Questions)

English Italian Japanese Vietnamese German Simplified Chinese French Spanish Brazilian Traditional Chinese Russian

This FAQ is part of the Linux NTFS Project.
The latest version can be found online at
ntfs.html

If you have an NTFS question that isn't answered in this FAQ, or you have comments about the FAQ, please email linux-ntfs-dev@sourceforge.net

Contents

Key

** - Most frequently asked questions
!! - Other interesting bits
NB - Note carefully

 Commands or output

1. General NTFS Questions

  1.1 What is NTFS?
  1.2 Is NTFS better than FAT/FAT32?
  1.3 Do I have to use NTFS? (Or upgrade?)
!! 1.4 Is NTFS the same in every version of Windows?
  1.5 What are NTFS's limits?

2. NTFS Volumes

  2.1 How do I read an NTFS Volume from Windows 95/98/ME or DOS?
  2.2 How do I convert a FAT Volume to a NTFS Volume?
!! 2.3 How do I convert an NTFS Volume to a FAT Volume?
  2.4 How do I delete an NTFS Volume?
  2.5 How do I defragment an NTFS Volume?
** 2.6 How do I resize an NTFS Volume?

3. Linux and NTFS

!! 3.1 Which versions of NTFS can Linux read?
** 3.2 Can the Driver write to an NTFS volume, too?
  3.3 What features of NTFS does Linux support?
  3.4 What should I do if something goes wrong?
** 3.5 How do I add NTFS support to Linux?
  3.6 Which version is best?
  3.7 What other tools are there?
  3.8 How was the Linux NTFS Driver written?
  3.9 Who do we thank?

4. Mounting NTFS Volumes

  4.1 Can I mount an NTFS Volume?
  4.2 How safe is the NTFS Driver?
  4.3 Which partition should I use?
  4.4 Which version of the NTFS Driver do I have?
!! 4.5 How do I mount an NTFS Volume?
  4.6 Common mount options.
  4.7 Mount options for the Original Driver.
  4.8 Mount options for the New Driver.
** 4.9 How do I change the permissions of a mounted NTFS Volume?
!! 4.10 How do I mount an NTFS Volume automatically?

5. Booting Operating Systems on NTFS

  5.1 Can I boot Windows on an NTFS volume?
  5.2 How do I use lilo?
  5.3 How do I use grub?

6. Linux Distributions

  6.1 Which distributions support NTFS out of the box?
  6.2 Why don't RedHat support NTFS?
  6.3 Why does RedHat Linux lock up when accessing an NTFS Volume?
  6.4 Do any distributions install onto NTFS?

7. The New Linux NTFS Driver

  7.1 What is the new NTFS Driver?
  7.2 Do I have to use it?
  7.3 How do I use the new Driver?
  7.4 What is a patch?
  7.5 What if I still don't understand?
  7.6 When will the new code be in the Linux Kernel?
  7.7 Can't we write a wrapper for Windows' driver?

Back to the top


1. General NTFS Questions

1.1 What is NTFS?

NTFS is an abbreviation for New Technology Filesystem. NT because it was originally used in Windows NT and a filesystem is just how the computer stores files on disk. Different operating system, stores files in different ways.

NTFS is used by Windows NT, 2000, XP and Windows Server 2003.

Back to the top

1.2 Is NTFS better than FAT/FAT32?

In brief, yes. It's far more robust, it supports Unicode filenames, proper security, compression and encryption. Its main fault is that it can only be read from Windows NT, 2000 or XP, i.e. you can't use a DOS boot disk and then read your data.

As always there are exceptions to this rule. Linux has had a driver for NTFS since December 1997. Also there's a program to give DOS NTFS support (see Section 2.1 for more details).

Back to the top

1.3 Do I have to use NTFS? (Or upgrade?)

No, you don't have to, though for most people it is a good idea. You probably won't even notice the difference. The only catch, is that you cannot convert back to FAT (see Section 2.3 for more details).

NB You can install Windows NT on a FAT16 filesystem and Windows 2000 or XP on a FAT32 filesystem. Then you can upgrade to NTFS later.

Back to the top

1.4 Is NTFS the same in every version of Windows?

No. They will look similar, but newer versions have extra features. For example, Windows 2000 has quotas.

NTFSWindows Version
v1.2NT 3.51, NT 4
v3.02000
v3.1XP, Server 2003

Version 1.2 is sometimes known as 4.0.
Versions 3.0 and 3.1 are sometimes referred to as 5.0 and 5.1.

Back to the top

1.5 What are NTFS's limits?

BIG. NTFS supports files up to 263 bytes in size. NTFS Volumes can be up to 263 clusters and each cluster can be up to 64KiB long. This gives NTFS an upper limit of approximately 500 trillion gigabytes.

Back to the top


2. NTFS Volumes

2.1 How do I read an NTFS Volume from Windows 95/98/ME or DOS?

Unfortunately, you can't. These versions of Windows can only understand FAT. NTFS can only be read by Windows NT, 2000 and XP.

However, with a little work, you can use a couple of utilities from SysInternals "NTFS for Windows 98" and "NTFSDOS" allow you to read NTFS from Windows 95, 98 and DOS. If you are prepared to pay, they even have versions that will write to NTFS (N.B. It is very expensive).

Back to the top

2.2 How do I convert a FAT Volume to a NTFS Volume?

Open a command window and type (replacing x: with the correct volume):

    convert x: /fs:ntfs
    

If the volume is in use, the conversion will happen when you next reboot.

NB The command is not easily reversed. See the next FAQ.

Back to the top

2.3 How do I convert an NTFS Volume to a FAT Volume?

The simple answer is, "You can't". There is an exception if you have money. Partition Magic, available from norton.com can convert between several filesystems, including NTFS and FAT.

Back to the top

2.4 How do I delete an NTFS Volume?

This depends on which Operating System you are using.

DOS, Windows 95/98/ME: fdisk. Use a boot disk, or ask Windows to go to DOS mode. Then run fdisk. If you have more than one disk, first select that. Then you want to delete a non-DOS partition. Be very careful, your changes will be committed immediately.

Windows NT: Computer management.

Windows 2000, XP and Server 2003: Logical Disk Manager. Start at the Control Panel, select Administrative Tools, then Computer Management.

Back to the top

2.5 How do I defragment an NTFS Volume?

After a volume has been in use for a while, after many writes to the disk, the files can end up fragmented. That is not in one consecutive place on the disk, but in many small pieces. This causes a slowdown when trying to access these files.

Windows 2000, XP and Server 2003 have a defragmenting program built in. For users of Windows NT, there is a free program to do the same job. Diskeeper Lite can be downloaded from: http://diskeeper.com

Back to the top

2.6 How do I resize an NTFS Volume?

Use our stable and widely used program, ntfsresize. Or even better, one of the easy-to-use partitioners (DiskDrake, QTParted, YAST, EVMS, Partman, GParted, etc) that integrated it. For more information, please read the ntfsresize FAQ.

Back to the top


3. Linux and NTFS

3.1 Which versions of NTFS can Linux read?

The Linux Driver can read all the versions of NTFS. Each version is slightly different, but the driver only has to interpret the files and directories. All the indexes that NTFS maintains can be safely ignored.

When the driver becomes able to write to an NTFS Volume, then it may be that the abilities will vary according to the version of NTFS it is writing to.

Back to the top

3.2 Can the Driver write to an NTFS volume, too?

Not really, but if you only need to copy files from Linux to Windows on a dual-boot machine, see "How to write to NTFS" below for a possible way to work around the lack of write support. For write support in Linux, read on.

There are two drivers, currently. The original driver, in 2.4 has some write code in it, but it is extremely dangerous to use it. The possibility of destroying your filesystem is very high.

The new driver, introduced in 2.5.11, has some write code, but it's very limited. The driver can overwrite existing files, but it cannot change the length, add new or delete existing files.

Adding write support will take a long time. NTFS is built like a database. Any changes you make, necessitate making changes in many places, for consistency. Make a mistake and the filesystem will be damaged, make too many mistakes and the filesystem will be destroyed. Also, the current developers are only working on NTFS as a hobby, during their free time. If you'd like to help, please email me: linux-ntfs-dev@sourceforge.net

How to write to NTFS. If you are using a dual-boot machine and just need NTFS write support to transfer files from Linux to Windows, you can instead use a Windows driver for ext2/ext3 and, while running Windows, read the files from the Linux partition instead. This way, using two read-only drivers, you can still copy files from one file system type to the other.

We know about these open source Windows drivers for ext2 and ext3 Linux filesystems, as of June 4th, 2003:

Back to the top

3.3 What features of NTFS does Linux support?

NTFS supports a wide range of features, but few are honoured by the Linux NTFS Driver.

The Linux NTFS Driver supports: Unicode filenames (converted into a local codepage, or utf8); compressed files; sparse files.

However, the driver cannot read encrypted files, it ignores Windows' security information and ignores quotas set by Windows.

Back to the top

3.4 What should I do if something goes wrong?

The driver is pretty safe read-only, but it's impossible to test every eventuality. If something goes wrong, please help us to find the problem and fix it.

Please email the development team at linux-ntfs-dev@lists.sourceforge.net and tell us which version of the driver you are using, which Linux version (uname -a) and which version of NTFS (Win NT, 2K or XP).

Additionally, if there are any logs (/var/log/messages) that you think may be useful, please include them.

Thanks.

Back to the top

3.5 How do I add NTFS support to Linux?

Most users won't have to compile anything to enable NTFS support. Almost every Linux distribution (with the notable exception of RedHat) comes with NTFS support out of the box.

If you are using RedHat 9 (Shrike), 8.0 (Psyche) or 7.3 (Valhalla), then you can simply install an rpm for NTFS support. The rpm comes with detailed instructions.

If you have an older version of RedHat, or another distribution which doesn't include NTFS support, then you will have to compile the kernel yourself. This isn't as difficult as it sounds. Have a look at the Compile Page for more details.

Back to the top

3.6 Which version is best?

The new version of the driver is better. It is better written, much faster, has fewer bugs and is SMP-safe. The new driver is available in 2.5.11 onwards and a patch is available to add the new driver to 2.4 kernels.

Back to the top

3.7 What other tools are there?

At the moment, there are only a few tools and they are aimed at developers. We keep a status list of all our tools.

Naturally the priorities lie in getting NTFS write support coded.

Back to the top

3.8 How was the Linux NTFS Driver written?

Microsoft haven't released any documention about the internals of NTFS, so we had to reverse engineer the filesystem from scratch. The method was roughly:

  1. Look at the volume with a hex editor
  2. Perform some operation, e.g. create a file
  3. Use the hex editor to look for changes
  4. Classify and document the changes
  5. Repeat steps 1-4 forever

If this sounds like a lot of work, then you probably understand how hard the task has been. We now understand pretty much everything about NTFS and we have documented it for the benefit of others: ../ntfs/index.html

Actually writing the driver was far simpler than gathering the information.

Back to the top

3.9 Who do we thank?

First we have to thank Martin von Löwis. He created the original NTFS driver back in 1995. It was added to the Linux Kernel in December 1997 (2.1.74). He has been helped by the following kind souls:

Albert Cahalan, Anton Altaparmakov, Damon Casale, David Dillard, Domagoj Pensa, Joseph Malicki, Matthew Fanto, Olof Wolgast, Rani Assaf, Régis Duchesne, Richard Russon, Steve Dodd, Werner Seiler.

Next we have to thank Anton Altaparmakov, it was his enthusiasm which kept the project alive. At a time when the project was effectively unmaintained, he took over and stabilised the code. He went on to rewrite the driver from scratch in order to have a clean base to progress with write support. He has been helped by:

Pawel Kot, Richard Russon.

Back to the top


4. Mounting NTFS Volumes

4.1 Can I mount an NTFS Volume?

Of course. The Driver can read all versions of NTFS, but it is read-only.

Back to the top

4.2 How safe is the NTFS Driver?

When used read-only, both the Original and New Drivers are safe for general use. They will not make any changes to your filesystem, so they cannot cause any damage.

Additionally, the New Driver is SMP-safe.

Back to the top

4.3 Which partition should I use?

In Linux disks are named hda, hdb for the first two disk on the first IDE controller and hdc, hdd for the third and fourth disks. SCSI disks are named sda, sdb, etc, in the order they are discovered.

A simple way to look for NTFS Volumes is using:

    fdisk -l
    

The output might look like:

    Disk /dev/hda: 64 heads, 63 sectors, 4465 cylinders
    Units = cylinders of 4032 * 512 bytes

       Device Boot    Start       End    Blocks   Id  System
       /dev/hda1             1      2125   4283968+  07  NTFS/HPFS
       /dev/hda2          2126     19851  35735616   0f  Win95 Ext'd (LBA)
       /dev/hda5   *      2126      4209   4201312+  83  Linux
       /dev/hda6          4210      4465    516064+  82  Linux swap
    

Back to the top

4.4 Which version of the NTFS Driver do I have?

If your kernel version is 2.4.*, or 2.5.0 - 2.5.10, then you probably have the Original NTFS Driver. If you have 2.5.11 or later, then you have got the New NTFS Driver.

A better test is to look through the kernel logs for the NTFS log message. Try either of these commands (you may need to be root to read the logs).

    dmesg | grep -i ntfs
    grep -i ntfs /var/log/messages
    

The Original Driver is version 1.1.*, whereas the New Driver is version 2.*.

Back to the top

4.5 How do I mount an NTFS Volume?

First of all, it might be an idea to check that your kernel understands NTFS. The command below will give a list of all the filesystems that Linux understands. If you see ntfs, then you are OK. Also it might be a good idea to read the mount manual, man 8 mount.

    cat /proc/filesystems
    

Next you need to create a place to mount the NTFS Volume. Then you can mount it.

    mkdir /mnt/windows
    mount /dev/hda1 /mnt/windows -t ntfs -r
    

NB To alter the permissions of the mounted filesystem, see the umask option in Section 4.6. If you would like to have the volume mounted automatically at boot time, see Section 4.10.

When you have finished, you can unmount the partition with either of:

    umount /mnt/windows
    umount /dev/hda1
    

NB The command is called umount (only one 'n').

Back to the top

4.6 Common mount options.

These mount options are common to both drivers. It's recommended to also read the man page for mount. The general form of mount is:

    mount device directory [options]
    

Additional options of the for -o option can be given individually, or as one parameter separated with commas. These two commands are equivalent:

    mount /dev/hda1 /mnt/windows -o X -o Y -o Z
    mount /dev/hda1 /mnt/windows -o X,Y,Z
    
-t ntfs
Tell mount the type of the filesystem it will mount. This option isn't necessary, since mount knows how to identify most filesystem types.
-r
Mount the volume, read-only. By default, mount will attempt to mount the volume read-write. Unless forced, the driver will automatically mount the filesystem read-only.
-o ro
This is the same as -r.
-o umask={VALUE}
The default permissions given to a mounted NTFS Volume are rwx------ (this is for security reasons). The umask parameter controls the permissions of files and directories. For more details and examples, see Section 4.9.
    mount /dev/hda1 /mnt/windows -t ntfs -r -o umask=0222
    
-o uid={USERID}
By default all the files on a mounted NTFS Volume will be owned by root. If you supply a uid parameter you can set the owner of the files. The userid can be any name from /etc/passwd, or any number representing a user id.
    mount /dev/hda1 /mnt/windows -t ntfs -r -o uid=flatcap
    mount /dev/hda1 /mnt/windows -t ntfs -r -o uid=500
    
-o gid={GROUPID}
By default all the files on a mounted NTFS Volume will have a group owner of root. If you supply a gid parameter you can set the group of the files. The groupid can be any name from /etc/group, or any number representing a group id.
    mount /dev/hda1 /mnt/windows -t ntfs -r -o gid=winusers
    mount /dev/hda1 /mnt/windows -t ntfs -r -o gid=520
    

Back to the top

4.7 Mount options for the Original Driver.

To find out which driver you are using, see Section 4.4. This section discusses the options for the Original Driver only. All the common mount options are discussed in Section 4.6.

Several options take a true or false parameter.
You may replace true with yes or 1.
You may replace false with no or 0.

-o iocharset={NAME}

NTFS stores all file and directory names in Unicode which can represent any character from any language. By default the Linux NTFS driver converts the names to ASCII which is OK for some people, but no good if your languages includes letters like å or é.

NLS (Native Language Support) controls how characters are displayed. You can choose either utf8 which, like Unicode, can represent all characters, or your own codepage, e.g. iso8859-1 (Western Europe), iso8859-2 (Central Europe), gb2312 (Simplified Chinese), iso8859-8 (Hebrew). Below are some example mount commands:

    mount /dev/hda1 /mnt/windows -t ntfs -r -o iocharset=utf8
    mount /dev/hda1 /mnt/windows -t ntfs -r -o iocharset=iso8859-2
    mount /dev/hda1 /mnt/windows -t ntfs -r -o iocharset=gb2312
    
utf8=true

If your kernel doesn't support utf8, then you can use this option to work with utf8 support from the NTFS Driver. You should use -o iocharset=utf8 wherever possible.

    mount /dev/hda1 /mnt/windows -t ntfs -r -o utf8=true
    
-o posix={BOOL}

Windows preserves the case of filenames, but it doesn't distinguish when you read. Therefore you can create a file called MyFileName and then open it by asking for mYfILEname.

By default Linux is case sensitive, MyFile, MyFile and myfile are all different files. If you would like Linux to behave like Windows, for an NTFS volume, set the posix option to true. Setting the option to false will make the driver behave like Linux (the default).

    mount /dev/hda1 /mnt/windows -t ntfs -r -o posix=true
    
-o show_sys_files={BOOL}

If this option is set to true, then the filesystem metadata will be visible. If the aren't visible, they can still be explicitly listed by providing their name, e.g. ls -l \$MFT.

NB Because of a limitation of glibc, $MFT may not appear in listings because it is inode number zero.

    mount /dev/hda1 /mnt/windows -t ntfs -r -o show_sys_files=true
    

Back to the top

4.8 Mount options for the New Driver.

To find out which driver you are using, see Section 4.4. This section discusses the options for the New Driver only. All the common mount options are discussed in Section 4.6.

Several options take a true or false parameter.
You may replace true with yes or 1.
You may replace false with no or 0.

-o nls={NAME}

NTFS stores all file and directory names in Unicode which can represent any character from any language. By default the Linux NTFS driver converts the names to ASCII which is OK for some people, but no good if your languages includes letters like å or é.

NLS (Native Language Support) controls how characters are displayed. You can choose either utf8 which, like Unicode, can represent all characters, or your own codepage, e.g. iso8859-1 (Western Europe), iso8859-2 (Central Europe), gb2312 (Simplified Chinese), iso8859-8 (Hebrew). Below are some example mount commands:

    mount /dev/hda1 /mnt/windows -t ntfs -r -o nls=utf8
    mount /dev/hda1 /mnt/windows -t ntfs -r -o nls=iso8859-2
    mount /dev/hda1 /mnt/windows -t ntfs -r -o nls=gb2312
    
-o fmask={VALUE}
-o dmask={VALUE}

The umask parameter alters the permissions of both files and directories (see Section 4.6 for a reminder). fmask works on files and dmask works on directories in the same way. The effect of the options can be combined, too. Here are some examples:

    mount /dev/hda1 /mnt/windows -t ntfs -r -o fmask=0222
    mount /dev/hda1 /mnt/windows -t ntfs -r -o dmask=0222
    mount /dev/hda1 /mnt/windows -t ntfs -r -o fmask=0077,dmask=0222
    
-o case_sensitive={BOOL}

Windows preserves the case of filenames, but it doesn't distinguish when you read. Therefore you can create a file called MyFileName and then open it by asking for mYfILEname.

By default Linux is case sensitive, MyFile, MyFile and myfile are all different files. If you would like Linux to behave like Windows, for an NTFS volume, set the case_sensitive option to false. Setting the option to true will make the driver behave like Linux (the default).

    mount /dev/hda1 /mnt/windows -t ntfs -r -o case_sensitive=true
    mount /dev/hda1 /mnt/windows -t ntfs -r -o case_sensitive=false
    
-o sloppy={BOOL}

By default, the driver will refuse to mount if any of the options are incorrect. By adding the sloppy parameter the driver will simply ignore bad parameters.

    mount /dev/hda1 /mnt/windows -t ntfs -r -o sloppy=true
    mount /dev/hda1 /mnt/windows -t ntfs -r -o sloppy=false
    
-o errors={VALUE}

This option controls how the driver copes with problems. The default is to try and continue. Any corruption will be marked and worked around. The alternative is to get the driver to try and recover. At present the only recovery the driver can do is to replace the boot sector with the backup.

    mount /dev/hda1 /mnt/windows -t ntfs -r -o errors=continue
    mount /dev/hda1 /mnt/windows -t ntfs -r -o errors=recover
    

Back to the top

4.9 How do I change the permissions of a mounted NTFS Volume?

There are three options to control the permissions and ownership of files and directories. They are: umask, uid and gid. They are mentioned in Common mount options.

Below are some examples of each option and how it affects the files. We will use the same mount command each time and just show the options.

    mount /dev/hda1 /mnt/windows -t ntfs -r
    

umask is a filter of permissions, so it works in the opposite way to chmod. Full permissions are equivalent to 777 (rwxrwxrwx). A umask of 0222 (-w--w--w-) leaves 555 (r-xr-xr-x).

The default umask is set to 0077, for security reasons.

    mount ... -o umask=0277

    -r-x------ 1 root    root    28096 Aug 24 1996 chkdsk.exe
    
    mount ... -o umask=0222

    -r-xr-xr-x 1 root    root    28096 Aug 24 1996 chkdsk.exe
    

So far the files still have an owner and group of root. Next we try the uid and gid options.

    mount ... -o uid=flatcap

    -r-x------ 1 flatcap root    28096 Aug 24 1996 chkdsk.exe
    
    mount ... -o gid=winuser

    -r-x------ 1 root    winuser 28096 Aug 24 1996 chkdsk.exe
    
    mount ... -o uid=flatcap,gid=winuser

    -r-x------ 1 flatcap winuser 28096 Aug 24 1996 chkdsk.exe
    

Finally we combine a few options for precise control. Below we allow the user flatcap full control, the group of users winuser has read permissions and other people have no access at all.

    mount ... -o umask=0027,uid=flatcap,gid=winuser

    -rwxr-x--- 1 flatcap winuser 28096 Aug 24 1996 chkdsk.exe
    

Back to the top

4.10 How do I mount an NTFS Volumes automatically?

Once you are happy with your mount command, you can teach Linux how to mount the volume automatically by adding a line to /etc/fstab (filesystem table).

Below are some example mount commands and their equivalent fstab.
NB Don't worry about the meaning of the 0 0 on the end.

    mount /dev/hda1 /mnt/windows -t ntfs -r

    /dev/hda1 /mnt/windows ntfs ro                                    0 0
    

Here we've transformed -r into the equivalent -o ro.

    mount /dev/hda1 /mnt/windows -t ntfs -r -o umask=0222

    /dev/hda1 /mnt/windows ntfs ro,umask=0222                         0 0
    
    mount /dev/hda1 /mnt/windows -t ntfs -r -o umask=0222,uid=flatcap,gid=winuser

    /dev/hda1 /mnt/windows ntfs ro,umask=0222,uid=flatcap,gid=winuser 0 0
    

Back to the top


5. Booting Operating Systems on NTFS

5.1 Can I boot Windows on an NTFS volume?

Yes, both grub and lilo can boot Windows from an NTFS Volume. What actually happens, is that the Linux boot loader finds the NTFS boot loader and gives control to it.

Back to the top

5.2 How do I use lilo?

Add this entry to /etc/lilo.conf, then rerun lilo.

    other = /dev/hda1
        table = /dev/hda
        label = Windows
    

The other points to the partition containing Windows and table points to the partition table of the disk.

Back to the top

5.3 How do I use grub?

Add this entry to /boot/grub/grub.conf

    title Windows
        root (hd0,0)
        makeactive
        chainloader +1
    

According to the grub disk numbering, /dev/hda is hd0, hdb is hd1, etc. The partitions are numbered from zero. Therefore, hda1 is hd0,0, hdc4 is hd2,3.

Back to the top


6. Linux Distributions

6.1 Which distributions support NTFS out of the box?

The Linux Distributions that are known to support NTFS are: Mandrake, Debian, SuSE, Gentoo and Caldera

In fact, the pattern is, that if the name isn't RedHat, then they will support NTFS.

Back to the top

6.2 Why don't RedHat support NTFS?

I'd really like to know. The rumours are that it's a legal worry.

Back to the top

6.3 Why does RedHat Linux lock up when accessing an NTFS Volume?

Check which kernel version you are using with the command uname -a. If the version is 2.4.9 then it is important for you to update your kernel. See the RedHat Website for more details.

If you'd prefer, you could compile your own kernel. See How do I add NTFS support to Linux? for more details.

Back to the top

6.4 Do any distributions install onto NTFS?

Not quite. Phat Linux can install onto a FAT partition within Windows, then boot from the files inside Windows. The New Driver nearly has enough support for them to perform this trick using NTFS.

Back to the top


7. The New Linux NTFS Driver

7.1 What is the new NTFS Driver?

It is a complete rewrite of the NTFS driver. The original driver was writen over a period of many years. In the beginning we knew little about NTFS or Linux and the source code became hard to maintain.

We created a new driver, with our new knowledge, which is much simpler, faster and easier to maintain.

Back to the top

7.2 Do I have to use it?

No. There is already an NTFS driver in the current Linux kernel, so you don't need to use the new driver. The original driver, though old, is reliable enough for everyday use.

Back to the top

7.3 How do I use the new Driver?

We release the new driver as a patch to the official Linux kernel source code.

../downloads.html
http://www.kernel.org/pub/linux/kernel/v2.4/

Back to the top

7.4 What is a patch?

A patch is a set of changes for a set of text files. Since we are only altering the NTFS code, it is inefficient to release all the kernel code every time we make a small change. We make our patches against official Linux kernel releases.

Once you have unpacked the source, change directory into the source directory and use the command (replacing the path and patchname as necessary):

    patch -p1 < path/to/patchname
    

This will modify the source code. There should be no rejects or failures. Next build the kernel as normal. There are instructions for this elsewhere in this FAQ.

Back to the top

7.5 What if I still don't understand?

Sorry. We try to help everyone we can, but we have a limited amount of time. There are a few sites that might help you understand the basics about Linux. Alternatively, find out if there is a Linux User Group near you.

Back to the top

7.6 When will the new code be in the Linux Kernel?

There are two kernels to consider. The new code is already in the development Linux Kernel. It was introduced in 2.5.11.

The stable Linux Kernel, currently 2.4.20, still has the old driver. We are happy with the state of the code, but we still have to convince the Kernel Gods that it's good.

Until it is incorporated, we will make frequent releases in patch form.

Back to the top

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. 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.

The next major problem is compatability. 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.

And it gets worse. The legal implications of distributing Windows systems files would cause problems. 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.

Anyway, there has been a brave man that done it. Jan Kratochvil's Captive is such Windows' driver wrapper. It is able to write NTFS files, but is known to have bugs and is much slower then Linux NTFS driver. Captive is based on ReactOS and uses LUFS driver. Probably if amount of work that was put into Captive development was spent on Linux NTFS driver, we'd have reliable and fully open source driver with write support.

Back to the top