複製鏈接
請複製以下鏈接發送給好友

Linux兼容內核

鎖定
Linux兼容內核,是一個二進制兼容Windows和Linux應用軟件和設備驅動程序的計算機操作系統內核。
中文名
Linux兼容內核
外文名
Linux Unified Kernel、Longene
性    質
二進制兼容Windows和Linux
編    寫
C語言

Linux兼容內核相關介紹

Linux兼容內核(Linux Unified Kernel,亦稱 Longene),是一個二進制兼容Windows和Linux應用軟件和設備驅動程序的計算機操作系統內核。它試圖在Linux內核的基礎上利用Linux內核材料構建MS Windows內核功能模塊從而擴充Linux內核的支持能力使之同時支持Linux和Windows的應用程序和設備驅動。
兼容內核主要以C語言編寫,以GNU通用公共許可證授權使用。雖然兼容內核還處在初期開發階段,但許多Windows程序已經可以在其上運行。與其相反但類似概念的是 coLinux。coLinux 是在Windows上運行Linux應用軟件。

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項目提供。

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兼容內核可利用的資源

兼容內核不是從零開始編程的,它是在其他項目已有的代碼基礎上進行開發的。它對這些項目進行集成和再發展。兼容內核項目可利用的資源包括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。

Linux兼容內核硬件需求

兼容內核最低的硬件需求是: