NTFS&Linux

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节对此有详细介绍)。

NB 你可以在FAT16文件系统上安装Windows NT,在FAT32文件系统上安装Windows 2000或XP,然后再可以升级到NTFS。

返回页面顶部

1.4 每一版本Windows中的NTFS都一样吗?

不,它们看起来很相似,但新的版本总有一些附加的特性。比如,Windows 2000就有磁盘配额(quotas)。

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

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
    

如果该卷正在使用中,转换将会在下次系统启动时进行。

NB 此命令不支持逆向操作,详情请见下个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驱动的开发。如果你愿意帮助我们,请发邮件给我:email

怎样写入NTFS。如果你在使用装有双系统的机器并且只需要对NTFS写操作的支持来从Linux向 Windows转移文件,你可以通过使用Windows下的ext2/ext3驱动程序从Linux分区中读取文件来代替。这种方式只需使用两个只读的驱动,并且仍旧可以从一个文件系统向另一个拷贝文件。

截至2003年6月4日,共有以下这些开源的支持Linux ext2和ext3文件系统的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内部机制的文档,所以我们必须采用逆向修改的形式研究文件系统。方法大致包括:

  1. 用十六进制编辑器观察卷内容
  2. 执行一些操作,比如创建一个文件
  3. 使用十六进制编辑器寻找产生的变化
  4. 对变化进行分类并记录
  5. 不断重复以上四个步骤

以上听起来是都是很繁琐的工作吧,这样或许你就能理解这项任务的难度了。我们现在几乎已经完全了解了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
    

NB 若要改变已挂载的文件系统的权限,可以参考4.6节中的umask选项。如果你希望在系统启动时自动挂载卷,可以参考4.10节

操作完成以后,你可以使用以下任何一个命令卸载分区:

    umount /mnt/windows
    umount /dev/hda1
    

NB 这些命令被称作“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,使它们被显示地列出。

NB 因为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中指令行。 NB 不必担心行尾 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发行版有:MandrakeDebianSuSEGentooLindowsCaldera

实际的情况是,只要发行版的名称不是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封装过程中出现的问题进行研究解决 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值