Linux兼容核心

Linux兼容核心,是一個二進制兼容Windows和Linux套用軟體和設備驅動程式的計算機作業系統核心。

基本介紹

  • 中文名:Linux兼容核心
  • 外文名:Linux Unified Kernel、Longene
  • 性質:二進制兼容Windows和Linux
  • 編寫:C語言
相關介紹,特性,開發,可利用的資源,硬體需求,

相關介紹

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。

硬體需求

兼容核心最低的硬體需求是:

相關詞條

熱門詞條

聯絡我們