跳至內容

Linux相容核心

出自Taiwan Tongues 台語維基
於 2025年8月23日 (六) 18:15 由 TaiwanTonguesApiRobot留言 | 貢獻 所做的修訂 (從 JSON 檔案批量匯入)

(差異) ←上個修訂 | 已批准修訂 (差異) | 最新修訂 (差異) | 下個修訂→ (差異)

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 零 x 二 e」存取系統呼叫表進行 Windows 系統呼叫。Linux 應用軟體則通過軟中斷「int 零 x 八十」存取系統呼叫表進行 Linux 系統呼叫。

相容核心專案無咧計畫開發 Windows 和 Linux 的佇咧使用者空間執行的庫檔案(. dll 和 . so 檔案)。 遮的庫檔案由 Wine 專案(抑是 MS Windows / ReactOS 專案)和 Linux 專案提供。

佇咧 Linux 核內空間實現 Windows 核心機制方案的優點

  • 開發快速。Linux 核心已經有成熟的 CPU 管理、記持體管理、磁碟管理佮外圍硬體管理等功能模組佮其實現函式。是用擴充的 Linux 核心,通過嫁接(重新導向)抑是重用 Linux 核心相關功能函式等方法實現 Windows 核心功能的方案愛比對無開始編碼實現 Windows 核心的方案愛緊足濟。
  • 相容性好,效率懸。佇核內空間實現 Windows 核心機制比佇核外實現會當達到閣較大的相容性。比佇核外利用宿主作業系統的 API 來構建 Windows 的 API,佇核內空間會當利用細細的核心材料來實現 Windows 的 API。因為核心函式粒粒度比 API 細,其靈活性閣較大仿製能力閣較強因為會當達成閣較好的相容性。另外咧,Windows 行程、執行緒、系統呼叫等佇核內執行會當避免佇核外執行帶來的使用者空間到核心切換額外的消磨,因為比起來較有效率。佇咧核內實現 Windows 核心機制佮原生的 Windows 核心開發的方法是一致的,會當克服核外無法度實現 Windows 某一寡功能的缺點。
  • 會當實現 Windows 驅動。
  • 會當使用全套 MS Windows 庫檔案。Linux 和 MS Windows 庫檔案是通過軟中斷(Linux 為「int 零 x 八十」,MS Windows 為「int 零 x 二 e」)進入核內進行系統呼叫的。相容核心佇核心開發會當為之設定佮 Linux 和 MS Windows 斷號仝款的兩套獨立的系統呼叫以上大程度相容 MS Windows 環境,予得 MS Windows 系統全套原生的使用者空間庫檔案(. dll)會當佇相容核心頂懸執行。這予開發除毋著帶來方便,嘛予計畫佮已經轉向 Linux 系統的持有 MS Windows 使用許可證的機構佮個人帶來好處。
  • 相容核心主要是講 Linux 的核心模組(LKMs)中實現的,這就是使伊像應用程式的外掛程式仝款真容易載入和解除安裝。
  • 裁剪方便。實現 Windows 的 API 佮驅動機制了後,會當佇無影響系統正常執行的情況下裁剪去除和 Windows 無關係的 Linux 部份爾干焦保留 Windows 功能,縮減體積以適應某一寡記憶體較細的裝置。

開發

相容核心是由中國的浙大網新有限公司佇二空空五年九月發起的自由軟體專案。做為專案負責人,操作人員提出專案的設想佮和開發路線。伊寫了一系列闡述具體實現相容核心的文章,遮的文章的組譯為相容核心白皮書。根據的相容核心白皮書,相容核心開發的主要工課是佇咧 Linux 核心中實現「一个框架仔佮兩个介面」:

  • 一个符合 Windows 裝置驅動程式的特徵佮要求的框殼,即 Windows 裝置趕動的框殼,會當共偌个 Windows 裝置驅動模組裝入去核心,並使遮的模組間的關係佮執行條件佮𪜶佇 Windows 核心的時陣仝款。
  • 一組由 Windows 核心匯出 ( Export ) 函式介面 ( 見 Windows DDK ) 定義的回出函式。對裝置驅動程式來講,遮的函式就相當於由核心提供的庫函式。
  • Windows 的系統呼叫介面。軟軟並無公開伊的系統呼叫介面,猶毋過佇咧「Windows NT / 兩千 Native API Reference」佮其他的資料當中已經開出來矣這个祕密。佇咧 Linux 核心中實現 Windows 的系統呼叫介面,就比如講用組合語言來實現另外一種高階的語言。這是因為,佇咧核心內面,會當使用的「磚仔」就不再是宏觀的 Linux 系統呼叫,是啊 Linux 的真濟微微仔觀的核心函式矣。

相容核心專案的成果為 Linux 核心修補程式。相容核心的開發者向望這寡修補程式終其尾你融入 Linux 標準核心成做 Linux 核心的標準的一部份。彼足𠢕開發的 Windows 應用程式和裝置驅動的開發者就會用足方便的為 linux 平台開發軟體抑是共𪜶的產品徙栽去 linux 平台。對於 Windows 軟體開發公司來講,只需要開發維護一个代碼庫就會當實現迒平台,這會降低軟體跨平台所帶來的成本,增加遮的公司共產品徙入來 Linux 平台的意願。遮的公司佮 Linux 使用者攏將對相容核心專案直接受益。

開發策略和線路

相容核心採用漸進方式進行開發,伊以已經會當正常執行的 Wine 和 NDISWrapper 為開發點,通過開發自身的 Windows 核心功能模組替換 Wine 中相應的功能模組來實現 Windows 系統呼叫相關功能;共改造佮擴充 NDISWrapper 來實現 Windows 裝置趕動的框殼;通過利用嫁接(重新導向)等方法去實現 Windows 核心匯出函式。具體開發策略和線路如下:

  • Windows 系統呼叫


相容核心以 Wine 為開發點,相容核心開發佇核內執行的核心功能模組來替代 Wine 中佇咧使用者空間執行的功能模組,並通過著 Wine 打修補程式使 Windows 應用軟體轉爾使用相容核心功能模組。即是:若相容核心已經實現矣該功能,使用相容核心提供的功能;抑若無使用 Wine 提供的功能。做替換一寡 Wine 的功能模組,測試予穩定了後就會當發行一个相容核心版本。這个發行版本閣是後一个版本的開發點,周而復始到共 Wine 的所有功能模組予相容核心模組替代。相容核心開發無限於替代 Wine 功能模組,Wine 佇咧使用者空間受技術限制袂使實現的功能相容核心嘛愛加以實現。
  • Windows 裝置趕動的框殼


NDISWrapper 已經佇咧 Linux 核心中實現一个 WDM 的外形仔,而且 ReactOS 則已經有一个基本會當執行的 Windows 裝置趕動的框殼。相容核心將以 NdisWrapper 為開發點,借鑑 ReactOS 的代碼著 NdisWrapper 進行改造佮擴充以實現 Windows 裝置趕動的框殼。
  • Windows 核心匯出函式


ReactOS 和 NdisWrapper 已經有一个基本的 Windows 核心回出函式集合。相容核心佇這个基本集合的基礎頂懸踏實現的自身的 Windows 核心匯出函式。具體實現方法是若 Linux 核心中有對應物件會當通過對映 ( 重新導向 ) / 嫁接 ( 適配 ) 的方法連接著 Linux 核心中的對應物件,小部份佇的 Linux 核心內底無對應物件愛利用 Linux 核心材料加以實現。

歷史版本

一个古早的版本,unifiedkernel 抹二鋪六 . 十三 , 佇二空空六年二月十五號發佈。該版本實現矣 Windows 系統調用機制。

這陣和未來的開發

相容核心當咧整合 QEMU 代碼以增加著 ARM 架構上直接執行 Windows 應用的 x 八十六架構二進位映像的支援。相容核心開發將有兩个分支。一个是一見笑零分支,這是針對 x 八十六架構頂面的跨作業系統相容。另外一个是二配空分支,這是針對閣跨作業系統閣跨作 CPU 架構的相容。一鋪零分支的進展也體這馬二鋪零分支中。相容核心開發人員已經對 Windows 裝置驅動框架來進行矣討論,NidsWrapper 的代碼移植到相容核心的工課已經開展。預計無偌久欲來進行實現 Windows 裝置趕動框殼的開發的工課

會當用的資源

相容核心毋是對零開始編程的,伊是佇咧其他專案已經有的代碼的基礎頂懸來進行開發的。伊對遮的專案進行整合佮再發展。相容核心專案可利用的資源包括 Linux kernel、Reactos、Wine、kernel-win 三十二和 NDISwrapper 等,𪜶攏是開源專案的原始碼會當自由取得。

  • Linux


相容核心是因為 Linux 核心的。伊佇咧 Linux 有可載入核心模組 ( LKMs ) 中實現伊的功能。佮 ReactOS 專案對無開始編碼實現 Windows 核心無仝,相容核心是利用 Linux 核心中豐富的核心功能函式來實現 Windows 核心功能的。其實現 Windows 機制的主要途徑如下 :

一 . Windows 系統呼叫介面的實現—— 一寡仔 Windows 的系統呼叫會當通過嫁接(重新導向)到適當的 Linux 系統呼叫部份重用相應的 Linux 核心函式來實現,另外一寡佇咧 Linux 核心內底無對應物的功能著愛使用 Linux 低階的核內函式來實現。 二 . Windows 裝置趕動的框殼——-基本的裝置驅動的框殼對應 Win 二 k 核心內底的 I / O 管理,佮電源管理、隨插就用等機制,嘛有牽涉部份物件管理、系統組態、佮安全管理方面的功能。。 這个框架頂懸佮有關檔案操作的系統呼叫 ( open ( ),close ( ),read ( ),write ( ),ioctl ( ) 等 ) 相接接,中央實現基於「IO 請求包」IRP(IO Request Packet)裝置驅動機制,下跤則融入 Linux 核心的斷節回應 / 服務機制、包括講「軟中斷」即 bh 函式的執行機制。主要包括裝置驅動程式的動態裝入佮連接的開發佮實現、IRP 彼个生成佮傳遞、猶閣有裝置驅動程式的啟動、仝步、佮終結開發佮實現、將裝置驅動程式的中斷服務登記接著 Linux 的中斷機制頂懸,將裝置驅動程式所關心的 Windows 核心執行狀態對映到 Linux 核心的執行狀態上、將裝置驅動程式的 DPC 請求嫁接著 Linux 的 bh 函式的機制頂懸。 三 . Windows 裝置驅動模組 ( . sys 檔案 )—— 軟軟有著作權的 . sys 檔案基本上是一寡標準的、基本的、捷用的外部裝置,包括吸碟仔、USB、圖形裝置、網路裝置等的裝置驅動模組。Linux實際上已經有備應的功能,只是需要將 Linux 核心 ( 包括裝置驅動模組 ) 中的遮的函式佮資料結構佮具體 . sys 的呼叫介面之間架起橋梁。但是也可能有一寡小可仔軟 . sys 模組佇咧 Linux 核心內底揣無對應物件,按呢就需要仿製矣。 四 . Windows 裝置驅動支撐介面—— 多數裝置驅動介面函式 ( 猶閣有資料結構 ) 佇咧 Linux 核心中攏有對應物件,需要做的就是共所需要的牚牢式佮資料結構通過對映 ( 重新導向 ) / 嫁接 ( 適配 ) 落實到相應的 Linux 核心函式佮資料結構頂懸,包括一寡適合的工課。嘛有一寡函式咧 Linux 核心內底無較為著接近的對應物件,按呢就愛用 Linux 核心內底的各種素材加起起來。

  • ReactOS


ReactOS 是一个 MS Windows 核心的開源仿製品。佮相容核心的利用 Linux 核心材料構建 Windows 核心的開發路線無仝,伊是完全對零開始編碼製作 Windows 核心的。佮相容核心仝款 ReactOS 只是一个核心,伊依賴 Wine 專案的使用者空間庫檔案使整個系統會使執行。相容核心參考 ReactOS 的代碼實現 Windows 核心的基本機制,包括行程 / 執行緒管理機制,記持體管理機制,驅動系統框殼等等。
  • Wine


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-win 三十二


Kernel-Win 三十二是一个試圖共 Wine 的部份模組徙入去 Linux 核心以提懸 Wine 的執行效率的專案。彼相容核心利用 ( 部份是重實現 ) kernel-win 三十二專案代碼實現著相容核心的 Windows 系統呼叫機制。
  • NDISwrapper


NDISWrapper 佇咧 Linux 核心中實現 Windows 核心的一寡部件,包括講 NTOSKRNL API(一个基本的 WDM 控制器)佮一系列諸如共 Wireless / NDIS / USB / PnP 等的喔 Windows 系統呼叫轉向 Linux 系統呼叫的封裝。NDISWrapper 無限於執行 NDIS 驅動,只要 WDM 驅動無呼叫伊猶未實現的 Windows 系統呼叫嘛是會當執行的。因為按呢會當認為 NDISWrapper 是一个 WDM 的外形仔。相容核心會當參考 NDISWrapper 和 ReactOS 的 WDM 實現構建家己的 WDM。

使用者

  • MagicLinux-MagicLinux 是一个是對 Red Hat Linux 的中文 Linux 發行版。MagicLinux 二嬸一之相容核心衍生版是頭一个內建相容核心的發行版,伊包含相容核心零交二 . 二版本。

硬體需求

相容核心上低的硬體需求是 :

  • 一百二十八 MB RAM
  • IDE 抑是 SATA 硬碟
  • VGA 相容顯示卡
  • PS / 字抑是 USB 鍵盤
  • PS / 字抑是 USB 滑鼠

架構支援

  • IA 鋪三十二 ( 支援中 )
  • x 八十六陵六十四 ( 無支援,計畫內底 )
  • 龍芯三 ( 無支援,計畫內底 )--Loongson 三是一種 MIPS 被六十四六十四-bit 構架的通用 CPU,伊計畫包括兩百外條指令以便硬體仿真的 x 八十六 CPU 指令,對使其會使執行 Windows。

參考資料

  • Linux Unified Kernel Aims to Combine Linux , NT Kernel
  • August 二千空一十三 Linux Kernel News

外部連結

https : / / web . archive . org / web / 二十五空九百空二五二千四百空一知空一百一十四 / http : / / www . longene . org /