Linux兼容内核
二进制兼容Windows和Linux应用软件和设备驱动程序的计算机操作系统内核
Linux兼容内核,是一个二进制兼容Windows和Linux应用软件和设备驱动程序的计算机操作系统内核。
相关介绍
Linux兼容内核(Linux Unified Kernel,亦称 Longene),是一个二进制兼容Windows和Linux应用软件和设备驱动程序的计算机操作系统内核。它试图在Linux内核的基础上利用Linux内核材料构建MS Windows内核功能模块从而扩充Linux内核的支持能力使之同时支持Linux和Windows的应用程序和设备驱动。
兼容内核主要以C语言编写,以GNU通用公共许可证授权使用。虽然兼容内核还处在初期开发阶段,但许多Windows程序已经可以在其上运行。与其相反但类似概念的是 coLinux。coLinux 是在Windows上运行Linux应用软件。
特性
兼容内核项目在Linux内核的基础上利用Linux内核材料构建一个Windows内核环境(包括进程管理、线程管理、对象管理、虚拟内存管理、同步、系统调用、系统注册机制和设备驱动程序框架等Windows系统内核机制),形成一个新的内核,使Linux和Windows应用程序和设备驱动程序能够直接在其上运行。
兼容内核不是Linux内核和Windows内核的简单堆砌。为了防止兼容内核变得臃肿,如果一个功能可以用利用ReactOS(Windows的开源仿制品)代码实现,也可以利用Linux内核函数通过编程实现(ReactOS、Wine、NDISwrapper代码作为参考),兼容内核倾向采用后一种实现方法。
兼容内核有两套系统调用(syscalls)及其相应的系统调用表(syscall table):一套为Windows系统调用,另一套为Linux系统调用。Windows应用程序通过软中断“int 0x2e”访问系统调用表进行Windows系统调用。Linux应用软件则通过软中断“int 0x80”访问系统调用表进行Linux系统调用。
兼容内核项目不计划开发Windows和Linux的在用户空间运行的库文件(.dll和.o文件)。这些库文件由Wine项目(或MS Windows/ReactOS项目)和Linux项目提供。
开发
兼容内核是由中国的浙大网新有限公司在2005年9月发起的自由软件项目。作为项目负责人,毛德操先生提出了项目的设想和和开发路线。他写了一系列阐述具体实现兼容内核的文章,这些文章的汇编为兼容内核白皮书。根据的兼容内核白皮书,兼容内核开发的主要工作是在Linux内核中实现“一个框架和两个界面”:
兼容内核项目的成果为Linux内核补丁。兼容内核的开发者期望这些补丁最终融入Linux标准内核成为Linux内核标准的一部分。那样擅长开发Windows应用程序和设备驱动的开发者就可以很方便地为linux平台开发软件或把他们的产品移植到linux平台。对于Windows软件开发公司来说,只需要开发维护一个代码库就可以实现跨平台,这将降低软件跨平台所带来的成本,增加这些公司把产品移植到Linux平台的意愿。这些公司与Linux用户都将从兼容内核项目直接受益。
3.1开发策略和线路
兼容内核采用渐进方式进行开发,它以已经能正常运行的Wine和NDISWrapper为开发始点,通过开发自身的Windows内核功能模块替换Wine中相应的功能模块来实现Windows系统调用相关功能;通过改造和扩充NDISWrapper来实现Windows设备驱动框架;通过利用嫁接(重定向)等方法实现Windows内核导出函数。具体开发策略和线路 如下:
3.2历史版本
一个早期的版本,unifiedkernel-2.6.13,于2006年2月15日发布。该版本实现了Windows系统调用机制。
3.3现在和未来的开发
兼容内核正在集成QEMU代码以增加对ARM架构上直接运行Windows应用的x86架构二进制镜像的支持。兼容内核开发将有两个分支。一个是1.0分支,这是针对x86架构上的跨操作系统兼容。另一个是2.0分支,这是针对既跨操作系统又跨CPU架构的兼容。1.0分支的进展也体现在2.0分支中。 兼容内核开发人员已经对Windows设备驱动框架进行了讨论,NidsWrapper的代码移植到兼容内核的工作已经开展。预计不久将进行实现Windows设备驱动框架的开发工作
可利用的资源
兼容内核不是从零开始编程的,它是在其他项目已有的代码基础上进行开发的。它对这些项目进行集成和再发展。兼容内核项目可利用的资源包括Linux kernel、Reactos、Wine、kernel-win32和NDISwrapper等,它们都是开源项目源代码可以自由取得。
兼容内核是基于Linux内核的。它在Linux可加载内核模块(LKMs)中实现它的功能。与ReactOS项目从零开始编码实现Windows内核不同,兼容内核是利用Linux内核中丰富的内核功能函数来实现Windows内核功能的。其实现Windows机制的主要途径如下:ReactOS是一个MS Windows内核的开源仿制品。与兼容内核利用Linux内核材料构建Windows内核的开发路线不同,它是完全从零开始编码制作Windows内核的。和兼容内核一样ReactOS只是一个内核,它依赖Wine项目的用户空间库文件使整个系统能够运行。兼容内核参考ReactOS的代码实现Windows内核的基本机制,包括进程/线程管理机制,内存管理机制,驱动系统框架等。Wine在用户空间实现了一个把Windows程序对Windows API调用转向Linux API调用的兼容层,这个兼容层还负有Windows内核的进程/线程管理等的职能。虽然Wine和兼容内核均利用内核材料构建Windows API机制,但具体的实现方法是不同的,兼容内核是在内核空间利用Linux内核的核内函数来实现的,而Wine利用的是宿主操作系统的API来实现。另外兼容内核是在核内利用内核函数实现进程管理、线程管理、对象管理、虚拟内存管理、同步、系统调用、系统注册机制和设备驱动程序框架等Windows基本机制的,而Wine是在用户空间实现这些功能的。虽然兼容内核采取的技术线路与Wine的不相同,但Wine的实现方法还是可以能为兼容内核提供借鉴的,而Wine对Windows内核有关数据结构的研究成果则可以直接被兼容内核利用。Windows用户空间库文件(.dll文件)虽然不是内核的一部分,但它们是操作系统能够运行应用软件不可或缺的部分。Windows用户空间库文件数量众多,Wine项目花了大量的精力仿制了这些文件。兼容内核只实现Windows内核相关功能,它依赖Wine提供Windows用户空间库文件。大多数Wine的dll文件可以直接用在兼容内核上。兼容内核已经实现进程/线程管理、对象管理、虚拟内存管理等功能,但还有部分功能没有实现。在过渡时期,兼容内核利用Wine来提供它还没有实现的功能。Kernel-Win32是一个试图把Wine的部分模块移入Linux内核以提高Wine的运行效率的项目。兼容内核利用(部分是重实现)kernel-win32项目代码实现了兼容内核的Windows系统调用机制。NDISWrapper在Linux内核中实现了Windows内核的一些部件,包括NTOSKRNL API(一个基本的WDM控制器)和一系列诸如把Wireless/NDIS/USB/PnP等的Windows系统调用转向Linux系统调用的封装。NDISWrapper不限于执行NDIS驱动,只要WDM驱动不调用它还未实现的Windows系统调用也是可以运行的。因此可以认为NDISWrapper是一个WDM的雏形。兼容内核可以参考NDISWrapper和ReactOS的WDM实现构建自己的WDM。
硬件需求
兼容内核最低的硬件需求是:
参考资料
最新修订时间:2023-02-25 18:35
目录
概述
相关介绍
特性
参考资料