Linux相容核心

Linux相容核心，是一個二進位制相容Windows和Linux應用軟體和裝置驅動程式的計算機作業系統核心。它試圖在Linux核心的基礎上利用Linux核心材料構建MS Windows核心功能模組從而擴充Linux核心的支援能力使之同時支援Linux和Windows的應用程式和裝置驅動。相容核心主要以C語言編寫，以GNU通用公共許可證授權使用。雖然相容核心還處在初期開發階段，但許多Windows程式已經可以在其上執行。與其相反但類似概念的是 coLinux。coLinux 是在Windows上執行Linux應用軟體。特性.相容核心專案在Linux核心的基礎上利用Linux核心材料構建一個Windows核心環境，形成一個新的核心，使Linux和Windows應用程式和裝置驅動程式能夠直接在其上執行。相容核心不是Linux核心和Windows核心的簡單堆砌。為了防止相容核心變得臃腫，如果一個功能可以用利用ReactOS，相容核心傾向採用後一種實現方法。相容核心有兩套系統呼叫：一套為Windows系統呼叫，另一套為Linux系統呼叫。Windows應用程式透過軟中斷“int 0x2e”訪問系統呼叫表進行Windows系統呼叫。Linux應用軟體則透過軟中斷“int 0x80”訪問系統呼叫表進行Linux系統呼叫。相容核心專案不計劃開發Windows和Linux的在使用者空間執行的庫檔案和Linux專案提供。開發.相容核心是由中國的浙大網新有限公司在2005年9月發起的自由軟體專案。作為專案負責人，毛德操先生提出了專案的設想和和開發路線。他寫了一系列闡述具體實現相容核心的文章，這些文章的彙編為相容核心白皮書。根據的相容核心白皮書，相容核心開發的主要工作是在Linux核心中實現“一個框架和兩個介面”：相容核心專案的成果為Linux核心補丁。相容核心的開發者期望這些補丁最終融入Linux標準核心成為Linux核心標準的一部分。那樣擅長開發Windows應用程式和裝置驅動的開發者就可以很方便地為linux平臺開發軟體或把他們的產品移植到linux平臺。對於Windows軟體開發公司來說，只需要開發維護一個程式碼庫就可以實現跨平臺，這將降低軟體跨平臺所帶來的成本，增加這些公司把產品移植到Linux平臺的意願。這些公司與Linux使用者都將從相容核心專案直接受益。開發策略和線路.相容核心採用漸進方式進行開發，它以已經能正常執行的Wine和NDISWrapper為開發始點，透過開發自身的Windows核心功能模組替換Wine中相應的功能模組來實現Windows系統呼叫相關功能；透過改造和擴充NDISWrapper來實現Windows裝置驅動框架；透過利用嫁接等方法實現Windows核心匯出函式。具體開發策略和線路 如下：相容核心以Wine為開發始點，相容核心開發在核內執行的核心功能模組來替代Wine中在使用者空間執行的功能模組，並透過對Wine打補丁使Windows應用軟體轉而使用相容核心功能模組。即是：如果相容核心已經實現了該功能，則使用相容核心提供的功能；否則使用Wine提供的功能。每替換了一些Wine的功能模組，經除錯測試穩定後就可以發行一個相容核心版本。這個發行版本又是下一個版本的開發始點，週而復始直到把Wine的所有功能模組被相容核心模組替代。相容核心開發不限於替代Wine功能模組，Wine在使用者空間受技術限制不能實現的功能相容核心也要加以實現。NDISWrapper已經在Linux核心中實現了一個WDM的雛形，而ReactOS則已有一個基本可以執行的Windows裝置驅動框架。相容核心將以NdisWrapper為開發始點，借鑑ReactOS的程式碼對NdisWrapper進行改造和擴充以實現Windows裝置驅動框架。ReactOS和NdisWrapper已經有一個基本的Windows核心匯出函式集合。相容核心在這個基本集合的基礎上逐步實現的自身的Windows核心匯出函式。具體實現方法是如果Linux核心中有對應物的可以透過對映(重定向)/嫁接(適配)的方法連線到Linux核心中的對應物上，小部分在Linux核心中沒有對應物則需要利用Linux核心材料加以實現。歷史版本.一個早期的版本,unifiedkernel-2.6.13,於2006年2月15日釋出。該版本實現了Windows系統呼叫機制。現在和未來的開發.相容核心正在整合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和一系列諸如把Wireless/NDIS/USB/PnP等的Windows系統呼叫轉向Linux系統呼叫的封裝。NDISWrapper不限於執行NDIS驅動，只要WDM驅動不呼叫它還未實現的Windows系統呼叫也是可以執行的。因此可以認為NDISWrapper是一個WDM的雛形。相容核心可以參考NDISWrapper和ReactOS的WDM實現構建自己的WDM。硬體需求.相容核心最低的硬體需求是:https://web.archive.org/web/20090224010114/http://www.longene.org/