开发者 | 苹果公司 |
---|---|
编程语言 | C, C++, Objective-C, 汇编语言 |
操作系统家族 | 类Unix系统 |
运作状态 | Current |
原始码模式 | 自由及开放原始码件 |
最新版本 | 20.3.0 / 2021年2月2日 |
支持平台 | 目前: x86-64, 64-bit ARM 历史上: PowerPC, IA-32, 32-bit ARM (ARM32位支持是闭源的) |
内核类别 | 混合内核 |
许可证 | 主要为APSL,含有闭源的设备驱动 |
官方网站 | opensource |
仓库 | github |
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的各种要素(包括过程模型,网络堆栈和虚拟文件系统),[1]还有一个称为I/O Kit的面向对象的设备驱动程序API。[2]混合内核设计使其具备了了微内核的灵活性和宏内核的性能。[3]
硬件和软件支持
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年以来似乎未进行过更新。[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.2 | 1999年4月14日 | Mac OS X Server 1.0.1 | |
0.3 | 1999年8月5日 | 基于 Rhapsody 5.5
| |
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 |
|
1.4.1 | 2001年10月2日 | Mac OS X v10.1 | |
5.1 | 2001年11月12日 | Mac OS X v10.1.1
| |
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 | |
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 |
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 |
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(初始发行版)
|
16.5.0 | 2017年3月27日 | macOS v10.12.4
iOS 10.3 | |
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 |
|
17.5.0 | 2018年3月29日 | macOS 10.13.4
| |
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 | |
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]
其他派生项目
- 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上的移植。[27]它已被合并到Mac OS X 10.5中。[28]
- Darbat项目是Darwin在L4微内核系列上的试验性移植。 它旨在与现有的Darwin二进制文件二进制兼容。[29]
- Darling项目是用于在Linux系统上运行macOS二进制文件的兼容性层。它使用了一些Darwin的原始码。[30]
- 有许多项目专注于驱动程序支持:例如无线驱动程序[31][32],有线NIC驱动程序[33][34][35],调制解调器驱动程序[36],读卡器[37],ext2和ext3文件系统[38][39]。
参考
- ↑ Mac Technology Overview: Kernel and Device Drivers Layer. Apple Developer Connection. [2013-02-11].
- ↑ Singh, Amit. XNU: The Kernel. 2004-01-07 [2013-02-11].
- ↑ Additional Features. Porting UNIX/Linux Applications to OS X. Apple Inc.
- ↑ Voodoo XNU Kernel Source. 需要一个Apache SVN客户端。
- ↑ XNU on ARMv7.
- ↑ FSF's Opinion of the Apple Public Source License (APSL) 2.0.
- ↑ The Problems with older versions of the Apple Public Source License (APSL).
- ↑ Open Source Releases. Apple Developer Connection. [2013-02-11].
- ↑ "Technical Note TN2029:Mac OS X v10.1。" Apple Developer Connection. 于2008年6月2日检索。
- ↑ Siracusa, John (September 5, 2002). "Mac OS X 10.2 Jaguar." Ars Technica. 于2008年5月31日检索。
- ↑ Siracusa, John (November 9, 2003). "Mac OS X 10.3 Panther." Ars Technica.于2008年5月31日检索。
- ↑ Siracusa, John (April 28, 2005). "Mac OS X 10.4 Tiger." Ars Technica. 于2008年5月30日检索。
- ↑ Siracusa, John (October 28, 2007). "Mac OS X 10.5 Leopard:Ars Technical review." Ars Technica. 于2008年5月30日检索。
- ↑ Siracusa, John (August 31, 2009). "Mac OS X 10.6 Snow Leopard: the Ars Technica review." Ars Technica. 于2009年11月29日检索。
- ↑ 在一台越狱的iPhone 4S中发现。
- ↑ System Extensions and DriverKit - WWDC 2019 - Videos. Apple Developer. [2020-04-29] (英语).
- ↑ System Extensions. Apple Developer Documentation.
- ↑ DriverKit. Apple Developer Documentation. [2020-04-09].
- ↑ System Extensions and DriverKit. Apple Developer Documentation. [2020-04-09].
- ↑ Prabhakar, Ernie. Darwin Version - New Scheme in Software Update 1. darwin-development (邮件列表). 2001-11-09 [2008-06-02].
- ↑ OpenDarwin. OpenDarwin Project. [2020-04-29].
- ↑ OpenDarwin Core Team and Administrators. OpenDarwin Shutting Down. OpenDarwin Project. 2006-07-25 [2020-04-29].
- ↑ OpenDarwin 7.2.1 Released. 2004-08-05 [2019-10-07].
- ↑ PureDarwin. [2010-04-04].
- ↑ PureDarwin Xmas (2015)
- ↑ PureDarwin 17.4 Beta. GitHub. PureDarwin. 2019-11-30 [2020-01-11].
- ↑ Security Enhanced Darwin. SEDarwin. 2007-01-22 [2020-04-29].
- ↑ 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].
- ↑ L4/Darwin (aka Darbat). Ertos.nicta.com.au. 2007-05-09 [2020-04-29].
- ↑ Darling: macOS translation layer for Linux. www.darlinghq.org. [2020-01-11].
- ↑ yuriwho. WirelessDriver Home Page. Wirelessdriver.sourceforge.net. 2002-05-05 [2010-07-12].
- ↑ iwi2200 Darwin. SourceForge. 2009-03-27 [2010-06-13].
- ↑ 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].
- ↑ RealTek network driver for Mac OS X/Darwin. SourceForge. 2006-03-15 [2010-06-03]. Project inactive since March 15, 2006.
- ↑ fansui; et al. RTL8150LMEthernet. SourceForge. 2007-08-01 [2010-06-13].
- ↑ 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].
- ↑ Mac OS X PC Card ATA Driver. Pccardata.sourceforge.net. 2001-12-20 [2010-07-12].
- ↑ Mac OS X Ext2 Filesystem | Download Mac OS X Ext2 Filesystem software for free at. Sourceforge.net. 2002-10-14 [2010-07-12].
- ↑ ext2 filesystem in user space. SourceForge. 2008-07-14 [2010-06-13].