Darwin 操作系统

2025年4月30日 | 9 分钟阅读

Mac OS X 的 Darwin 操作系统核心以苹果命名。没有用户界面的 Mac OS X 被称为 Darwin。基于 BSD Unix 和 Mach 3.0 的内核自 1999 年首次发布以来,就融合了苹果和 UNIX 的不同世界的特性。Mac OS X 于 1997 年使用苹果的 NeXT 技术开发。NeXT 公司基于 4.3 BSD 开发了 OPENSTEP 操作系统,作为 NEXTSTEP 的升级版。

由于 Darwin 与 FreeBSD 发行版兼容作为参考,并推动了许多开源项目,苹果积极推广 BSD 社区。Mac OS X 将 Mac OS 的易用性与 UNIX(受保护内存区域)的效率和稳定性相结合。Darwin 操作系统的吉祥物是鸭嘴兽 Hexley。

概述

苹果和开源社区正在合作开发 PowerPC 和 x86 操作系统版本。开源理念影响着操作系统的各个版本。公众可以获得更新和新进展;通过免费注册,可以在苹果网站下载源代码。无法排除 Darwin 操作系统 XNU 分裂成几个发行版的可能性。

为 Darwin 系统核心创建的所有程序都与 Mac OS X 兼容,但一些独特的 Mac OS X 程序在 Darwin 上无法原生运行。Mach-O 是 Darwin 可执行应用程序的默认格式。支持主要由 Linux 使用的软件。Linux 应用程序可以移植,但尚未支持 ELF 格式。

历史

  • Darwin 的历史始于 Unix 变体,并包含 NeXT 的 NeXTSTEP 操作系统(后来更名为 OPENSTEP,从 4.0 版本开始,并于 1989 年首次推出)的元素。
  • 1996 年苹果收购 NeXT 后,宣布 OPENSTEP 将成为其下一代 操作系统 的基础。Rhapsody (1997)、Mac OS X Server 1.0 (1999)、Mac OS X Public Beta (2000) 和 Mac OS X 10.0 (2001) 都是由此演变而来的。
  • 1999 年,苹果宣布将发布 Mac OS X Server 的 Apache Web 服务器、BSD Unix 4.4 OS 和 Mach 2.5 微内核的源代码。
  • 公司首席执行官史蒂夫·乔布斯在提到英国博物学家查尔斯·达尔文时表示:“因为这关乎进化。” 2000 年,Mac OS X 操作系统的核心组件以 Darwin 的名义,根据 Apple Public Source License (APSL) 的条款作为开源软件发布;而 Cocoa 和 Carbon 框架等更高级别的组件则被保密。
  • 2005 年 4 月,Mac OS X 的每个主要版本都包含一个用于在 PowerPC 和 Intel x86 平台上安装 Darwin 作为独立操作系统的 二进制 安装程序(ISO 镜像格式)。还提供了包含小型更新的软件包供单独安装。
  • 目前 Darwin 仅提供源代码。截至 2023 年 1 月,苹果仅在其开源网站上发布了与 macOS 和 iOS 相关的开源项目的不完整汇编,不再以 Darwin 的名字提及。

Darwin 结构

Mac OS X 实现了抢占式多任务,并受益于相关的 UNIX 设计提供的保护内存区域。内核有五个部分:包含 I/O Kit、文件系统、网络功能和 BSD 子系统的 Mach 微内核。文件系统支持 Unicode 和最多包含 255 个字符的文件名。Mach 微内核负责资源管理,包括调度、内存保护、处理器性能和系统间通信。核心部分包含 4.4 BSD-Lite2 内核和用户空间的特定版本。这隔离了网络连接和文件系统,并包含 POSIX API。

对于 Mac OS X,BSD 内核负责程序组件的线程化、安全策略管理和系统进程管理。

面向对象的编程工具,例如 Darwin 附带的 I/O Kit,提供了创建驱动程序软件所需的资源,该软件支持抢占式多任务和 SMP。

OpenDarwin 为了创建 Darwin 的衍生版本和 Mac OS X 源代码的开发环境 (IDE),于 2002 年成立了 OpenDarwin 项目。新成立的社区充当了 Mac OS X 和 Darwin 中苹果公司纳入官方源代码的新功能和错误修复的试验场。

2006 年 7 月 25 日,OpenDarwin 核心团队和管理员在其网站上公布了该项目的终止。

引用:“近年来,OpenDarwin 已缩减为 Mac OS X 相关项目的简单托管平台。最初构建 Darwin 和 Mac OS X 源的计划并未实现。社区缺乏兴趣、源的可访问性、与苹果员工的沟通、构建和监控源的挑战等都对此起到了推波助澜的作用。”

2007 年,PureDarwin 作为一个新项目推出,旨在让 Darwin 更贴近开源爱好者和开发人员。通过文档,任何爱好者都可以学习、改编和分享 Darwin。目标之一是为 Darwin 10.x 和 Darwin 9.x 创建可启动的 ISO 文件。

创建设计

操作系统中使用以下设计功能。

1. 基础(内核)

Darwin 的内核是 XNU,一个混合型内核,它利用 FreeBSD 的特定组件(如虚拟文件系统、网络堆栈和进程模型)、Open Software Foundation Mach Kernel 7.3 (OSF) 以及称为 I/O Kit 的面向对象设备驱动程序 API。混合型内核概念提供了单体内核的性能以及微内核的灵活性 [验证失败-参见讨论]。

2. 软硬件支持

最新可启动的完整版 Darwin 支持 32 位和 64 位 Apple PowerPC 计算机以及 32 位 Intel PC。

Darwin 目前支持 64 位 ARM 处理器,这些处理器用于 iPhone 5S 及更高版本、iPad Air 系列、第 6 代 iPod Touch、iPad Mini 2 及更高版本、第 5 代 iPad 及更高版本、第四代、iPad Pro 系列、后期 Apple TV、HomePod 系列、配备 Apple Silicon 的 Mac(例如 2020 年 Apple M1 Mac)以及 Raspberry Pi 3B。

通过 XNU 内核的开源移植,Darwin 支持苹果不正式支持的 Intel 和 AMD x86 平台,尽管自 2009 年以来似乎未更新。对于 ARM 设备,XNU 内核也作为开源移植可用,但自 2016 年以来未更新。早期版本支持 64 位 PowerPC、32 位 PowerPC、32 位 ARM 和 32 位 x86 的部分或全部。

由于 Darwin 的 BSD 血统(主要是 FreeBSD 用户空间)支持 POSIX API,许多为不同类 Unix 系统创建的程序都可以轻松地在 Darwin 上编译,而无需更改源代码。

Darwin 无法执行 Mac 应用程序,因为它缺少使 macOS 独一无二的许多组件,包括 Quartz Compositor、Cocoa 和 Carbon API 以及 Aqua 用户界面。尽管如此,它确实支持一些不太为人所知的 macOS 功能,例如 launchd(一个强大的服务管理框架)和 mDNSResponder(多播 DNS 响应器,是 Bonjour 网络技术的基本组成部分)。

3. 许可证

自由软件基金会 (FSF) 将 Darwin(苹果于 2003 年 7 月根据 Apple Public Source License (APSL) 2.0 版本发布)归类为与 GNU 通用公共许可证 不兼容的自由软件许可证。

早期版本根据 APSL 许可证的早期版本分发,该许可证符合开源理念的标准,但未能满足 FSF 对自由软件的概念。

衍生项目

Darwin 是免费软件。因此,曾有改进或修改操作系统的计划。

1. OpenDarwin

Darwin 是 OpenDarwin(一个由 Internet Systems Consortium 和 Apple Inc. 于 2002 年 4 月推出的社区驱动的操作系统)的基础。该计划旨在加强自由软件社区和苹果开发者之间的合作。

苹果从中受益,因为 OpenDarwin 的更新可以进入 Darwin 的版本。让开源或自由社区完全控制其操作系统对他们有利。

OpenDarwin 项目团队于 2006 年 7 月 25 日宣布关闭,因为他们认为 OpenDarwin 将成为 Mac OS X 相关项目的托管设施,并且他们开发独立 Darwin 操作系统的尝试均未成功。

2. Pure Darwin

PureDarwin 的目标是利用苹果公开的 Darwin 源代码来生成一个可启动的操作系统镜像。由于 OpenDarwin 停止使用并从 Darwin 8.x 开始提供可启动镜像,许多组件变成了闭源,因此构建完整的操作系统变得更加困难。该项目于 2015 年发布了一个基于 Darwin 9 的预览版本,带有 X11 GUI,随后是基于 Darwin 17 的仅命令行 17.4 Beta 版。

3. 其他衍生项目

  • XQuartz 是 macOS (Darwin) X 窗口系统的一部分,它存在于 Apple 的 X11.app、XDarwin 发布之前。
  • GNUstep 是 Cocoa Objective-C 框架、小部件工具包和应用程序开发工具的免费软件实现,适用于类 Unix 操作系统。
  • Window Maker 是 GNUstep 项目的一个组件,旨在复制 NeXT GUI。
  • WebKit 浏览器引擎为 iOS 和 iPadOS 的主要浏览器以及苹果的 Safari 提供支持。
  • Fink、Homebrew 和 MacPorts(以前称为 DarwinPorts)等项目使得包管理和将 UNIX 应用程序移植到 Darwin 操作系统成为可能。
  • Darwin 端口也包含在几个常见的 UNIX 包管理器中,包括 RPM、pkgsrc 和 Portage。为了避免干扰基本系统,其中一些在自己的命名空间中运行。
  • 一个名为 GNU-Darwin 的项目将自由软件产品移植到了 Darwin。它们在打包 OS 镜像的方式上类似于 Linux 发行版。
  • 借助 Darwine 项目(它是 Wine 的一个端口),Microsoft Windows 应用程序可以在 Darwin 上运行。
  • SEDarwin 是 SELinux 框架和 TrustedBSD 强制访问控制系统部分内容的 Darwin 版本。它已成为 Mac OS X 10.5 的一部分。
  • Darbat 项目是对 L4 微内核家族的 Darwin 进行的实验性改编。其目标是与当前的 Darwin 二进制文件兼容。
  • Darling 项目为在 Linux 计算机上执行 macOS 二进制文件创建了一个兼容层。它使用了一些 Darwin 源代码。
  • 一些项目专注于驱动程序支持,包括读卡器、无线和有线网卡驱动程序、调制解调器驱动程序以及 ext2 和 ext3 文件系统。
  • DarwinBSD 项目使用 pkgsrc 来管理其包系统。该项目是开源的。

发行历史

下表显示了主要 Darwin OS 的发布日期及对应的操作系统。

日期版本
1999 年 3 月Darwin 0.1
2000 年 4 月Darwin 1.0, 内核 xnu 68.4
2000 年 11 月Darwin 1.2.1
2001 年 4 月Darwin 1.3.1
2001 年 10 月Darwin 1.4.1, Mac OS X 10.1 的基础
2001 年 12 月Darwin 5.1
2002 年 8 月Darwin 5.5
2002 年 9 月Mac OS X 10.2 的基础, Darwin 6.0.1, 并使用 gcc 3.1 编译
2003 年 4 月Mac OS X 10.2.5 的基础, Darwin 6.5, 并使用 gcc 3.1 编译
2003 年 9 月Darwin 6.8
2003 年 10 月Darwin 7.0, Mac OS X 10.3 的基础
2004 年 7 月Darwin 7.2.1
2005 年 4 月Darwin 8.0, Mac OS X 10.4.0 的基础
2005 年 5 月Darwin 8.1, Mac OS X 10.4.1 的基础
2007 年 4 月Darwin 8.9, Mac OS X 10.4.9 的基础
2007 年 10 月Darwin 9.0, Mac OS X 10.5 的基础
2008 年 2 月Darwin 9.2, Mac OS X 10.5.2 的基础
2009 年 8 月Darwin 9.8, Mac OS X 10.5.8 的基础
2009 年 8 月Darwin 10.0, Mac OS X 10.6 的基础
2009 年 11 月Darwin 10.2, Mac OS X 10.6.2 的基础
2010 年 4 月Darwin 10.3, Mac OS X 10.6.3 的基础
2010 年 11 月Darwin 10.5, Mac OS X 10.6.5 的基础
2011 年 1 月Darwin 10.6, Mac OS X 10.6.6 的基础
2011 年 8 月Darwin 11.1, Mac OS X 10.7.1 的基础
2012 年 5 月Darwin 11.4, Mac OS X 10.7.4 的基础
2012 年 8 月Darwin 12.0, Mac OS X 10.8 的基础
2013 年 4 月Darwin 12.3, Mac OS X 10.8.3 的基础
2013 年 10 月Darwin 13.0, Mac OS X 10.9 的基础
2014 年 10 月Darwin 14.0, Mac OS X 10.10 的基础
2015 年 9 月Darwin 15.0, Mac OS X 10.11 的基础
2016 年 5 月Darwin 15.5, Mac OS X 10.11.5 的基础
2016Darwin 16, macOS Sierra (Version 10.12)
2017Darwin 17, macOS High Sierra (Version 10.13)
2018Darwin 18, macOS Mojave (Version 10.14)
2019Darwin 19, macOS Catalina (Version 10.15)
2020Darwin 20, macOS Big Sur (Version 11.0)
2021Darwin 21, macOS Monterey (Version 12.0)

结论

Darwin 操作系统用于 macOS 应用程序和设备。它主要通过高级功能和实用性进行升级。