1. NTFS常见问题
1.1 什么是NTFS?
NTFS是New Technology Filesystem的缩写。称作NT是因为它最初是用在Window NT上的,文件系统则表示电脑在磁盘上存储文件的方式。不同的操作系统一般使用 不同的方式存储文件。
NTFS通常用于Windows NT、2000和XP系统。
1.2 NTFS比FAT/FAT32好吗?
简单的说,是的。NTFS更健壮,它支持双字节编码文件名以及适当的安全、压缩和加密。它主要的不足之处在于只能在Windows NT、2000或XP系统下进行读取,比如用户不能用DOS启动盘启动然后读取NTFS上的数据。
和往常一样,这个规则也有例外存在。早在1997年10月就有了Linux下的NTFS驱动程序,同样也有程序支持DOS下对NTFS的操作(2.1节对此有详细介绍)。
1.3 我需要使用或者升级到NTFS吗?
不,你并不需要,虽然这对于绝大多数人来说是一个不错的主意。你甚至可能察觉不到两者性能上的差别,唯一的缺点是你不能再将其转回FAT格式了(2.3节对此有详细介绍)。
你可以在FAT16文件系统上安装Windows NT,在FAT32文件系统上安装Windows 2000或XP,然后再可以升级到NTFS。
1.4 每一版本Windows中的NTFS都一样吗?
不,它们看起来很相似,但新的版本总有一些附加的特性。比如,Windows 2000就有磁盘配额(quotas)。
NTFS | Windows Version |
---|---|
v1.2 | NT 3.51, NT 4 |
v3.0 | 2000 |
v3.1 | XP |
1.2版本有时被称作NT4.0。 3.0和3.1版本则被称作NT5.0和5.1。
1.5 NTFS的局限性是什么?
容量大小。NTFS支持最大为263字节的文件。NTFS卷最多可包括263个簇且每个簇最大可为64KB,这样它的最大容量就是约500万亿GB。
<!-- ............................................................. -->
2. NTFS卷
2.1 怎样从Windows 95/98/ME或DOS中读取一个NTFS卷?
很可惜,这是不可以的。这些版本的Windows只支持FAT,NTFS只可以从Windows NT、2000和XP中进行读取。
但是,只要稍微费些功夫,你就可以从http://www.systinternals.com/ 得到 "NTFS for Windows 98" 和 "NTFSDOS" 两个工具,这样就以在Windows 95、98和DOS中对NTFS进行读取。如果你愿意付费的话,他们甚至可以提供支持写入NTFS的版本(但这是非常昂贵的)。
2.2 怎样将FAT卷转换为NTFS卷?
打开一个命令窗口并输入(将x:替换为正确的卷标)
convert x: /fs:ntfs
如果该卷正在使用中,转换将会在下次系统启动时进行。
此命令不支持逆向操作,详情请见下个FAQ。
2.3 怎样将NTFS卷转换为FAT卷?
简单的说,这样是不可以的,当然如果你有足够的钱的话也有例外。http://www.powerquest.com/出品的Partition Magic支持在不同的文件系统间进行转换,其中就包括NTFS和FAT。
2.4 怎样删除一个NTFS卷?
这依赖于你使用的操作系统。
DOS、Windows 95/98/ME: fdisk。使用启动盘启动系统,或者让Windows返回到DOS模式,然后运行fdisk。如果有多个磁盘,先选择磁盘,然后删除那些非DOS分区。操作时一定要特别小心,任何改变都会被立即提交并执行。
Windows NT: 计算机管理。
Windows 2000、XP: 逻辑磁盘管理器。从控制面板中开始,选择管理工具,然后选择计算机管理。
2.5 怎样对NTFS卷进行碎片整理?
当一个卷使用了很长时间,或者对磁盘进行过多次写入之后,保存在其中的文件可能变得支离破碎了。这些文件不再以一种连续的形式保存在磁盘上,而是被分成了很多小的部分,这样就减慢了访问文件的速度。
为此,Windows 2000和XP系统内置了磁盘碎片整理程序。而对于Windows NT的用户来说,也有免费的工具可以完成同样的工作,这就是Diskeeper Lite,它可以从 http://diskeeper.com 下载得到。
2.6 怎样调整一个NTFS卷的大小?
直到最近,唯一可以调整NTFS卷的大小而不造成数据损失的程序仍旧是很昂贵的。现在,我们有了自己的程序-ntfsresize。我们已经对其做了很多测试,但目前仍处于试验阶段。如果你想得到更详细的信息,请参阅ntfsresize FAQ。
http://powerquest.com/ 出品的Partition Magic仍是仅有的可以调整NTFS卷大小的商业程序。
<!-- ............................................................. -->
3. Linux和NTFS
3.1 Linux可以读取那些版本的NTFS?
Linux驱动程序可以读取所有版本的NTFS。每个版本的NTFS都稍微有些差别,但是驱动程序仅需要对文件和路径进行解释,NTFS维护的所有索引记录都被安全地忽略了。
当驱动程序支持对一个NTFS卷进行写操作时,这种能力也会随着它所写入的NTFS版本的不同发生变化。
3.2 驱动程序支持写入NTFS卷吗?
并不完全是,但是如果你需要在装有双系统机器的上从Linux向Windows拷贝文件的话,请阅读下面的“怎样写入NTFS”部分,那里你将会找到一种在缺少写入支持的情况下解决问题的方法。
目前我们共有两个驱动程序,2.4内核中的原始驱动程序包含一些执行写入操作的代码,但是执行它们将会是非常危险的,极有可能彻底破坏你的文件系统。
2.5.11内核中引入的新驱动程序也包含一些执行写入操作的代码,但却是非常有限的。它可以覆写现存的文件,但不可以改变文件大小、添加新文件或者删除文件。
添加对写操作的支持将耗费很长的时间。NTFS的结构和数据库很相似,基于一致性的考虑,用户做出的每个改变都可能带来其他的很多改变。一个错误可能对文件系统造成损害,很多错误则会彻底破坏整个文件系统。此外,目前的开发人员也只是出于个人爱好在空闲时间从事 NTFS驱动的开发。如果你愿意帮助我们,请发邮件给我:。
怎样写入NTFS。如果你在使用装有双系统的机器并且只需要对NTFS写操作的支持来从Linux向 Windows转移文件,你可以通过使用Windows下的ext2/ext3驱动程序从Linux分区中读取文件来代替。这种方式只需使用两个只读的驱动,并且仍旧可以从一个文件系统向另一个拷贝文件。
截至2003年6月4日,共有以下这些开源的支持Linux ext2和ext3文件系统的Windows驱动程序:
- explore2fs
- 主页:http://uranus.it.swin.edu.au/~jn/linux/explore2fs.htm
- 适用于Windows NT、Windows 2000和Windows XP。
- ext2fsd
- 主页:http://www.tuningsoft.com/projects/projects.htm
- 适用于Windows NT、Windows 2000和Windows XP。
- winext2fsd
- 主页:winext2fsd project page
- 据称适用于Windows NT和Windows XP,同样也可用于Windows 2000。
- ext2forxp
- 主页:http://sourceforge.net/projects/ext2forxp/
- 还处于早期开发阶段,没有进入实用(到2003年6月4日)。
- vmware
- 主页:http://www.vmware.com/
- VMWare允许你在在一个系统中完全运行其他操作系统。
- 所以,你可以在Linux中运行Windows,自然也可以写入NTFS了。
- 这种写入操作就像你在运行的Windows一样安全,但同样也很昂贵。
3.3 Linux支持NTFS的哪些特性?
NTFS支持极其众多的特性,但是Linux NTFS驱动程序实现的却很少。
Linux NTFS驱动程序支持Unicode文件名、压缩文件和稀疏文件。
但是,此驱动不能读取加密后的文件,它忽略了Windows的安全信息和Windows设置的磁盘配额。
3.4 如果出现问题我应该怎么做?
此驱动对于只读操作是非常安全的,但我们不可能对每个可能性都进行测试。如果发生了什么问题,请您帮助我们找出问题所在并解决它。
请给开发小组发送邮件至linux-ntfs-dev@lists.sourceforge.net,告诉我们你在使用哪个版本的驱动程序,你的Linux内核版本(uname -a)和NTFS版本(Win NT、2000或XP)。
此外,如果有你认为有帮助的日志文件(/var/log/messages),请一并发给我们。
多谢。
3.5 怎样在Linux中加入对NTFS的支持?
大多数用户并不需要通过编译文件来启用对NTFS的支持。几乎每个Linux发行版(RedHat除外)都附加了对NTFS的支持。
如果你在使用的是RedHat 9(Shrike)、8.0(Psyche)或7.3(Valhalla),只需安装一个支持NTFS的rpm包。此rpm包中包括了详细的使用说明。
如果你在使用老版本的RedHat或其他不支持NTFS的发行版,就需要自己重新编译内核了。但这并不像听起来的那么困难,在编译指导页中可以找到详细的介绍。
3.6 哪个版本的驱动是最好的?
对于驱动程序来说,版本越新越好。新的版本写得更好、运行更快、错误更少并且对于对称多处理器也更加安全。新的驱动程序已经包含在版本2.5.11之后的内核中,我们也提供补丁程序向2.4内核添加此新驱动程序。
3.7 还有哪些其他的工具?
当前只有很少的一些工具并且它们都是面向程序开发者的。我们有一份所有工具的状态列表。
自然,列表中的排列顺序也代表了这些工具在编写NTFS驱动代码时起到的帮助作用的大小。
3.8 Linux的NTFS驱动程序是怎样写成的?
Microsoft并没有公布任何关于NTFS内部机制的文档,所以我们必须采用逆向修改的形式研究文件系统。方法大致包括:
- 用十六进制编辑器观察卷内容
- 执行一些操作,比如创建一个文件
- 使用十六进制编辑器寻找产生的变化
- 对变化进行分类并记录
- 不断重复以上四个步骤
以上听起来是都是很繁琐的工作吧,这样或许你就能理解这项任务的难度了。我们现在几乎已经完全了解了NTFS并撰写了相关文档放在http://linux-ntfs.sourceforge.net/ntfs/index.html,希望能对其他人有些帮助。
实际上,相对于收集相关信息来说,编写驱动程序则要简单很多了。
3.9 我们应该向谁表示感谢?
首先我们应该感谢 Martin von Loewis。早在1995年他就编写了最初的NTFS驱动程序,1997年此驱动被添加到Linux内核(2.1.74)中。同时,他也受到了以下这些人的帮助:
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.
其次我们应该感谢Anton Altaparmakov,整个项目在他的积极推动下才得以进行到现在。之前在项目没有得到有效维护时,是他接管了项目并保持了代码的稳定性。接着他又重写了整个驱动程序,为开发对写操作的支持打下了坚实的基础。他受到了以下这些人的帮助:
Pawel Kot, Richard Russon.
<!-- ............................................................. -->
4. 挂载NTFS卷
4.1 我可以挂载一个NTFS卷吗?
当然可以。驱动程序支持对所有版本NTFS的读取,但仅仅是读取。
4.2 NTFS驱动程序的安全性怎样?
当仅被用于读取时,原始的和新的驱动程序对于普通应用都是安全的。他们不会对你的文件系统做出任何改变,所以也不会造成任何损害。
此外,新的驱动程序对于对称多处理器(SMP)也是安全的。
4.3 我应该使用哪个分区?
在Linux中,第一个IDE控制器上的两个磁盘被分别被称作hda和hdb,第三和第四个也相应被称为hdc和hdd。SCSI磁盘则根据它们的顺序依次命名为sda、sdb等。
一个简单的寻找NTFS卷的方法是使用:
fdisk -l
输出可能如下所示:
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
4.4 我在使用哪个版本的NTFS驱动程序?
如果你的内核版本号是2.4.*或者2.5.0-2.5.10,可能你正在使用最初的NTFS驱动程序。如果你有2.5.11以后版本的内核,那么你就有了新的NTFS驱动。
一个更好的方法读取内核日志中关于NTFS的日志消息。试试下面这些命令中的任意一个(可能需要root权限才能读取日志)。
dmesg | grep -i ntfs grep -i ntfs /var/log/messages
原始驱动的版本号为1.1.*,而新驱动的版本号为2.*。
4.5 怎样挂载一个NTFS卷?
首先,你需要检查你的内核是否支持NTFS。下面的命令将会列出Linux支持的所有文件系统,如果其中有NTFS,那么一切都OK了。此外,你最好通过man 8 mount读一下关于挂载操作的指南。
cat /proc/filesystems
其次你需要开辟一块空间来挂载NTFS卷,然后就可以进行挂载操作了。
mkdir /mnt/windows mount /dev/hda1 /mnt/windows -t ntfs -r
若要改变已挂载的文件系统的权限,可以参考4.6节中的umask选项。如果你希望在系统启动时自动挂载卷,可以参考4.10节。
操作完成以后,你可以使用以下任何一个命令卸载分区:
umount /mnt/windows umount /dev/hda1
这些命令被称作“umount”。
4.6 常用的挂载选项。
这些挂载选项对两种驱动程序都适用。此外,我们强烈建议您阅读与挂载相关的参考文档。通用的挂载格式为:
mount device directory [options]
附加选项中的-o选项可以单独给出,也可以作为参数用逗号进行分隔。下面两个命令是等价的:
mount /dev/hda1 /mnt/windows -o X -o Y -o Z mount /dev/hda1 /mnt/windows -o X,Y,Z
-
-t ntfs
- 告诉挂载命令将要挂载的文件系统类型。这个选项并不是必须的,因为mount会自动识别大多数的文件系统。 -r
- 以只读形式挂载卷。挂载操作默认以可读写形式挂载卷。除非指明,否则驱动将会以只读形式自动挂载文件系统。 -o ro
- 和-r相同。 -o umask={VALUE}
- 因为安全的原因,默认给予已挂载的NTFS卷的权限为rwx------。参数 umask控制这些文件和路径的权限。详细的资料和例子请参见 4.9节。
-
mount /dev/hda1 /mnt/windows -t ntfs -r -o umask=0222
-o uid={USERID}
- 已挂载的NTFS卷上所有文件默认都是root所有的。如果提供uid参数就可以设置文件的所有者。这些参数可以是/etc/passwd中的任何用户名,或者任何表示用户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}
- 已挂载的NTFS卷上所有的文件默认都是root组所有的。如果提供gid参数就可以设置文件的组。这些参数可以是/etc/group中的组名,或者任何表示组id的数字。
-
mount /dev/hda1 /mnt/windows -t ntfs -r -o gid=winusers mount /dev/hda1 /mnt/windows -t ntfs -r -o gid=520
4.7 原始驱动程序的挂载选项。
要找出你在使用的驱动类型,请参见4.4节。这一节讨论仅适用于原始驱动程序的选项,所有的常用选项都在4.6节中进行说明。
一些选项以true或false作为参数。 你可以用yes或1替换true。 也可以用no或0替换false。
-
-o iocharset={NAME}
-
NTFS以Unicode形式保存所有的文件名和路径名,这样就可以表示任何语言中的任何字符。而Linux的NTFS驱动则默认将这些名称转换为ASCII形式,这对某些人来说是合适的,但是对于那些包括 ? 或 é 等字符的语言则不合适了。
NLS(本地语言支持)决定字符是如何被显示的。你可以选择像Unicode一样可以表示所有字符的utf8,或者你自己的代码页,比如iso8859-1(西欧)、iso8859-2(中欧)、gb2312(简体中文)、iso8859-8(希伯来文)。下面是一些挂载选项的例子:
-
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
-
如果你的内核不支持utf8,那么你可以通过这个选项启用NTFS驱动程序对utf8的支持。你应该在任何需要的地方使用
选项-o iocharset=utf8
。 -
mount /dev/hda1 /mnt/windows -t ntfs -r -o utf8=true
-o posix={BOOL}
-
Windows保存了文件名的大小写格式,但在读取时并不进行区分。因此你可以建立一个名为
MyFileName
的文件,然后用mYfILEname
的名称打开它。Linux默认对于大小写是敏感的,MyFile、Myfile和myfile是不同的文件。如果你希望Linux对NTFS卷具有和Windows相同的表现,那么就应将posix选项设置为true,将选项设置为false将使驱动程序具有与Linux类似的表现(默认设置)。
-
mount /dev/hda1 /mnt/windows -t ntfs -r -o posix=true
-o show_sys_files={BOOL}
-
如果这个选项被设置为true,那么文件系统的元数据将会处于可见状态。如若不可见,可通过提供它们的名称,比如
ls -l /$MFT
,使它们被显示地列出。因为glibc的局限,
$MFT
可能因为其inode值为0而不会被显示在列表之中。 -
mount /dev/hda1 /mnt/windows -t ntfs -r -o show_sys_files=true
4.8 新驱动程序的挂载选项。
要找出你在使用的驱动类型,请参见4.4节。这一节只讨论适用于新驱动程序的选项,所有的常用选项都在4.6节中进行说明。
一些选项以true或false作为参数。 你可以用yes或1替换true。 也可以用no或0替换false。
-
-o nls={NAME}
-
NTFS以Unicode形式保存所有的文件名和路径名,这样就可以表示任何语言中的任何字符。而Linux的NTFS驱动则默认将这些名称转换为ASCII形式,这对某些人来说是合适的,但是对于那些包括 ? 或 é 等字符的语言则不合适了。
NLS(本地语言支持)决定字符是如何被显示的。你可以选择像Unicode一样可以表示所有字符的utf8,或者你自己的代码页,比如iso8859-1(西欧)、iso8859-2(中欧)、gb2312(简体中文)、iso8859-8(希伯来文)。下面是一些挂载选项的例子:
-
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}
-
参数umask同时改变文件和路径两者的权限,fmask以同样的方式作用于文件而dmask作用于路径,这些选项也可以被组合使用。下面是一些例子:
-
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保存了文件名的大小写格式,但在读取时并不进行区分。因此你可以建立一个名为
MyFileName
的文件,然后用mYfILEname
的名称打开它。Linux默认对于大小写字母是敏感的,MyFile、Myfile和myfile是不同的文件。如果你希望Linux对于NTFS卷具有和Windows相同的表现,那么就应将case_sensitive选项设置为false。将选项设置为true将使驱动具有和Linux类似的表现(默认设置)。
-
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}
-
默认情况下,驱动程序在任何选项发生错误时将拒绝进行挂载,添加参数sloppy后驱动程序将完全忽略这些错误参数。
-
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}
-
这个参数控制驱动程序处理问题的方式。默认为尝试进行处理并继续执行,任何的corruption都会被标记并留待以后处理。另一种选择是让驱动程序尝试处理并进行恢复,目前驱动程序可以做的唯一恢复是用备份替换当前的启动扇区。
-
mount /dev/hda1 /mnt/windows -t ntfs -r -o errors=continue mount /dev/hda1 /mnt/windows -t ntfs -r -o errors=recover
4.9 怎样改变已经挂载的NTFS卷的权限?
共有三个可以控制文件和路径的权限和所有权的选项,分别是:umask、uid和gid。它们在常用挂载选项一节中都有提及。
下面是每个选项以及它们对文件所起作用的一些例子。我们每次都会使用相同的挂载命令,并且只显示相关的选项。
mount /dev/hda1 /mnt/windows -t ntfs -r
umask是对权限的过滤器,因此它的工作方式和chmod恰好相反。全部权限等价与777(rwxrwxrwx),umask值0222(-w--w--w-)则代表权限555(r-xr-xr-x)。
考虑到安全的原因,默认的umask被设置为0077。
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
到此为止,这些文件的所有者和所有组仍为root,下面我们将会尝试使用uid和gid选项。
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
最后我们将组合一些选项以得到精确的权限控制。下面的例子中,我们将赋予用户flatcap完全的控制权限,赋予组winuser中的用户读权限,而其他所有用户则没有任何访问权限。
mount ... -o umask=0027,uid=flatcap,gid=winuser -rwxr-x--- 1 flatcap winuser 28096 Aug 24 1996 chkdsk.exe
4.10 怎样自动挂载一个NTFS卷?
一旦你熟悉了挂载命令,就可以通过向/etc/fstab (filesystem table)中添加指令行来告诉Linux如何自动挂载卷了。
下面是一些挂载命令的例子和等价的fstab中指令行。 不必担心行尾 0 0 表示的意思。
mount /dev/hda1 /mnt/windows -t ntfs -r /dev/hda1 /mnt/windows ntfs ro 0 0
这里我们将 -r 转换为等价的 -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
<!-- ............................................................. -->
5. 在NTFS上启动操作系统
5.1 我可以在NTFS卷上启动Windows吗?
可以的,grub和lilo都可以从NTFS卷上启动Windows。实际的过程是Linux启动加载程序找到NTFS的启动加载程序并将控制权转给它。
5.2 我应该怎样使用lilo?
向文件/etc/lilo.conf中添加以下条目,然后重新运行lilo。
other = /dev/hda1 table = /dev/hda label = Windows
其中other指向包含Windows的分区而table指向磁盘的分区表。
5.3 我应该怎样使用grub?
向文件/boot/grub/grub.conf中添加以下条目。
title Windows root (hd0,0) makeactive chainloader +1
根据grub对磁盘计数的规则,/dev/hda代表hd0,hdb代表hd1,依次类推。磁盘分区则从0开始计数,这样hda1就代表hd0,0,hdc4则代表hd2,3。
<!-- ............................................................. -->
6. Linux发行版
6.1 哪个发行版附加了对NTFS的支持?
现在所知支持NTFS的Linux发行版有:Mandrake、Debian、SuSE、Gentoo、Lindows和Caldera。
实际的情况是,只要发行版的名称不是RedHat,那么它就支持NTFS。
6.2 为什么RedHat不支持NTFS?
我也很想知道,据传言说这是出于法律上的原因。
6.3 为什么RedHat在访问NTFS卷时会处于锁上状态?
通过命令uname -a检查你使用的内核版本,如果版本号是2.4.9的话你就需要更新内核了。访问RedHat的网址将会得到更详细的信息。
如果你愿意的话也可以自己编译内核。阅读怎样在Linux中加入对NTFS的支持?一节会得到更详细的信息。
6.4 有可以安装在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.
并不完全有。Phat Linux可以被安装在Windows内的FAT分区上,然后从Windows内部进行启动。新的驱动程序内含了充分的支持从而可以让其在NTFS分区上进行类似的启动过程。
<!-- ............................................................. -->
7. 新的Linux NTFS驱动程序
7.1 新的NTFS驱动程序是什么?
它是一个完全重写的NTFS驱动。最初的驱动程序已经写了很多年了,那时候我们对NTFS或者Linux知之甚少并且程序源代码也变得很难维护。所以我们根据最新的认识编写了新的驱动程序,它更简单、运行更迅速并且也更容易维护。
7.2 我需要使用它吗?
不。当前的Linux内核中已经包含了一个NTFS驱动程序,所以你并不需要使用新的驱动。最初的驱动虽然很老了,但对于日常使用仍足以可*地应对。
7.3 我该怎样使用新的驱动程序?
我们将新驱动作为Linux内核正式源代码的补丁发布。
http://linux-ntfs.sourceforge.net/downloads.html http://www.kernel.org/pub/linux/kernel/v2.4/
7.4 什么是补丁?
补丁是对一系列文本文件所做改变的集合。我们仅仅对NTFS相关代码做出改变,因此就没有必要在每次改变时发布所有的内核代码,这也是低效率的。我们只需对正式Linux内核源代码发布补丁即可。
解开源文件之后,进入源文件路径并执行如下命令(将path和patchname替换为所需内容):
patch -p1 < path/to/patchname
这将会对源文件进行修改,整个过程中应该不会发生错误或者失败。接着就是像往常一样编译内核了,这份FAQ中对此有详细说明。
7.5 如果我仍不理解呢?
非常抱歉,我们会尽可能帮助每个人,但我们自己的时间也是有限的。下面有一些站点可以帮助你了解Linux的基础知识,此外,你也可以向附近的Linux User Group寻求帮助。
7.6 什么时候Linux内核中才会收入这些新的代码?
我们要考虑到共有两个内核版本。新的驱动代码已经被收入到Linux内核开发版本中了,它是从2.5.11内核开始引入的。
而稳定的Linux内核版本,比如当前的2.4.20,仍在使用最初的驱动程序。我们对新驱动的代码感到满意,但是仍需使内核管理者相信它是有益的。
我们仍会经常发布补丁程序,直到代码被内核正式收入为止。
7.7 我们不可以对Windows 的驱动进行封装吗?
这听起来是个好主意,但是开始着手时则会遇到许多问题。
最大的技术问题是将Windows的DLL系统连接到Linux的VFS之中。问题倒是可以解决,但却不能很完美地解决。它需要作为内核的一部分运行,这也意味着如果它出了问题整个系统就会崩溃。我们没有源代码,自然也不可能很好地解决这个问题。
其次主要的问题就是稳定性。我们应该使用哪个版本的Windows系统文件呢?只针对单一的版本会限制其使用价值,使封装对所有的版本都有效则会带来编程上的恶梦。
更糟的是,发布Windows系统文件具有法律上的限制,这会带来很多问题。同样,Windows驱动程序的私有本质也决定了其他内核开发者没有办法对用户使用NTFS封装过程中出现的问题进行研究解决