发新话题
打印

[转载]用 crossmeta 实现在 Win 中无缝访问本地 ext2/3 xfs reiserfs 分区

[转载]用 crossmeta 实现在 Win 中无缝访问本地 ext2/3 xfs reiserfs 分区

信息来源: CU 文章作者: VirusCamp

VirusCamp原创,转载请注明作者,原始出处。

在Linux下访问Win分区,不管是fat还是ntfs已经比较完善了,而且方法统一,文档丰富,驱动也很容易找。

但在Win下访问Linux各种分区就很不容易,只读然后导出文件的工具还好,无缝访问工具更难找。

所谓“无缝访问”,seamlessaccess,就是挂载到本地文件系统,不需要导出后才能读或写。以iso为例,比较用winiso导出文件再读,用daemon挂载成虚拟光驱就能直接读了,这就是“无缝访问”。

Win实现无缝访问本地ext2/3xfsreiserfs分区,一般是通过win的IFSKIT对各种文件系统分别实现驱动来实现的。一般是把一个分区映射成一个比如J:K:等的盘符。
这有一个很严重的问题,许可证问题,MS的IFSKIT是商业软件,不能和Linux下GPL的ext2/3reiserfsxfsjfs驱动代码编译到一起的。要法律上没有瑕疵,只有两种方案,重新发明和IFS同功能的接口,或者重新发明linux文件驱动。法律上,只能用“净室方法”在完全没有接触过替代代码的情况下,通过反向工程作出。
开源的同志们已经作出了afreeversionntifs.h。许多开源驱动都是用这个的,所以不叫IFS叫FSD。只要用GPL,就可以直接用Linuxkernel里的文件驱动代码。
但许多不开源的,不管是商业还是免费,我觉得里面用的文件系统驱动代码很可疑。
还有一些驱动,不合法的用了MS的东西。

各种文件系统的支持程度大不一样,ext2/3只读访问比较完善,驱动较多,reiserfs较少,xfs只有一个不能工作的雏形,ufs有两个驱动,jfs根本就没听说过有。

ext2的驱动有Ext2IFS,FSDExt2,Ext2FSD,ext2fsnt等等。
ext2/3可以用ltools,explorer2fs导出ext2/3中的文件,不能无缝访问。
paragon-software.com就是partitionmanager的公司,有个PartitionExplorer可以导入,我记得以前好像有驱动的。

reiserfs驱动只有rfsd,导入工具可以用ltools+GUI和rfstool+GUI。
TotalCommanderPlugins支持ext2/3和reiserfs,据说就是两个开源驱动的组合,所以还是GPL的。

xfs在win下有个xfs32,只是雏形,连导入都不能工作。

usf驱动有ffsdrv和ufs2tools。

这些软件肯定是要能独得,至于能不能写,我认为任何宣称可写的都值得怀疑,我是不会测试写的,就像Linux下我也不会写ntfs。至于fat,那不是现代的文件系统,结构很简单,我相信linux里的实现。

而crossmeta虽然用了MSIFS和GPL文件系统代码,却用一种巧妙的方式避开了法律问题,而且更具扩展性。

首先,crossmeta用MSIFS实现了一个商业的核心程序,挂载了一个V:盘符的核心文件系统,布局类似*nix系统。在这个系统之上,提供另一个文件系统接口,把其他文件系统挂载到V:\mnt\xxx里。
支持NTFS,FATandCDFS,还有Win不支持的NFSversion2and3overUDP。
而BSDLicense的UFS/FFS代码也已经集成。
这个核心是不开源,但免费的。

然后,用自己的文件系统接口,加上Linuxkernel里的文件驱动代码,作出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的几率极大。
手工启动停止,一般不会出错。

请按你的需要修改下面两个脚本,挂某类型分区之前,先启动对应的服务xfsext2fsreiserfs。
不要忘了先mkdirV:\mnt\hda9这样。还有,它的分区设备名称不是Linux样式的,da0到da是物理硬盘,分区从da0s1到da0s直接对应逻辑分区的顺序,不管扩展分区。就像我下面挂载的。
[CODE]netstartcxvfs
netstartcxnfs
netstartcxvfsmgr
V:\bin\mount-a
netstartxfs
V:\bin\mount-txfs/dev/da0s6/mnt/hda9
V:\bin\mount-txfs/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]netstopcxvfsmgr
D:\Program\crossmeta\umountall
netstopcxnfs
netstopcxvfs[/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/mo ... e=viewtopic&t=76764
http://www.linuxfans.org/nuke/mo ... le=viewtopic&t=6779

WinNT的文件系统接口SDK
IFSKit商业的微软的http://www.microsoft.com/whdc/devtools/ifskit/default.mspx
Ntifs.h自由的http://www.acc.umu.se/~bosse/

ext2/3不能无缝访问的
explore2fshttp://www.chrysocome.net/explore2fs
ltoolshttp://www.it.fht-esslingen.de/~zimmerma/software/ltools.html
命令行,有Java和.net的GUI。
PartitionExplorerhttp://www.paragon-software.com/hdm/index.htm
TotalCommanderPluginshttp://www.ghisler.com/plugins.htm

ext2/3可以挂为盘符,无缝访问的
Ext2IFShttp://www.fs-driver.org/
fsdext2http://www.yipton.demon.co.uk/
ext2fsdhttp://ext2fsd.sourceforge.net
ext2IFShttp://uranus.it.swin.edu.au/~jn/
ext2fsnthttp://ashedel.chat.ru/ext2fsnt/
winext2fsdhttp://winext2fsd.sourceforge.net

reiserfs不能无缝访问的
ltoolshttp://www.it.fht-esslingen.de/~zimmerma/software/ltools.html
命令行,有Java和.net的GUI。
rfstoolhttp://p-nand-q.com/download/rfstool.html
rfsgui好像native的GUIhttp://www.wolfsheep.com/map/rfsgui/
YAReG.net的GUIhttp://yareg.akucom.de/
TotalCommanderPluginshttp://www.ghisler.com/plugins.htm

reiserfs只有这个驱动
rfsdhttp://rfsd.sf.net

xfs的
xfs32根本不能用http://blitz.phpwebhosting.com/content/XFS32
crossmetahttp://www.crossmeta.com/crossmeta.html

ffs/ufs的
ffsdrv驱动http://ffsdrv.sourceforge.net/
ufs2tools命令行不好用http://ufs2tools.sourceforge.net/

TOP

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

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


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

TOP

发新话题