在 Linux 下访问 Win 分区,不管是 fat 还是 ntfs 已经比较完善了,而且方法统一,文档丰富,驱动也很容易找。 但在 Win 下访问 Linux 各种分区就很不容易,只读然后导出文件的工具还好,无缝访问工具更难找。 所谓“无缝访问”,seamless access ,就是挂载到本地文件系统,不需要导出后才能读或写。以 iso 为例,比较用 winiso 导出文件再读,用 daemon 挂载成虚拟光驱就能直接读了,这就是“无缝访问”。 Win 实现无缝访问本地 ext2/3 xfs reiserfs 分区,一般是通过 win 的 IFS KIT 对各种文件系统分别实现驱动来实现的。一般是把一个分区映射成一个比如 J: K: 等的盘符。 这有一个很严重的问题,许可证问题,MS 的 IFS KIT 是商业软件,不能和 Linux 下 GPL 的 ext2/3 reiserfs xfs jfs 驱动代码编译到一起的。要法律上没有瑕疵,只有两种方案,重新发明和 IFS 同功能的接口,或者重新发明 linux 文件驱动。法律上,只能用“净室方法”在完全没有接触过替代代码的情况下,通过反向工程作出。 开源的同志们已经作出了 a free version ntifs.h 。许多开源驱动都是用这个的,所以不叫 IFS 叫 FSD 。只要用 GPL,就可以直接用 Linux kernel 里的文件驱动代码。 但许多不开源的,不管是商业还是免费,我觉得里面用的文件系统驱动代码很可疑。 还有一些驱动,不合法的用了 MS 的东西。 各种文件系统的支持程度大不一样,ext2/3 只读访问比较完善,驱动较多,reiserfs 较少,xfs 只有一个不能工作的雏形,ufs 有两个驱动,jfs 根本就没听说过有。 ext2 的驱动有 Ext2IFS , FSDExt2 , Ext2FSD , ext2fsnt 等等。 ext2/3 可以用 ltools , explorer2fs 导出 ext2/3 中的文件,不能无缝访问。 paragon-software.com 就是 partition manager 的公司,有个 Partition Explorer 可以导入,我记得以前好像有驱动的。 reiserfs 驱动只有 rfsd ,导入工具可以用 ltools + GUI 和 rfstool + GUI 。 Total Commander Plugins 支持 ext2/3 和 reiserfs ,据说就是两个开源驱动的组合,所以还是 GPL 的。 xfs 在 win 下有个 xfs32 ,只是雏形,连导入都不能工作。 usf 驱动有 ffsdrv 和 ufs2tools 。 这些软件肯定是要能独得,至于能不能写,我认为任何宣称可写的都值得怀疑,我是不会测试写的,就像 Linux 下我也不会写 ntfs 。至于 fat ,那不是现代的文件系统,结构很简单,我相信 linux 里的实现。 而 crossmeta 虽然用了 MS IFS 和 GPL 文件系统代码,却用一种巧妙的方式避开了法律问题,而且更具扩展性。 首先, crossmeta 用 MS IFS 实现了一个商业的核心程序,挂载了一个 V: 盘符的核心文件系统,布局类似 *nix 系统。在这个系统之上,提供另一个文件系统接口,把其他文件系统挂载到 V:\mnt\xxx 里。 支持 NTFS, FAT and CDFS ,还有 Win 不支持的 NFS version 2 and 3 over UDP 。 而 BSD License 的 UFS/FFS 代码也已经集成。 这个核心是不开源,但免费的。 然后,用自己的文件系统接口,加上 Linux kernel 里的文件驱动代码,作出 EXT2, XFS 和 Reiserfs 的驱动,这是 GPL 的。 Win 的文件系统接口跟 Linux 的是大不一样的,而 crossmeta 的文件系统接口可以更接近 Linux ,移植 Linux 文件系统会比较方便。加上 jfs 支持也不会太难。 但是,crossmeta 这样比较接近 *nix ,配置比较复杂。下面说一下: 从 http://www.crossmeta.com/crossmeta.html 下载 http://www.crossmeta.com/downloads/crossmeta-nfs-1_0_1.zip http://www.crossmeta.com/downloads/crossmeta-add-1_0.zip http://www.crossmeta.com/downloads/crossmeta_jumpstart.pdf 前两个是安装程序,都有 setup.exe ,按顺序安装,没有什么难处,后一个是文档,不读文档,你根本没法挂上任何一个文件系统。 把下面的存为 startvfs.cmd ,在系统启动后运行。 crossmeta 的服务有 bug ,千万不要让这些服务“自动”,一定要“手动”,然后用此文件启动。 还有,关机之前不要忘了先 stopvfs.cmd ,同样是因为这个 bug 。 否则,蓝屏 BSOD 的几率极大。 手工启动停止,一般不会出错。 请按你的需要修改下面两个脚本,挂某类型分区之前,先启动对应的服务 xfs ext2fs reiserfs 。 不要忘了先 mkdir V:\mnt\hda9 这样。还有,它的分区设备名称不是 Linux 样式的,da0 到 da<n> 是物理硬盘,分区从 da0s1 到 da0s<n> 直接对应逻辑分区的顺序,不管扩展分区。就像我下面挂载的。 [CODE]net start cxvfs net start cxnfs net start cxvfsmgr V:\bin\mount -a net start xfs V:\bin\mount -t xfs /dev/da0s6 /mnt/hda9 V:\bin\mount -t xfs /dev/da0s7 /mnt/hda10[/CODE] 有问题,可以用 vfsadmin 图形界面或 V:\bin\dmesg 查看。 很可能你正确启动后,explorer 里看不见 V: ,也不能在 explorer 里输入 V: 进入。 但此时,确实已经挂载,其他程序都能正常浏览,打开 V: , cmd 可以 V: 进入, notepad 可以打开 V: 里的文件。 重启 explorer 就能在 explorer 里看见了。Ctrl-alt-del 杀掉 explorer ,等他自动重启或你手动启动后,就能正常看见 V: 了。 停止,存为 stopvfs.cmd 一定要在关机前手动执行。 [CODE]net stop cxvfsmgr D:\Program\crossmeta\umountall net stop cxnfs net stop cxvfs[/CODE] 附录,提到的网址 收集此类程序和文档的网址 http://ext2fsd.sourceforge.net/resources/resources.htm http://www.acc.umu.se/~bosse/ http://www.sjhf.net/Article/sjhfdoc/200608/164.html http://www.linuxfans.org/nuke/modules.php?name=Forums&file=viewtopic&t=76764 http://www.linuxfans.org/nuke/modules.php?name=Forums&file=viewtopic&t=6779 WinNT 的文件系统接口 SDK IFS Kit 商业的微软的 http://www.microsoft.com/whdc/devtools/ifskit/default.mspx Ntifs.h 自由的 http://www.acc.umu.se/~bosse/ ext2/3 不能无缝访问的 explore2fs http://www.chrysocome.net/explore2fs ltools http://www.it.fht-esslingen.de/~zimmerma/software/ltools.html 命令行,有 Java 和 .net 的 GUI。 Partition Explorer http://www.paragon-software.com/hdm/index.htm Total Commander Plugins http://www.ghisler.com/plugins.htm ext2/3 可以挂为盘符,无缝访问的 Ext2IFS http://www.fs-driver.org/ fsdext2 http://www.yipton.demon.co.uk/ ext2fsd http://ext2fsd.sourceforge.net ext2IFS http://uranus.it.swin.edu.au/~jn/ ext2fsnt http://ashedel.chat.ru/ext2fsnt/ winext2fsd http://winext2fsd.sourceforge.net reiserfs 不能无缝访问的 ltools http://www.it.fht-esslingen.de/~zimmerma/software/ltools.html 命令行,有 Java 和 .net 的 GUI。 rfstool http://p-nand-q.com/download/rfstool.html rfsgui 好像 native 的 GUI http://www.wolfsheep.com/map/rfsgui/ YAReG .net 的 GUI http://yareg.akucom.de/ Total Commander Plugins http://www.ghisler.com/plugins.htm
reiserfs 只有这个驱动 rfsd http://rfsd.sf.net xfs 的 xfs32 根本不能用 http://blitz.phpwebhosting.com/content/XFS32 crossmeta http://www.crossmeta.com/crossmeta.html ffs/ufs 的 ffsdrv 驱动 http://ffsdrv.sourceforge.net/ ufs2tools 命令行不好用 http://ufs2tools.sourceforge.net/ |