Captive, 另一种虚拟技术
听说过Captive么?简单说它是Linux下完全读写NTFS文件系统的一个免费方案。因为其它Linux下的免费NTFS驱动大多在写NTFS文件系统时会有问题。所以这个Captive号称彻底解决了这一问题,因此受到很多人的特别青睐。之所以能彻底解决问题呢?原因是使用微软的NTFS驱动来访问NTFS文件系统,可谓原汤化原食!
那么如何让NTFS驱动在LINUX下跑起来呢?很多人自然想到虚拟机技术。但是细想仍然有问题,如果使用虚拟机,那么虚拟机里的NTFS驱动如何与作为HOST OS的LINUX进行文件操作这样的密集型通信呢,岂不是很慢?
带着这个问题,打看了一Captive的文档:http://www.jankratochvil.net/project/captive/doc/
读了几分钟,顿时感觉作者果然是个高手!
因为时间关系,在此只略微描述一下其实现思路。
简单来说,作者在LINUX下实现了NTFS驱动使用的内核API,核心也就是NTOSKRNL.EXE。也就是在LINUX下运行起这个WINDOWS内核环境,然后加载NTFS驱动程序。因此严格来说,Captive并没有真正按虚拟机的思路来实现。
那么Captive是如何实现Windows内核API的呢?这就要说到另一个开源的仿Windows操作系统ReactOS了。
ReactOS是一个开源的操作系统,比较全面的实现了Windows的用户和内核功能。ReactOS在实现上也很精确的模仿Windows的实现方式,源代码的目录树、文件名和函数都与微软的Windows相差无几,除了有些还没有实现完全。
但是目前ReactOS已经因为法律问题被停止审查了。
所以基于ReactOS的Captive在法律上也有着与ReactOS同样的问题。
今天就谈到这,下次将更详细的讨论一些Captive的实现细节(根据其源代码)。