Darwin 是由蘋果公司於 2000 年所釋出的一個開放原始碼作業系統。Darwin 是 macOS 和 iOS 操作環境的作業系統部份。蘋果公司於 2000 年把 Darwin 釋出給開放原始碼社群。 Darwin 是一種類 Unix 作業系統，並包含開放原始碼的 XNU 核心。其以微核心為基礎的核心架構來實作 Mach，而作業系統的服務和使用者空間工具則以 BSD 為基礎。與其他類 Unix 作業系統相似，Darwin 也有對稱多處理器的優點，高效能的網路設施和支援多種整合的檔案系統。 整合 Mach 到 XNU 核心的好處是可攜性，或者是在不同形式的系統使用軟體的能力。舉例來說，一個作業系統核心整合了 Mach 微核心，能夠提供多種不同 CPU 架構的二進位格式到一個單一的檔案（例如 x86 和 PowerPC），這是因為它使用了 MachO 的二進位格式。Mach 的缺點則是增加了作業系統核心的複雜度。在過去的微核心實作上，這種複雜度有時候會導致很難分離核心效能的問題。因此，採用 Mach 微核心會伴隨風險，但它有潛在的好處是廣泛的可移植性。以 Darwin 可移植性的具體例子來說，在 2005 年 6 月，蘋果電腦宣佈它會於 2006 年在 Mac 電腦上開始採用 Intel 處理器。 Darwin 的開發者在 2000 年決定採用一個吉祥物，並最終選擇了鴨嘴獸 Hexley。蘋果電腦沒有把 Hexley 認可為 Darwin 的一個標誌。 在 2002 年 4 月，Apple 在網際網路軟體論壇（Internet Software Consortium ISC）上成立 OpenDarwinorg，一個協助合作 Darwin 發展的社群。OpenDarwin 建立它自己釋出的 Darwin 作業系統。值得注意的是 OpenDarwin 子計畫中包含了 DarwinPorts，其目標是組合下一世代的 port 集合給 Darwin 使用（長遠來說，其也能供給其他 BSD 所衍生的作業系統所用）。OpenDarwin 專案於 2006 年中止，並且於 2007 年由另一個 PureDarwin 專案成立去接手 OpenDarwin 之前的目標。 2003 年 7 月，蘋果在 APSL 的 20 版本下釋出了 Darwin，其是由自由軟體基金會批准為自由軟體的許可證。儘管它先前在較早的 APSL 版本已經達到開放原始碼定義的要求，它們並不符合 FSF 對於自由軟體的定義。 設計 核心 Darwin 的核心是 XNU，它是一種混合核心，它採用了來自 OSF 的 OSFMK 73（Open Software Foundation Mach Kernel）和 FreeBSD 的各種要素（包括過程模型，網路堆疊和虛擬檔案系統），還有一個稱為 IO Kit 的面向物件的裝置驅動程式 API。 混合核心設計使其具備了了微核心的靈活性和宏核心的效能。 硬體和軟體支援 Darwin 目前支援在 Mac 中使用的 Intel x86 處理器的 64 位 x8664 變體以及在 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 年以來似乎未進行過更新。 需要一個 Apache SVN 客戶端。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）20 版之下發布了 Darwin，自由軟體基金會（FSF）將其歸類為與 GNU General Public License 不相容的自由軟體許可證。它之前的版本是根據 APSL 許可證的較早版本釋出的，儘管它確實滿足了開放原始碼定義的要求，但它不符合 FSF 對自由軟體的定義。 版本歷史 下表是主要的 Darwin 版本及其發行日期和相應的 macOS 版本的表格。請注意，相應的 macOS 版本可能是在其他日期釋出的；有關這些日期，請參閱 macOS 頁面。 版本 版本釋出日期 對應的版本 註解 01 1999 年 3 月 16 日 Mac OS X Server 10 發行版 初始版本 01 是人為設定的版本號，為了便於排序和標識。它本身的標識是 Rhapsody 53 02 1999 年 4 月 14 日 Mac OS X Server 10 發行版 Mac OS X Server 101 03 1999 年 8 月 5 日 Mac OS X Server 10 發行版 基於 Rhapsody 55 可於 archiveorg 找到 ISO 映象 此後，核心從 NeXTSTEPOPENSTEPRhapsody 更改為 Mac OS X 的較新 XNU。 10 2000 年 4 月 12 日 開發者預覽第 3 版 可於 archiveorg 找到 ISO 映象 11 2000 年 4 月 5 日 開發者預覽第 4 版 121 2000 年 11 月 15 日 Mac OS X 公開測試版 代號 Kodiak 131 2001 年 4 月 13 日 Mac OS X v100 代號 Cheetah Darwin 的首個商業版本 Cheetah v10004 的所有版本都有相同版本的 Darwin 141 2001 年 10 月 2 日 Mac OS X v101 代號 Puma 啟動時間、即時執行緒、執行緒管理、快取重新整理和搶佔式處理的效能改進 支援 SMB 和 NFS 以 Wget 取代 cURLTechnical Note TN2029：Mac OS X v101。 Apple Developer Connection 於 2008 年 6 月 2 日檢索。 51 2001 年 11 月 12 日 Mac OS X v101 Mac OS X v1011 更改編號方案以匹配 Mac OS X 內部版本編號方案 55 2002 年 6 月 5 日 Mac OS X v101 Mac OS X v1015 601 2002 年 9 月 23 日 Mac OS X v102 代號 Jaguar GCC 由 2 更新至 31 支援 IPv6 及 IPSec mDNSResponder 服務探索的守護行程（Rendezvous 新增 CUPS Ruby Python 在 HFS 中支援日誌 速度更快的應用程式配置檔案（preheat files）Siracusa John September 5 2002 Mac OS X 102 Jaguar Ars Technica 於 2008 年 5 月 31 日檢索。 68 2003 年 10 月 3 日 Mac OS X v102 Mac OS X v1028 70 2003 年 10 月 24 日 Mac OS X Panther Mac OS X v1030 BSD 層與 FreeBSD5 同步 HFS 中的自動檔案碎片整理、熱檔案叢集和可選的區分大小寫功能 用 bash 取代 tcsh 作為預設 shell 支援只讀 NTFS（Darwin 79）Siracusa John November 9 2003 Mac OS X 103 Panther Ars Technica 於 2008 年 5 月 31 日檢索。 79 2005 年 4 月 15 日 Mac OS X Panther Mac OS X v1039 80 2005 年 4 月 29 日 Mac OS X TigerMac OS X for Apple TV Mac OS X v1040 穩定版的應用程式介面，細粒度的核心鎖，64 位的 BSD 層 launchd 服務管理框架 擴充套件檔案屬性，存取控制表 更新如 cp 及 mv 的命令以保護擴充套件屬性及 resource forksSiracusa John April 28 2005 Mac OS X 104 Tiger Ars Technica 於 2008 年 5 月 30 日檢索。 811 2007 年 11 月 14 日 Mac OS X TigerMac OS X for Apple TV Mac OS X v10411 90 2007 年 10 月 26 日 Mac OS X LeopardiPhone OS 10 Mac OS X v1050 Darwin 900d1 中的 iPhone OS 1 支援 完整的 POSIX 標準實現，改進分層的行程排程模型，動態分配分頁檔案、動態資源限制（對個別檔案與行程）、行程沙盒化、隨機位址空間配置、DTrace 的追蹤框架、檔案系統事件的管理員、目錄的硬式連結 Apache13 及 PHP4 更新至 Apache 22 及 PHP 5 支援只讀 ZFSSiracusa John October 28 2007 Mac OS X 105 Leopard：Ars Technical review Ars Technica 於 2008 年 5 月 30 日檢索。 最早用於 iPhone 的 Darwin 核心 98 2009 年 8 月 5 日 Mac OS X LeopardiPhone OS 10 Mac OS X v1058 100 2009 年 8 月 28 日 Mac OS X Snow LeopardiOS 40 Mac OS X v1060 停止支援 PowerPC 架構 64bit 核心及驅動程式 libdispatch 任務並行框架 OpenCL 異構計算框架 初始支援自動引用計數 透過 C 語言支援 Blocks 以 HFS 資料壓縮檔案 Siracusa John August 31 2009 Mac OS X 106 Snow Leopard the Ars Technica review Ars Technica 於 2009 年 11 月 29 日檢索。 101 2009 年 9 月 10 日 Mac OS X Snow LeopardiOS 40 Mac OS X v1061 102 2009 年 11 月 9 日 Mac OS X Snow LeopardiOS 40 Mac OS X v1062 103 2010 年 3 月 29 日 Mac OS X Snow LeopardiOS 40 Mac OS X v1063iOS 40 104 2010 年 6 月 15 日 Mac OS X Snow LeopardiOS 40 Mac OS X v1064 105 2010 年 11 月 11 日 Mac OS X Snow LeopardiOS 40 Mac OS X v1065 106 2011 年 1 月 6 日 Mac OS X Snow LeopardiOS 40 Mac OS X v1066 107 2011 年 3 月 21 日 Mac OS X Snow LeopardiOS 40 Mac OS X v1067 108 2011 年 6 月 23 日 Mac OS X Snow LeopardiOS 40 Mac OS X v1068 1100 2011 年 7 月 20 日 Mac OS X LioniOS 5 在一臺越獄的 iPhone 4S 中發現。 Mac OS X v1070 XNU 不再支援 PowerPC 二進位制檔案（大二進位制檔案僅適用於 i386，x86_64）。 XNU 需要 x86_64 處理器，基於 ARM 的 iOS 除外。 改進了應用程式的沙箱 完全支援自動引用計數 1110 2011 年 8 月 16 日 Mac OS X LioniOS 5 在一臺越獄的 iPhone 4S 中發現。 Mac OS X v1071 1120 2011 年 10 月 13 日 Mac OS X LioniOS 5 在一臺越獄的 iPhone 4S 中發現。 Mac OS X v1072 1130 2012 年 2 月 2 日 Mac OS X LioniOS 5 在一臺越獄的 iPhone 4S 中發現。 Mac OS X v1073 1142 2012 年 10 月 4 日 Mac OS X LioniOS 5 在一臺越獄的 iPhone 4S 中發現。 Mac OS X v1075 額外的 1200 2012 年 2 月 16 日 OS X Mountain Lion OS X v1080 Mac OS X 被更名為 OS X。 不再推薦使用 ObjectiveC 垃圾收集，建議使用自動引用計數 1260 2015 年 1 月 27 日 OS X Mountain Lion OS X v1085 帶有安全更新 2015001 130 2013 年 6 月 10 日 OS X MavericksiOS 6 OS X v1090 虛擬記憶體壓縮 計時器合併 OpenGL 41 和 OpenCL 12 伺服器訊息塊版本 2（SMB2）取代 AFP 成為共享檔案的預設協議。這是為了提高效能和跨平臺相容性。 IPoTB（基於 Thunderbolt 橋的 Internet 協議）。 Open Transport API 已被刪除 1340 2014 年 9 月 7 日 OS X MavericksiOS 6 OS X v1095 1400 2014 年 9 月 18 日 OS X YosemiteiOS 7iOS 8 OS X v10100 1450 2015 年 8 月 13 日 OS X YosemiteiOS 7iOS 8 OS X v10105 1500 2015 年 9 月 16 日 OS X El CapitaniOS 9 OS X v10110 iOS 90 系統完整性保護。 即使由 root 或具有 root 特權的使用者執行，也可以防止某些系統部件被程序修改或篡改。 sudo 配置預設情況下使用 tty_tickets 標誌，將會話超時限制為使用者在其中驗證程式的終端會話（例如視窗或選項卡）。 LibreSSL 取代了 OpenSSL 1560 2016 年 7 月 18 日 OS X El CapitaniOS 9 OS X v10116 iOS 933 1600 2016 年 9 月 13 日 macOS SierraiOS 10 macOS v10120 iOS 1001（初始發行版） OS X 被更名為 macOS。 現在，僅有 root 使用者或具有 root 特權的使用者可以寫入 Volumes 目錄 系統完整性保護現在涵蓋了 LibraryApplicationSupportcomappleTCC 目錄，其中包含允許 控制計算機 的應用程式列表 刪除了 ObjectiveC 垃圾收集器，並替換為 Darwin v120（OS X v108）引入的自動引用計數。使用垃圾回收的 ObjectiveC 應用程式將不再起作用。 對 PPTP 的本機支援已刪除。 1650 2017 年 3 月 27 日 macOS SierraiOS 10 macOS v10124 iOS 103 在 iOS 裝置上將檔案系統從 HFS 更改為 APFS。自 10120 起，APFS 已在 macOS 上可用，但不能在啟動分割槽上使用。 1660 2017 年 7 月 19 日 macOS SierraiOS 10 macOS v10126 iOS 1033 1700 2017 年 9 月 19 日 macOS High SierraiOS 11 在具有快閃記憶體的 Mac 上，macOS 中引導分割槽的預設檔案系統從 HFS 替換為了 APFS。在具有 HDD 的 Mac 上，必須重新格式化啟動分割槽才能使用 APFS。 將時間同步服務從 ntpd 替換為了 timed FTP 和 telnet 命令被刪除。 核心擴充套件（Kexts）將需要使用者明確批准才能執行。 1750 2018 年 3 月 29 日 macOS High SierraiOS 11 macOS 10134 支援使用 Thunderbolt 3 的外部圖形處理器，並刪除了使用 Thunderbolt 1 和 2 的外部圖形處理器的支援。 1760 2018 年 6 月 1 日 macOS High SierraiOS 11 macOS v10135 1770 2018 年 7 月 9 日 macOS High SierraiOS 11 macOS v10136 iOS 1141 1800 2018 年 9 月 2 日 macOS MojaveiOS 12 1820 2018 年 10 月 30 日 macOS MojaveiOS 12 macOS v10141 iOS 121 在新的 MacBook 中增加了對新的 Radeon Vega 20 GPU 的支援 1900 2019 年 9 月 19 日 macOS CatalinaiOS 13 1920 2019 年 12 月 10 日 macOS CatalinaiOS 13 macOS 10152 iOS 133 1930 2020 年 1 月 28 日 macOS CatalinaiOS 13 macOS 10153 iOS 1331 系統擴充套件取代了 Kexts，並在核心之外的使用者空間中執行。 DriverKit 取代了 IOKit。 它引入了使用 DriverKit 構建的 Dexts（驅動程式擴充套件）。 Driverkit 是一個新的 SDK，具有基於 IOKit 的所有新框架，但已進行了更新和現代化。 裝置驅動程式在核心外部的使用者空間中執行。 2010 2020 年 10 月 30 日 macOS 1101 2020 2021 年 12 月 15 日 macOS 111 2030 2021 年 2 月 2 日 macOS 112 2040 2021 年 4 月 20 日 macOS 113 2050 2021 年 5 月 24 日 macOS 114 2060 2021 年 6 月 2 日 macOS 115 2100 2021 年 6 月 7 日 macOS 120 beta 1 2101 2021 年 10 月 25 日 macOS 120 2110 2021 年 10 月 25 日 macOS 1201 2120 2021 年 12 月 7 日 macOS 121 2130 2022 年 1 月 7 日 macOS 122 Mac OS X v1011 發行版中，版本號從 Darwin 141 躍升至 51，旨在將 Darwin 與 Mac OS X 版本和內部版本號系統聯絡起來，而後者又是從 NeXTSTEP 繼承而來的。在 macOS 的內部版本號系統中，每個版本都有一個唯一的開始內部版本號，用於標識其所屬的整個 macOS 版本。Mac OS X v100 的內部版本號以 4 開頭，101 的內部版本號以 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 版本中。自由 開源社群受益於對其作業系統的完全控制，並且可以將其用於 GNUDarwin 等自由軟體發行版中。 2006 年 7 月 25 日，OpenDarwin 團隊宣佈該專案已關閉，因為他們認為 OpenDarwin 已成為 Mac OS X 相關專案的唯一託管工具，並且建立獨立的 Darwin 作業系統的努力失敗了。他們還指出：訊息來源的可用性，與 Apple 代表的互動，建立和跟蹤訊息來源的困難以及社群缺乏興趣，這一切都為此做出了貢獻。 它最後的穩定版本是 2004 年 7 月 16 日發行的 721 版。 PureDarwin PureDarwin 是一個從 Apple 發行的 Darwin 原始碼中建立可引導的作業系統映像的專案。自從 OpenDarwin 停止執行以及 Darwin8x 以來發布可啟動映像以來，由於許多元件都成為封閉源，因此建立完整的作業系統變得越來越困難。 該專案已成功建立了基於 Darwin 9 和 X11 GUI 的 Xmas 版本 PureDarwin Xmas 2015 和僅基於 Darwin 17 的命令列 174 Beta。 其他衍生專案 XQuartz（前身為 XDarwin），是蘋果電腦為 Mac OS XOS XmacOS（Darwin）上 X Window 系統的實作。 GNUstep，GNU 計劃的專案之一。它將 Cocoa（前身為 NeXT 的 OpenStep）ObjectiveC 軟體庫，部件工具箱（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 的移植。其中一些在自己的名稱空間中執行，以免干擾基本系統。 GNUDarwin 是一個將自由軟體的軟體包移植到 Darwin 的專案。它們用類似於 Linux 發行版的方式打包 OS 映象。 Darwine 專案是 Wine 在 Darwin 上的移植，它使人們可以在 Darwin 上執行 Microsoft Windows 軟體。 SEDarwin 是 TrustedBSD 強制訪問控制框架和 SELinux 框架的一部分在 Darwin 上的移植。它已被合併到 Mac OS X 105 中。 Darbat 專案是 Darwin 在 L4 微核心系列上的試驗性移植。 它旨在與現有的 Darwin 二進位制檔案二進位制相容。 Darling 專案是用於在 Linux 系統上執行 macOS 二進位制檔案的相容性層。它使用了一些 Darwin 的原始碼。 有許多專案專注於驅動程式支援：例如無線驅動程式，有線 NIC 驅動程式 Project inactive since March 15 2006，調變解調器驅動程式，讀卡器，ext2 和 ext3 檔案系統。 參考 外部連結 Apple Mac OS X Technologies Darwin PureDarwin 社群開發網頁 DarwinPorts 專案 Hexley Darwin 吉祥物 Apple Public Source License 20 對於 APSL 之自由軟體基金會的意見 Apple Press Release：蘋果電腦於 2006 年開始使用 Intel 微處理器 Mac OS X 和 BSD 的差異 CategoryBSD Category 蘋果作業系統 Category 自由作業系統 CategoryMacOS CategoryMach