Darwin(操作系统)

本页使用了标题或全文手工转换,现处于中国大陆简体模式
求闻百科,共笔求闻
Darwin
开发者苹果公司
编程语言C, C++, Objective-C, 汇编语言
操作系统家族类Unix系统
运作状态Current
源码模式自由及开放源码件
最新版本20.3.0 / 2021年2月2日,​3年前​(2021-02-02
支持平台目前: x86-64, 64-bit ARM
历史上: PowerPC, IA-32, 32-bit ARM (ARM32位支持是闭源的)
内核类别混合内核
许可证主要为APSL,含有闭源的设备驱动
官方网站opensource.apple.com
仓库github.com/apple/darwin-xnu

Darwin是由苹果公司于2000年所发布的一个开放源代码操作系统。Darwin是macOSiOS操作环境的操作系统部分。苹果公司于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的各种要素(包括过程模型,网络堆栈和虚拟文件系统),[1]还有一个称为I/O Kit的面向对象的设备驱动程序API。[2]混合内核设计使其具备了了微内核的灵活性和宏内核的性能。[3]

硬件和软件支持

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年以来似乎未进行过更新。[4]XNU内核的开源移植也可用于ARM平台。[5]较旧的版本支持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不兼容的自由软件许可证。[6]它之前的版本是根据APSL许可证的较早版本发布的,尽管它确实满足了开放源代码定义的要求,但它不符合FSF对自由软件的定义。[7]

版本历史

下表是主要的Darwin版本及其发行日期和相应的macOS版本的表格。[8]请注意,相应的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[9]
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).[11]
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[15]
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,并在内核之外的用户空间中运行。[16]
  • DriverKit取代了IOKit。 它引入了使用DriverKit构建的“ Dexts”(驱动程序扩展)。 Driverkit是一个新的SDK,具有基于IOKit的所有新框架,但已进行了更新和现代化。 设备驱动程序在内核外部的用户空间中运行。[17][18][19]
20.1.0 2020年10月30日 macOS Big Sur macOS 11.0.1
20.2.0 2021年12月15日 macOS 11.1
20.3.0 2021年2月2日 macOS 11.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开头,依此类推(早期的内部版本号代表开发人员的版本)。[20]

命令终端中的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等自由软件发行版中。[21]

2006年7月25日,OpenDarwin团队宣布该项目已关闭,因为他们认为OpenDarwin“已成为Mac OS X相关项目的唯一托管工具”,并且创建独立的Darwin操作系统的努力失败了。他们还指出:“消息来源的可用性,与Apple代表的互动,创建和跟踪消息来源的困难以及社区缺乏兴趣,这一切都为此做出了贡献。”[22]它最后的稳定版本是2004年7月16日发行的7.2.1版。[23]

PureDarwin

PureDarwin是一个从Apple发行的Darwin源代码中创建可引导的操作系统映像的项目。[24]自从OpenDarwin停止运行以及Darwin8.x以来发布可启动映像以来,由于许多组件都成为封闭源,因此创建完整的操作系统变得越来越困难。 该项目已成功创建了基于Darwin 9和X11 GUI的Xmas版本[25]和仅基于Darwin 17的命令行17.4 Beta。[26]

其他派生项目

参考

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

外部链接