Darwin (操作系統)

作業系統

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

Darwin
開發者蘋果公司
編程語言CC++Objective-C匯編語言
作業系統家族類Unix系統
運作狀態Current
源碼模式自由及開放源碼件
當前版本
  • 1228(2007年10月30日)[1]
  • 22.2.0(2022年12月13日)
編輯維基數據鏈接
支援平台目前:x86-6464-bit ARM
歷史上:PowerPCIA-3232-bit ARM (ARM32位支持是閉源的)[來源請求]
內核類別混合內核
許可證主要為APSL,含有閉源的設備驅動
官方網站opensource.apple.com 編輯維基數據鏈接
倉庫 編輯維基數據鏈接

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對於自由軟體的定義。

設計

 
macOS 架構圖

內核

Darwin的內核是XNU,它是一種混合內核,它採用了來自OSF的OSFMK 7.3[2](Open Software Foundation Mach Kernel)和FreeBSD的各種要素(包括過程模型,網絡堆棧和虛擬文件系統),[3]還有一個稱為I/O Kit的面向對象的設備驅動程序API。[4] 混合內核設計使其具備了了微內核的靈活性和宏內核的性能。[5]

硬件和軟件支持

Darwin目前支持在Mac中使用的Intel x86處理器的64位x86-64變體以及在iPhone 5S,第六代iPod TouchiPad Air,第四代Apple TV中使用的64位ARM處理器,最初的HomePod和更高版本,以及在iPhone 5C和更早版本,早期版本的iPod Touch,直到第四代的iPad以及第二和第三代Apple TV中使用的32位ARM處理器。 XNU內核的一個開源的移植支持Apple尚未正式支持的Intel和AMD x86平台上的Darwin,儘管自2009年以來似乎未進行過更新。[6]XNU內核的開源移植也可用於ARM平台。[7]較舊的版本支持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不兼容的自由軟件許可證。[8]它之前的版本是根據APSL許可證的較早版本發布的,儘管它確實滿足了開放源代碼定義的要求,但它不符合FSF對自由軟件的定義。[9]

版本歷史

下表是主要的Darwin版本及其發行日期和相應的macOS版本的表格。[10]請注意,相應的macOS版本可能是在其他日期發布的;有關這些日期,請參閱macOS頁面。

版本 版本發佈日期 對應的版本 註解
0.1 1999年3月16日 Mac OS X Server 1.0發行版
  • 初始版本
  • 0.1是人為設置的版本號,為了便於排序和標識。它本身的標識是 Rhapsody 5.3
0.2 1999年4月14日 Mac OS X Server 1.0.1
0.3 1999年8月5日 基於 Rhapsody 5.5
  • 可於archive.org找到ISO鏡像
  • 此後,內核從 NeXTSTEP/OPENSTEP/Rhapsody 更改為Mac OS X的較新XNU。
1.0 2000年4月12日 開發者預覽第3版
1.1 2000年4月5日 開發者預覽第4版
1.2.1 2000年11月15日 Mac OS X 公開測試版 代號 "Kodiak"
1.3.1 2001年4月13日 Mac OS X v10.0
  • 代號 "Cheetah"
  • Darwin的首個商業版本
  • Cheetah(v10.0.0-4)的所有版本都有相同版本的Darwin
1.4.1 2001年10月2日 Mac OS X v10.1
  • 代號 "Puma"
  • 啟動時間、實時線程、線程管理、緩存刷新和搶占式處理的性能改進
  • 支持SMBNFS
  • Wget取代cURL[11]
5.1 2001年11月12日 Mac OS X v10.1.1
  • 更改編號方案以匹配Mac OS X內部版本編號方案
5.5 2002年6月5日 Mac OS X v10.1.5
6.0.1 2002年9月23日 Mac OS X v10.2
6.8 2003年10月3日 Mac OS X v10.2.8
7.0 2003年10月24日 Mac OS X Panther
  • Mac OS X v10.3.0
  • BSD層與FreeBSD5同步
  • HFS+中的自動文件碎片整理、熱文件集群和可選的區分大小寫功能
  • bash取代tcsh作為默認shell
  • 支持只讀NTFS(Darwin 7.9).[13]
7.9 2005年4月15日 Mac OS X v10.3.9
8.0 2005年4月29日 Mac OS X Tiger
Mac OS X for Apple TV
8.11 2007年11月14日 Mac OS X v10.4.11
9.0 2007年10月26日 Mac OS X Leopard
iPhone OS 1.0
Mac OS X v10.5.0
9.8 2009年8月5日 Mac OS X v.10.5.8
10.0 2009年8月28日 Mac OS X Snow Leopard
iOS 4.0
Mac OS X v10.6.0
10.1 2009年9月10日 Mac OS X v10.6.1
10.2 2009年11月9日 Mac OS X v10.6.2
10.3 2010年3月29日 Mac OS X v10.6.3
iOS 4.0
10.4 2010年6月15日 Mac OS X v10.6.4
10.5 2010年11月11日 Mac OS X v10.6.5
10.6 2011年1月6日 Mac OS X v10.6.6
10.7 2011年3月21日 Mac OS X v10.6.7
10.8 2011年6月23日 Mac OS X v10.6.8
11.0.0 2011年7月20日 Mac OS X Lion
iOS 5[17]
Mac OS X v10.7.0
  • XNU不再支持PowerPC二進制文件(大二進制文件僅適用於i386,x86_64)。
  • XNU需要x86_64處理器,基於ARMiOS除外。
  • 改進了應用程序的沙箱
  • 完全支持自動引用計數
11.1.0 2011年8月16日 Mac OS X v10.7.1
11.2.0 2011年10月13日 Mac OS X v10.7.2
11.3.0 2012年2月2日 Mac OS X v10.7.3
11.4.2 2012年10月4日 Mac OS X v10.7.5 (額外的)
12.0.0 2012年2月16日 OS X Mountain Lion OS X v10.8.0
12.6.0 2015年1月27日 OS X v10.8.5(帶有安全更新2015-001)
13.0 2013年6月10日 OS X Mavericks
iOS 6
OS X v10.9.0
13.4.0 2014年9月7日 OS X v10.9.5
14.0.0 2014年9月18日 OS X Yosemite
iOS 7
iOS 8
OS X v10.10.0
14.5.0 2015年8月13日 OS X v10.10.5
15.0.0 2015年9月16日 OS X El Capitan
iOS 9
OS X v10.11.0

iOS 9.0

  • 系統完整性保護。 即使由root或具有root特權的用戶運行,也可以防止某些系統部件被進程修改或篡改。
  • sudo配置默認情況下使用「tty_tickets」標誌,將會話超時限制為用戶在其中驗證程序的終端會話(例如窗口或選項卡)。
  • LibreSSL取代了OpenSSL
15.6.0 2016年7月18日 OS X v10.11.6

iOS 9.3.3

16.0.0 2016年9月13日 macOS Sierra
iOS 10
macOS v10.12.0

iOS 10.0.1(初始發行版)

  • OS X被更名為macOS
  • 現在,僅有root用戶或具有root特權的用戶可以寫入/Volumes目錄
  • 系統完整性保護現在涵蓋了/Library/ApplicationSupport/com.apple.TCC目錄,其中包含允許「控制計算機」的應用程序列表
  • 刪除了Objective-C垃圾收集器,並替換為Darwin v12.0(OS X v10.8)引入的自動引用計數。使用垃圾回收的Objective-C應用程序將不再起作用。
  • PPTP的本機支持已刪除。
16.5.0 2017年3月27日 macOS v10.12.4

iOS 10.3

  • 在iOS設備上將文件系統從HFS+更改為APFS。自10.12.0起,APFS已在macOS上可用,但不能在啟動分區上使用。
16.6.0 2017年7月19日 macOS v10.12.6

iOS 10.3.3

17.0.0 2017年9月19日 macOS High Sierra
iOS 11
  • 在具有閃存的Mac上,macOS中引導分區的默認文件系統HFS+替換為了APFS。在具有HDD的Mac上,必須重新格式化啟動分區才能使用APFS
  • 將時間同步服務從ntpd替換為了timed
  • FTPtelnet命令被刪除。
  • 內核擴展(Kexts)將需要用戶明確批准才能運行。
17.5.0 2018年3月29日 macOS 10.13.4
  • 支持使用Thunderbolt 3的外部圖形處理器,並刪除了使用Thunderbolt 1和2的外部圖形處理器的支持。
17.6.0 2018年6月1日 macOS v10.13.5
17.7.0 2018年7月9日 macOS v10.13.6

iOS 11.4.1

18.0.0 2018年9月2日 macOS Mojave
iOS 12
18.2.0 2018年10月30日 macOS v10.14.1

iOS 12.1

19.0.0 2019年9月19日 macOS Catalina
iOS 13
19.2.0 2019年12月10日 macOS 10.15.2

iOS 13.3

19.3.0 2020年1月28日 macOS 10.15.3

iOS 13.3.1

  • 系統擴展取代了Kexts,並在內核之外的用戶空間中運行。[18]
  • DriverKit取代了IOKit。 它引入了使用DriverKit構建的「 Dexts」(驅動程序擴展)。 Driverkit是一個新的SDK,具有基於IOKit的所有新框架,但已進行了更新和現代化。 設備驅動程序在內核外部的用戶空間中運行。[19][20][21]
20.1.0 2020年10月30日 macOS 11.0.1
20.2.0 2021年12月15日 macOS 11.1
20.3.0 2021年2月2日 macOS 11.2
20.4.0 2021年4月20日 macOS 11.3
20.5.0 2021年5月24日 macOS 11.4
20.6.0 2021年6月2日 macOS 11.5
21.0.0 2021年6月7日 macOS 12.0 beta 1
21.0.1 2021年10月25日 macOS 12.0
21.1.0 2021年10月25日 macOS 12.0.1
21.2.0 2021年12月7日 macOS 12.1
21.3.0 2022年1月7日 macOS 12.2

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開頭,依此類推(早期的內部版本號代表開發人員的版本)。[22]

命令終端中的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等自由軟件發行版中。[23]

2006年7月25日,OpenDarwin團隊宣布該項目已關閉,因為他們認為OpenDarwin「已成為Mac OS X相關項目的唯一託管工具」,並且創建獨立的Darwin操作系統的努力失敗了。他們還指出:「消息來源的可用性,與Apple代表的互動,建立和跟蹤消息來源的困難以及社區缺乏興趣,這一切都為此做出了貢獻。」[24]它最後的穩定版本是2004年7月16日發行的7.2.1版。[25]

PureDarwin

PureDarwin是一個從Apple發行的Darwin源代碼中創建可引導的操作系統映像的項目。[26]自從OpenDarwin停止運行以及Darwin8.x以來發布可啟動映像以來,由於許多組件都成為封閉源,因此創建完整的操作系統變得越來越困難。 該項目已成功創建了基於Darwin 9和X11 GUI的Xmas版本[27]和僅基於Darwin 17的命令行17.4 Beta。[28]

其他衍生項目

 
XDarwin上的Window Maker

參考

  1. ^ Release 1228. 2007年10月30日 [2023年1月9日]. 
  2. ^ Jim Magee. WWDC 2000 Session 106 - Mac OS X:Kernel. 14 記錄於. [2020-04-29]. (原始內容存檔於2018-12-26). 
  3. ^ Mac Technology Overview: Kernel and Device Drivers Layer. Apple Developer Connection. [February 11, 2013]. (原始內容存檔於2014-03-09). 
  4. ^ Singh, Amit. XNU: The Kernel. January 7, 2004 [February 11, 2013]. (原始內容存檔於2019-04-19). 
  5. ^ Additional Features. Porting UNIX/Linux Applications to OS X. Apple Inc. (原始內容存檔於2017-11-14). 
  6. ^ Voodoo XNU Kernel Source. (原始內容存檔於2015-09-30).  需要一個Apache SVN客戶端。
  7. ^ XNU on ARMv7. 
  8. ^ FSF's Opinion of the Apple Public Source License (APSL) 2.0. (原始內容存檔於2020-05-04). 
  9. ^ The Problems with older versions of the Apple Public Source License (APSL). (原始內容存檔於2020-04-19). 
  10. ^ Open Source Releases. Apple Developer Connection. [February 11, 2013]. (原始內容存檔於2020-09-17). 
  11. ^ "Technical Note TN2029:Mac OS X v10.1。"頁面存檔備份,存於網際網路檔案館Apple Developer Connection. 於2008年6月2日檢索。
  12. ^ Siracusa, John (September 5, 2002). "Mac OS X 10.2 Jaguar."頁面存檔備份,存於網際網路檔案館Ars Technica. 於2008年5月31日檢索。
  13. ^ Siracusa, John (November 9, 2003). "Mac OS X 10.3 Panther."頁面存檔備份,存於網際網路檔案館Ars Technica.於2008年5月31日檢索。
  14. ^ Siracusa, John (April 28, 2005). "Mac OS X 10.4 Tiger."頁面存檔備份,存於網際網路檔案館Ars Technica. 於2008年5月30日檢索。
  15. ^ Siracusa, John (October 28, 2007). "Mac OS X 10.5 Leopard:Ars Technical review."頁面存檔備份,存於網際網路檔案館Ars Technica. 於2008年5月30日檢索。
  16. ^ Siracusa, John (August 31, 2009). "Mac OS X 10.6 Snow Leopard: the Ars Technica review."頁面存檔備份,存於網際網路檔案館Ars Technica. 於2009年11月29日檢索。
  17. ^ 在一台越獄iPhone 4S中發現。
  18. ^ System Extensions and DriverKit - WWDC 2019 - Videos. Apple Developer. [2020-04-29]. (原始內容存檔於2020-03-04) (英語). 
  19. ^ System Extensions. Apple Developer Documentation. [2020-04-09]. (原始內容存檔於2021-11-08). 
  20. ^ DriverKit. Apple Developer Documentation. [2020-04-09]. (原始內容存檔於2020-03-19). 
  21. ^ System Extensions and DriverKit. Apple Developer Documentation. [2020-04-09]. (原始內容存檔於2020-03-04). 
  22. ^ Prabhakar, Ernie. Darwin Version - New Scheme in Software Update 1. darwin-development (郵件列表). November 9, 2001 [June 2, 2008]. (原始內容存檔於2009-01-14). 
  23. ^ OpenDarwin. OpenDarwin Project. [2020-04-29]. (原始內容存檔於2006-01-06). 
  24. ^ OpenDarwin Core Team and Administrators. OpenDarwin Shutting Down. OpenDarwin Project. July 25, 2006 [2020-04-29]. (原始內容存檔於2006-08-04). 
  25. ^ OpenDarwin 7.2.1 Released. 2004-08-05 [2019-10-07]. (原始內容存檔於2004-08-05). 
  26. ^ PureDarwin. [2010-04-04]. (原始內容存檔於2010-04-11). 
  27. ^ PureDarwin Xmas頁面存檔備份,存於網際網路檔案館) (2015)
  28. ^ PureDarwin 17.4 Beta. GitHub. PureDarwin. 30 November 2019 [11 January 2020]. (原始內容存檔於2019-12-13). 
  29. ^ Security Enhanced Darwin. SEDarwin. January 22, 2007 [2020-04-29]. (原始內容存檔於2011-10-05). 
  30. ^ What's New In Mac OS X: Mac OS X v10.5. Mac OS X Reference Library. Apple Inc. November 13, 2009 [2020-04-29]. (原始內容存檔於2009-12-08). 
  31. ^ L4/Darwin (aka Darbat). Ertos.nicta.com.au. May 9, 2007 [2020-04-29]. (原始內容存檔於2013-12-19). 
  32. ^ Darling: macOS translation layer for Linux. www.darlinghq.org. [11 January 2020]. (原始內容存檔於2020-04-21). 
  33. ^ yuriwho. WirelessDriver Home Page. Wirelessdriver.sourceforge.net. May 5, 2002 [July 12, 2010]. (原始內容存檔於2020-07-28). 
  34. ^ iwi2200 Darwin. SourceForge. March 27, 2009 [June 13, 2010]. (原始內容存檔於2019-04-02). 
  35. ^ Port BSD tulip driver(s) to Darwin OS | Download Port BSD tulip driver(s) to Darwin OS software for free at. Sourceforge.net. [July 12, 2010]. (原始內容存檔於2019-04-02). 
  36. ^ RealTek network driver for Mac OS X/Darwin. SourceForge. March 15, 2006 [June 3, 2010]. (原始內容存檔於2019-04-02).  Project inactive since March 15, 2006.
  37. ^ fansui; et al. RTL8150LMEthernet. SourceForge. August 1, 2007 [June 13, 2010]. (原始內容存檔於2018-12-08). 
  38. ^ ZyXEL Modem Drivers for OS X/Darwin | Download ZyXEL Modem Drivers for OS X/Darwin software for free at. Sourceforge.net. May 14, 2002 [July 12, 2010]. (原始內容存檔於2019-04-02). 
  39. ^ Mac OS X PC Card ATA Driver. Pccardata.sourceforge.net. December 20, 2001 [July 12, 2010]. (原始內容存檔於2020-08-05). 
  40. ^ Mac OS X Ext2 Filesystem | Download Mac OS X Ext2 Filesystem software for free at. Sourceforge.net. October 14, 2002 [July 12, 2010]. (原始內容存檔於2011-08-25). 
  41. ^ ext2 filesystem in user space. SourceForge. July 14, 2008 [June 13, 2010]. (原始內容存檔於2020-04-28). 

外部連結