Darwin
Darwin — это операционная система с открытым исходным кодом, разработанная компанией Apple Inc. Она является фундаментом для всех операционных систем Apple, включая macOS, iOS, iPadOS, tvOS и watchOS. Darwin основан на ядре XNU (X is Not Unix), которое сочетает в себе микроядро Mach, компоненты из FreeBSD и объектно-ориентированный драйверный фреймворк I/O Kit. Система распространяется под лицензией Apple Public Source License (APSL), признанной Open Source Initiative (OSI) как соответствующая определению открытого исходного кода.
История
Предпосылки создания
До середины 1990-х годов Apple использовала классическую операционную систему Mac OS (до версии 9), которая имела монолитное ядро и не поддерживала вытесняющую многозадачность, защиту памяти и современные сетевые протоколы. К концу 1990-х годов компания столкнулась с необходимостью создания принципиально новой ОС, способной конкурировать с Windows NT и Linux.
Приобретение NeXT
В 1997 году Apple приобрела компанию NeXT, основанную Стивом Джобсом после его ухода из Apple. Операционная система NeXTSTEP, созданная на базе ядра Mach и кода BSD, стала основой для будущей macOS. Сделка обошлась Apple в 429 миллионов долларов.
Разработка и выпуск
В 1999 году Apple выпустила Mac OS X Server 1.0, а в 2001 году — потребительскую версию Mac OS X 10.0 Cheetah. Ядро и низкоуровневые компоненты этой системы были выделены в отдельный проект Darwin, который впервые был опубликован как открытый исходный код в апреле 2000 года. Название «Darwin» было выбрано в честь Чарльза Дарвина, символизируя эволюцию операционной системы.
Открытие исходного кода
Apple сделала Darwin открытым проектом, чтобы привлечь разработчиков стороннего ПО и способствовать портированию Unix-приложений на платформу macOS. Исходные коды Darwin публикуются на официальном сайте Apple Open Source и размещаются в репозиториях на GitHub.
Архитектура
Ядро XNU
XNU (X is Not Unix) — гибридное ядро, разработанное Apple. Оно состоит из трёх основных компонентов:
- Микроядро Mach — обеспечивает базовые функции управления памятью, процессами, межпроцессным взаимодействием (IPC) и виртуальной памятью.
- BSD-слой — предоставляет POSIX-совместимый интерфейс, файловые системы, сетевой стек, управление пользователями и процессами.
- I/O Kit — объектно-ориентированный фреймворк для разработки драйверов устройств на языке C++.
Подсистемы
Darwin включает следующие ключевые подсистемы:
- LibSystem — библиотека, объединяющая libc, libm, libpthread и другие низкоуровневые библиотеки.
- File System — поддержка HFS+, APFS (с macOS 10.13), UFS, FAT32, exFAT и NFS.
- Networking — стек протоколов TCP/IP, поддержка IPv4 и IPv6, брандмауэр на основе ipfw (позже — pf).
- Security — подсистема аутентификации (PAM), механизмы мандатного контроля доступа (Sandbox), файрвол, шифрование (FileVault).
Отличия от FreeBSD
Хотя Darwin использует значительный объём кода из FreeBSD, между ними есть существенные различия:
- Ядро Darwin (XNU) не является чистым BSD-ядром, а гибридным.
- Darwin не включает пользовательские утилиты BSD (например, ps, ls, find) — они поставляются отдельно в macOS.
- Darwin не поддерживает загрузку на оборудовании, отличном от Apple (кроме ограниченных портов для x86-64).
Версии и выпуски
Darwin развивается параллельно с macOS. Каждой версии macOS соответствует определённая версия Darwin. Нумерация Darwin отличается от версий macOS:
| Версия macOS | Версия Darwin | Год выпуска | Основные изменения |
|---|---|---|---|
| 10.0 Cheetah | 1.3.1 | 2001 | Первый выпуск Darwin с открытым кодом |
| 10.5 Leopard | 9.0 | 2007 | Поддержка 64-битных процессоров, ZFS (экспериментально) |
| 10.6 Snow Leopard | 10.0 | 2009 | Полная 64-битная поддержка, Grand Central Dispatch |
| 10.10 Yosemite | 14.0 | 2014 | Оптимизация для Retina-дисплеев, Metal API |
| 10.13 High Sierra | 17.0 | 2017 | Переход на APFS, поддержка HEVC |
| 11 Big Sur | 20.0 | 2020 | Поддержка Apple Silicon (ARM64), универсальные бинарники |
| 14 Sonoma | 23.0 | 2023 | Улучшения производительности, новые API |
Применение
macOS
Darwin составляет основу macOS — настольной операционной системы Apple. Пользовательский интерфейс (Aqua), графическая подсистема (Quartz Compositor, позже WindowServer) и прикладное ПО работают поверх Darwin.
iOS и производные
На Darwin базируются мобильные ОС Apple: iOS, iPadOS, tvOS и watchOS. В этих системах Darwin адаптирован для работы на ARM-процессорах Apple (A-серии и S-серии) и дополнен специфическими драйверами и подсистемами (Multi-Touch, Core Audio, Core Animation).
Серверные решения
До прекращения выпуска macOS Server в 2022 году Darwin использовался в серверных продуктах Apple. В настоящее время серверные функции доступны в составе macOS, но Apple не предлагает отдельного серверного дистрибутива.
Разработка и сообщество
Исходный код
Apple публикует исходный код Darwin на сайте opensource.apple.com. Репозиторий включает ядро XNU, библиотеки LibSystem, драйверы I/O Kit, системные утилиты (launchd, configd) и инструменты командной строки. Однако многие компоненты macOS (графический стек, Finder, Safari) остаются закрытыми.
Сторонние порты
Существуют попытки портировать Darwin на оборудование, не произведённое Apple:
- OpenDarwin (2002–2006) — проект по созданию независимого дистрибутива Darwin, закрыт из-за лицензионных ограничений.
- PureDarwin — современный проект, выпускающий загрузочные образы Darwin для тестирования на виртуальных машинах и реальном оборудовании.
- Darwin-on-x86 — неофициальные сборки для платформы x86-64.
Лицензирование
Darwin распространяется под лицензией APSL 2.0. Эта лицензия разрешает свободное использование, модификацию и распространение исходного кода, но содержит ограничения на использование товарных знаков Apple и требование сохранения уведомлений об авторских правах.
Критика
Неполнота открытого кода
Основной недостаток Darwin с точки зрения сообщества открытого ПО — неполнота публикуемых исходных кодов. Многие драйверы, графические библиотеки и пользовательские приложения остаются проприетарными. Это затрудняет создание полноценных сторонних дистрибутивов.
Зависимость от оборудования Apple
Darwin оптимизирован для работы на устройствах Apple и не поддерживает загрузку на большинстве ПК с архитектурой x86-64 (за исключением ограниченного числа конфигураций). Это ограничивает его использование в качестве универсальной Unix-подобной ОС.
Лицензионные ограничения
APSL 2.0 несовместима с GPL версии 3, что создаёт юридические сложности при интеграции кода Darwin с GPL-проектами. Apple постепенно заменяет GPL-компоненты (например, GCC на Clang, bash на zsh) собственными разработками.
Интересные факты
- Darwin является одной из немногих операционных систем, использующих гибридное ядро, наряду с Windows NT.
- Ядро XNU написано на языках C и C++ (для I/O Kit).
- Darwin поддерживает запуск исполняемых файлов форматов Mach-O (основной формат macOS) и ELF (через эмуляцию или трансляцию).
- В составе Darwin поставляется командная оболочка zsh (с macOS 10.15 Catalina), заменившая bash.
- Darwin не имеет графического интерфейса — все взаимодействие происходит через терминал или удалённый доступ по SSH.
Источники
- Apple Inc., «XNU: The Kernel», Apple Open Source Documentation.
- Singh, Amit, «Mac OS X Internals: A Systems Approach», Addison-Wesley, 2006.
- Levin, Jonathan, «Mac OS X and iOS Internals: To the Apple's Core», Wiley, 2012.
- Официальный сайт проекта PureDarwin (puredarwin.org).
- Репозиторий исходного кода Darwin на GitHub (github.com/apple/darwin-xnu).
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →