Darwin (作業系統)

Darwin 是由蘋果公司於 2000 年所釋出的一個開放原始碼作業系統。Darwin 是 macOS 和 iOS 操作環境的作業系統部份。蘋果公司於 2000 年把 Darwin 釋出給開放原始碼社群。

Darwin 是一種類 Unix 作業系統，並包含開放原始碼的 XNU 核心。其以微核心為基礎的核心架構來實作 Mach，而作業系統的服務和使用者空間工具則以 BSD 為基礎。與其他類 Unix 作業系統相似，Darwin 也有對稱多處理器的優點，高效能的網路設施和支援多種整合的檔案系統。

整合 Mach 到 XNU 核心的好處是可攜性，或者是在不同形式的系統使用軟體的能力。舉例來說，一個作業系統核心整合了 Mach 微核心，能夠提供多種不同 CPU 架構的二進位格式到一個單一的檔案（例如 x86 和 PowerPC），這是因為它使用了 Mach-O 的二進位格式。Mach 的缺點則是增加了作業系統核心的複雜度。在過去的微核心實作上，這種複雜度有時候會導致很難分離核心效能的問題。因此，採用 Mach 微核心會伴隨風險，但它有潛在的好處是廣泛的可移植性。以 Darwin 可移植性的具體例子來說，在 2005 年 6 月，蘋果電腦宣佈它會於 2006 年在 Mac 電腦上開始採用 Intel 處理器。

Darwin 的開發者在 2000 年決定採用一個吉祥物，並最終選擇了鴨嘴獸 Hexley。蘋果電腦沒有把 Hexley 認可為 Darwin 的一個標誌。

在 2002 年 4 月，Apple 在網際網路軟體論壇（Internet Software Consortium, ISC）上成立 OpenDarwin.org，一個協助合作 Darwin 發展的社群。OpenDarwin 建立它自己釋出的 Darwin 作業系統。值得注意的是 OpenDarwin 子計畫中包含了 DarwinPorts，其目標是組合下一世代的 port 集合給 Darwin 使用（長遠來說，其也能供給其他 BSD 所衍生的作業系統所用）。OpenDarwin 專案於 2006 年中止，並且於 2007 年由另一個 PureDarwin 專案成立去接手 OpenDarwin 之前的目標。

2003 年 7 月，蘋果在 APSL 的 2.0 版本下釋出了 Darwin，其是由自由軟體基金會批准為自由軟體的許可證。儘管它先前在較早的 APSL 版本已經達到開放原始碼定義的要求，它們並不符合 FSF 對於自由軟體的定義。

設計

1.1 核心

Darwin 的核心是 XNU，它是一種混合核心，它採用了來自 OSF 的 OSFMK 7.3（Open Software Foundation Mach Kernel）和 FreeBSD 的各種要素（包括過程模型，網路堆疊和虛擬檔案系統），還有一個稱為 I/O Kit 的面向物件的裝置驅動程式 API。 混合核心設計使其具備了了微核心的靈活性和宏核心的效能。

1.2 硬體和軟體支援

Darwin 目前支援在 Mac 中使用的 Intel x86 處理器的 64 位 x86-64 變體以及在 iPhone 5S，第六代 iPod Touch，iPad Air，第四代 Apple TV 中使用的 64 位 ARM 處理器，最初的 HomePod 和更高版本，以及在 iPhone 5C 和更早版本，早期版本的 iPod Touch，直到第四代的 iPad 以及第二和第三代 Apple TV 中使用的 32 位 ARM 處理器。 XNU 核心的一個開源的移植支援 Apple 尚未正式支援的 Intel 和 AMD x86 平臺上的 Darwin，儘管自 2009 年以來似乎未進行過更新。XNU 核心的開源移植也可用於 ARM 平臺。較舊的版本支援 32 位 PowerPC，64 位 PowerPC 和 32 位 x86 的部分或全部。

它透過對 BSD 的沿襲（主要是 FreeBSD 使用者領域）支援 POSIX API，並且可以在 Darwin 上編譯為其他各種類 UNIX 系統編寫的大量程式，而無需更改原始碼。

Darwin 不包含 macOS 的許多定義元素，例如 Carbon 和 Cocoa API 或 Quartz Compositor 和 Aqua 使用者介面，因此無法執行 Mac 應用程式。但是，它確實支援 macOS 的許多鮮為人知的功能，例如 mDNSResponder，它是多播 DNS 響應器，是 Bonjour 網路技術的核心元件，並已推出高階服務管理框架。

許可證

2003 年 7 月，Apple 在 Apple Public Source License（APSL）2.0 版之下發布了 Darwin，自由軟體基金會（FSF）將其歸類為與 GNU General Public License 不相容的自由軟體許可證。它之前的版本是根據 APSL 許可證的較早版本釋出的，儘管它確實滿足了開放原始碼定義的要求，但它不符合 FSF 對自由軟體的定義。

版本歷史

下表是主要的 Darwin 版本及其發行日期和相應的 macOS 版本的表格。請注意，相應的 macOS 版本可能是在其他日期釋出的；有關這些日期，請參閱 macOS 頁面。

Mac OS X v10.1.1 發行版中，版本號從 Darwin 1.4.1 躍升至 5.1，旨在將 Darwin 與 Mac OS X 版本和內部版本號系統聯絡起來，而後者又是從 NeXTSTEP 繼承而來的。在 macOS 的內部版本號系統中，每個版本都有一個唯一的開始內部版本號，用於標識其所屬的整個 macOS 版本。Mac OS X v10.0 的內部版本號以 4 開頭，10.1 的內部版本號以 5 開頭，依此類推（早期的內部版本號代表開發人員的版本）。

命令終端中的 uname -r 命令將顯示 Darwin 版本號，uname -v 命令將顯示 XNU 構建版本的字串，其中包括 Darwin 的版本號。

吉祥物

Hexley 是開放原始碼的作業系統 ——Darwin（Mac OS X 的核心）的吉祥物。Hexley 是一個卡通的鴨嘴獸，通常戴著一個類似 BSD 小惡魔的帽子，並握著三叉戟。Hexley 是由 Jon Hooper 所設計的，版權也為他所有。但 Hexley 並不附屬於蘋果電腦。本來這個吉祥物的名稱應該是 Huxley，源由是捍衛達爾文（Darwin）演化理論的英國生物學家托馬斯・亨利・赫胥黎，而原先提議的人誤以為是達爾文的助理，並錯用了 Hexley。而發現錯誤時，要改名已經太晚，因此沿用了 Hexley 這個名稱。

衍生專案

由於 Darwin 的自由軟體性質，已經有了一些旨在修改或增強作業系統的專案。

5.1 OpenDarwin

OpenDarwin 是基於 Darwin 的社群主導的作業系統。 它由 Apple Inc. 和 Internet Systems Consortium 於 2002 年 4 月成立。其目標是加強 Apple 開發人員與自由軟體社群之間的協作。 蘋果公司從該專案中受益，因為 OpenDarwin 的改進將納入 Darwin 版本中。自由 / 開源社群受益於對其作業系統的完全控制，並且可以將其用於 GNU-Darwin 等自由軟體發行版中。

2006 年 7 月 25 日，OpenDarwin 團隊宣佈該專案已關閉，因為他們認為 OpenDarwin “已成為 Mac OS X 相關專案的唯一託管工具”，並且建立獨立的 Darwin 作業系統的努力失敗了。他們還指出：“訊息來源的可用性，與 Apple 代表的互動，建立和跟蹤訊息來源的困難以及社群缺乏興趣，這一切都為此做出了貢獻。” 它最後的穩定版本是 2004 年 7 月 16 日發行的 7.2.1 版。

5.2 PureDarwin

PureDarwin 是一個從 Apple 發行的 Darwin 原始碼中建立可引導的作業系統映像的專案。自從 OpenDarwin 停止執行以及 Darwin8.x 以來發布可啟動映像以來，由於許多元件都成為封閉源，因此建立完整的作業系統變得越來越困難。 該專案已成功建立了基於 Darwin 9 和 X11 GUI 的 Xmas 版本和僅基於 Darwin 17 的命令列 17.4 Beta。

5.3 其他衍生專案

XQuartz（前身為 XDarwin），是蘋果電腦為 Mac OS X/OS X/macOS（Darwin）上 X Window 系統的實作。
GNUstep，GNU 計劃的專案之一。它將 Cocoa（前身為 NeXT 的 OpenStep）Objective-C 軟體庫，部件工具箱（widget toolkits）以及其上的應用軟體，以自由軟體方式重新實作。
Window Maker，是 X Window 系統上一個自由及開放原始碼的視窗管理器，可讓圖形化應用軟體在類 Unix 作業系統上執行。它最最初設計用來模擬 NeXT 的圖形使用者介面，令其成為符合 OpenStep 相容環境。
WebKit 是一個開源的 Web 瀏覽器引擎 (Web browser engine)。它被用於 Apple Safari。Webkit 亦被使用於 Apple iOS 的預設瀏覽器。
MacPorts（以前是 DarwinPorts），Fink 和 Homebrew 是將 UNIX 程式移植到 Darwin 作業系統並提供包管理服務的程式。另外，幾個標準的 UNIX 軟體包管理器（例如 RPM，pkgsrc 和 Portage）具有 Darwin 的移植。其中一些在自己的名稱空間中執行，以免干擾基本系統。
GNU-Darwin 是一個將自由軟體的軟體包移植到 Darwin 的專案。它們用類似於 Linux 發行版的方式打包 OS 映象。
Darwine 專案是 Wine 在 Darwin 上的移植，它使人們可以在 Darwin 上執行 Microsoft Windows 軟體。
SEDarwin 是 TrustedBSD 強制訪問控制框架和 SELinux 框架的一部分在 Darwin 上的移植。它已被合併到 Mac OS X 10.5 中。
Darbat 專案是 Darwin 在 L4 微核心系列上的試驗性移植。 它旨在與現有的 Darwin 二進位制檔案二進位制相容。
Darling 專案是用於在 Linux 系統上執行 macOS 二進位制檔案的相容性層。它使用了一些 Darwin 的原始碼。
有許多專案專注於驅動程式支援：例如無線驅動程式，有線 NIC 驅動程式，調變解調器驅動程式，讀卡器，ext2 和 ext3 檔案系統。