免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 5442 | 回复: 5
打印 上一主题 下一主题

【原创】用 crossmeta 实现在 Win 中无缝访问本地 ext2/3 xfs reiserfs 分区 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-08-28 00:43 |只看该作者 |倒序浏览
VirusCamp 原创,转载请注明作者,原始出处。

在 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> 直接对应逻辑分区的顺序,不管扩展分区。就像我下面挂载的。
  1. net start cxvfs
  2. net start cxnfs
  3. net start cxvfsmgr
  4. V:\bin\mount -a
  5. net start xfs
  6. V:\bin\mount -t xfs /dev/da0s6 /mnt/hda9
  7. V:\bin\mount -t xfs /dev/da0s7 /mnt/hda10
复制代码


有问题,可以用 vfsadmin 图形界面或 V:\bin\dmesg 查看。

很可能你正确启动后,explorer 里看不见 V: ,也不能在 explorer 里输入 V: 进入。
但此时,确实已经挂载,其他程序都能正常浏览,打开 V: , cmd 可以 V: 进入, notepad 可以打开 V: 里的文件。
重启 explorer 就能在 explorer 里看见了。Ctrl-alt-del 杀掉 explorer ,等他自动重启或你手动启动后,就能正常看见 V: 了。

停止,存为 stopvfs.cmd 一定要在关机前手动执行。
  1. net stop cxvfsmgr
  2. D:\Program\crossmeta\umountall
  3. net stop cxnfs
  4. net stop cxvfs
复制代码


附录,提到的网址

收集此类程序和文档的网址
  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/mo ... ewtopic&t=76764
  http://www.linuxfans.org/nuke/mo ... iewtopic&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/

[ 本帖最后由 VirusCamp 于 2006-8-28 19:42 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2006-08-28 19:35 |只看该作者

重要补充

crossmeta 的下列有 bug ,千万不要让这些服务“自动”,一定要“手动”,然后用此文件启动。
还有,关机之前不要忘了先 stopvfs.cmd ,同样是因为这个 bug 。
否则,蓝屏 BSOD 的几率极大。
手工启动停止,一般不会出错。

请按你的需要修改下面两个脚本,挂某类型分区之前,先启动对应的服务 xfs ext2fs reiserfs 。


很可能你正确启动后,explorer 里看不见 V: ,也不能在 explorer 里输入 V: 进入。
但此时,确实已经挂载,其他程序都能正常浏览,打开 V: , cmd 可以 V: 进入, notepad 可以打开 V: 里的文件。
重启 explorer 就能在 explorer 里看见了。Ctrl-alt-del 杀掉 explorer ,等他自动重启或你手动启动后,就能正常看见 V: 了。

[ 本帖最后由 VirusCamp 于 2006-8-28 19:43 编辑 ]

论坛徽章:
0
3 [报告]
发表于 2008-08-05 15:26 |只看该作者
支持一下。不错的东西

论坛徽章:
0
4 [报告]
发表于 2008-08-05 16:02 |只看该作者
支持一下

论坛徽章:
0
5 [报告]
发表于 2008-08-07 16:45 |只看该作者
不错。呵呵

论坛徽章:
0
6 [报告]
发表于 2008-08-07 17:07 |只看该作者
现在很多在M$ Windows下面以只读方式访问Lnux分区文件系统的软件,不是技术上作不到无缝加载,而是那样在逻辑上是很危险的事情。M$的NTFS和Linux的 ext3/4 在组织文件,处理metadata,日志管理和磁盘位图和访问安全控制的设计上差别很大,所以为了数据安全,只读+导出的方式是最理想的. 我个人对于在M$Windows下通过可读写直接访问的方式来获得Linux分区和文件系统上的数据的做法,持保留意见.
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP