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

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

## 設計

### 核心

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

### 硬體和軟體支援

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 的自由軟體性質，已經有了一些旨在修改或增強作業系統的專案。

### 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 版。

### PureDarwin

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

### 其他衍生專案

* 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 檔案系統。

## 參考

## 外部連結

* Apple - Mac OS X - Technologies - Darwin（頁面存檔備份，存於網際網路檔案館）
* PureDarwin 社群開發網頁（頁面存檔備份，存於網際網路檔案館）
* DarwinPorts 專案
* Hexley, Darwin 吉祥物（頁面存檔備份，存於網際網路檔案館）
* Apple Public Source License 2.0
* 對於 APSL 之自由軟體基金會的意見（頁面存檔備份，存於網際網路檔案館）
* Apple Press Release：蘋果電腦於 2006 年開始使用 Intel 微處理器
* Mac OS X 和 BSD 的差異