Linux兼容内核(longene)“龙井”项目背景

系统 Linux
Linux兼容内核项目是由浙大网新科技有限公司投资和主持的开源项目,旨在使用户可以直接在Linux上高效运行Windows应用,而无需依赖于Windows操作系统。

 Linux兼容内核项目是由浙大网新科技有限公司投资和主持的开源项目,旨在使用户可以直接在Linux上高效运行Windows应用,而无需依赖于Windows操作系统。
Linux操作系统是由Unix操作系统演变而来的。由于是开放源代码的项目,问世之后就得到了广泛的关心和参与,得以逐步趋于成熟。在技术 上,Linux几乎全盘继承了Unix,所以从一开始就有着相当的高度和优势。 然而,Linux在技术上的优势和先进性并未转化成市场占有率。十多年过去了,台式机操作系统的市场实际上已被Windows垄断。

短期计划
2009年2月,将提供针对主流发行版的Linux兼容内核安装包 。

中期计划
实现所有win32系统调用,真正体现Linux兼容内核在兼容性和效率上的优势。

长期计划
实现Windows设备驱动框架与设备驱动支撑界面。

项目背景

就中国目前的状况而言,绝大多数用户都使用Windows,并且已经习惯于使用Windows。从某一方面而言,微软在占领中国操作系统市场的过程中,已经把一代中国人训练成了Windows的用户。

可是,操作系统不同于其他个别的应用软件,这是带有根本性的基础软件。整个世界、整个国家的计算机应用都依赖于同一个公司的产品,这不是一件好事。而在桌面操作系统上还有可能与Windows形成竞争的,则非Linux莫属。

为此,无论是国外还是国内,都有不少的公司和组织在致力于推动Linux的应用、拓展Linux的市场,并且得到许多国家政府的支持,然而效果却不甚理想。究其原因,一是用户已经习惯于使用Windows,二是许多用户实际上已经离不开Windows上的一些应用软件。

于是人们开始设法让Windows的应用软件可以在Linux上运行,这样就可以使Windows的用户“平滑转移”到Linux,同时仍能使用 Windows应用软件。Wine就是在这个方向上有着里程碑意义的项目和产品。其思路是一个适配层在Linux内核外,形成一个虚拟的Win32应用软 件界面,让Windows应用软件“以为”是在Windows内核上运行。

实质上,这是企图在内核外“抹平”两个内核之间的差别,即“内核差别核外补”。可是,要在核外补平核内的差别实非易事,有些差别甚至不可能在核外补平。即使是可以在核外补平的那一部分,也在性能上有着不同程度的问题。所以Wine并没有扭转局势。

在这样的背景下,知名操作系统专家毛德操在2003年提出了开发“兼容内核”的思路,主张“内核差别核内补”,对Linux内核加以必要的改进,使其能既支持Linux应用软件、也支持Windows应用软件。

经过一段时期的酝酿,Linux兼容内核项目于2005年9月正式启动,由毛德操领导,浙大网新中央研究院进行研发。项目的官方网站linux.insigma.com.cn">http://linux.insigma.com.cn也同时正式开通。

作为上市公司和高新企业,浙大网新从技术、人才和资金方面为项目的顺利实施提供了强有力的支持,并将兼容内核的研发纳入公司的发展战略。

其意图为把Linux的内核扩充成既支持Linux应用、也支持Windows应用,既支持Linux设备驱动、也支持Windows设备驱动的 兼容内核,从而实现Linux与Windows之间的高度兼容,使用户可以直接在Linux上高效运行Windows应用而无需安装Windows操作系 统,摆脱对Windows操作系统的依赖。

社区反响

兼容内核项目的启动得到了许多专家的赞同。中国开源软件推进联盟主席陆首群、工程院院士倪光南、OSDL亚太区总裁平野正信等人均给予高度评价。

包括北京共创开源软件有限公司在内的一些Linux厂商更表示愿与浙大网新携手迎接中国开源软件产业的新崛起。此外,浙大网新还与浙江大学计算机学院的同行结成合作伙伴关系,共同从事兼容内核的研发

#p#

项目思路

对于兼容内核的研发,毛德操总结提出了以“一个框架,两个界面”为主体,“嫁接与仿制相结合”的思路。

所谓一个框架是指设备驱动框架。这是因为两个内核中的设备驱动框架有较大的结构性不同,而把Windows的设备驱动模块(.sys模块)动态安装到Linux内核中去,Linux内核中必须有与之配套的框架。

而两个界面,则是指系统调用界面和内核模块支撑界面。前者的目的是在Linux内核中实现一套与Linux系统调用平行的Windows系统调用,实际实现的是Windows的“应用软件二进制界面”、即ABI。

后者的目的是为Windows设备驱动模块的运行提供类似于库函数的支撑,相当于Linux内核中“导出”函数的集合。但是,“一个框架,两个界面”的实现并不意味着从头开始研发,而是应该尽量把Windows函数的界面“嫁接”到Linux内核中的对应函数上。

事实上,对于大多数的Windows系统调用和内核模块支撑函数,在不同程度上Linux内核中都能找到其对应物。例如,在请求分配缓冲区 时,Windows的设备驱动模块需要内核的支持,而Linux的设备驱动模块也有同样的要求,二者的函数调用界面不同,但是实际完成的操作却是基本相同 的。

当然,嫁接并不是简单的对接,往往还要对Linux内核中的资源加以扩充、修改、甚至重新组合。另一方面,对于一些Windows所特有的、在Linux内核中找不到对应物的功能和性质,则需要加以仿制。

技术路线

在具体的技术路线方面,Linux兼容内核项目以Wine为起点,初期阶段基本依赖Wine,随着Windows系统调用的逐步实现,慢慢地逐步走向独立自主,最后就基本上摆脱Wine,实现了Windows的系统调用界面。

之所以说“基本上”摆脱Wine,是因为Wine项目所开发的许多(用户空间的)动态连接库(DLL)对于兼容内核而言还是不可或缺的。显然,这样一条渐进的研发路线有助于兼容内核的平滑推进。

对于设备驱动,则以另一个开源项目NDIS Wrapper的成果作为起点,同样也采用渐进的研发路线。此外,对于具体功能点的实现,例如具体系统调用的实现,将采用先粗后细,逐步逼近,螺旋式推进 的策略。这是因为Windows系统调用往往带有许多可选项,要一次就实现所有的可选项不现实,也会拖其它功能点的后腿,所以螺旋式推进是比较合适的对 策。

项目宗旨

作为一个开源项目,Linux兼容内核将遵守GPL规定,公开按规定应予公开的源代码。同时也欢迎世界各地的网友与爱好者参与,形成一个Linux兼容内核的开源社区。在开发兼容内核项目的同时,也让Linux的开源精神得到更好的发扬。

同时浙大网新将维持一支专职的开发团队,采取专职与业余相结合的开发方针。条件成熟的时候,将邀请若干专家组成一个技术委员会,更好地指导本项目的进行。

显然,Linux兼容内核的开发不可能是唾手可得,在技术上有着很高的要求。可以肯定的是,Linux兼容内核项目有很长的路要走,也会遇上一些困难。

在项目开发人员努力的同时,也希望广大Linux、开源软件甚至Windows的爱好者一同参与进来,无论是献计献策还是协同开发,都可以给这个项目予更多的帮助和支持。

我们期待,到兼容内核的研发(基本)成功之日,我们不光有了一个广大用户所期待的操作系统,更成长起来了一支高水平的专业队伍,甚至是一支操作系统的专家队伍。显然,无论是对于公司、对于用户,还是对于国家,这都是很有意义的。

[[965]]

 知名操作系统场专家 毛德操

[[966]]

 Linux兼容内核项目开发组
 

 一般问题
问:在Linux上可以使用Wine运行win32程序,为什么要开发Linux兼容内核?
答: 很多用户在Linux上使用Wine运行win32程序,并且经过长期的开发,Wine的运行效率也得到了很大的提高,但是,Wine毕竟只是在用户空间 运行的中间平台,无法彻底解决运行效率、替换所有dll等问题。Linux兼容内核的目标是在内核层面实现兼容,因此不会出现这些问题。
问:Linux兼容内核的代码是否公开?
答:Linux兼容内核是一个开源项目,会遵照GPL的规定公开相关代码。
问:Linux兼容内核中的系统调用如何实现?
答:请参见《项目白皮书》。
问:为什么Linux兼容内核还要使用Wine?
答:Linux 兼容内核目前尚在开发阶段,有很多系统调用等都尚未实现,仍需要借助Wine进行过渡,完成Linux兼容内核未实现的功能。不过,Linux兼容内核使 用的Wine仅包括其实现的dll和wineserver等服务程序,进程/线程管理等Windows系统的基本运行机制不再采用Wine的实现。
问:Linux兼容内核的使用是否受Linux系统发行版的限制?
答:Linux 兼容内核只涉及Linux内核的修改,因此,理论上可以在任何Linux发行版上运行。另外Linux兼容内核项目组也在包括Fedora、 Ubuntu、红旗、MagicLinux等发行版上进行了测试,可以正常使用。不过由于发行版的差异,应用程序在Linux兼容内核上运行的效果可能有 差异。


 

【编辑推荐】

  1. Linux系统最佳实践工具:命令行技术
  2. 嵌入式系统Linux内核开发实战指南
  3. Linux设备驱动开发详解
责任编辑:张燕妮 来源: 中国IT实验室
相关推荐

2009-03-10 17:15:07

Linux兼容内核Win程序

2009-05-27 19:02:08

Linux兼容内核发布

2009-05-24 14:36:07

Linux内核发布

2009-03-11 19:09:52

Linux兼容内核Wine

2021-06-15 14:42:59

Linux 5.14Rasperry PI计算

2013-11-15 13:10:36

SUSE SolidDSUSELinux内核

2021-02-20 06:08:07

LinuxWindows内核

2021-06-18 12:46:30

LinuxRustGoogle

2010-03-02 09:17:32

Linux local

2010-08-18 13:27:15

CSS兼容IE6

2018-05-18 09:07:43

Linux内核内存

2013-11-07 13:59:56

Linux内核

2013-11-25 14:07:11

Linux内核内核特性

2021-05-19 07:56:26

Linux内核抢占

2014-07-29 15:44:33

Linux内核Crash

2013-11-06 13:03:10

Linux内核

2010-04-21 12:54:46

Unix内核

2013-11-05 09:58:39

Linux内核

2013-11-12 11:01:46

Linux内核

2021-02-25 09:50:01

LinuxWindows内核
点赞
收藏

51CTO技术栈公众号