Darwin это mac os

Обновлено: 03.07.2024

Что-то совсем запутался.
Инет по этому вопросу пишет Darwin — это открытая POSIX-совместимая операционная система, выпущенная Apple Inc. в 2000 году. Она совмещает код, написанный самой Apple, с полученным от NeXTSTEP, FreeBSD и прочих свободных проектов.

Т.е. это ОС выпускаемая Apple Inc. для своих MAC-ов, но что-то ни разу не видел продаваемый агрегат с MAC OS Darwin, ну да ладно.
Однако там же в Инете написано Хронология версий
1.3.1 — Mac OS X 10.0, 10.0.1, 10.0.2, 10.0.3, 10.0.4
1.4.1 — Mac OS X X 10.1
5.1 — Mac OS X 10.1.1
.
10.6.0 — Mac OS X 10.6.6 (Snow Leopard)
10.7.0 — Mac OS X 10.6.7 (Snow Leopard)
10.8.0 — Mac OS X 10.6.8 (Snow Leopard)
11.0.0 — Mac OS X 10.7 (Lion)
. Читал фсё в Wiki.
Вот теперь вопрос: какое отношение имеют MAC OS указанные в Хронологии версий к MAC OS Darwin. Ставиться ли MAC OS Darwin на обычную MAC OS или как?

З.Ы. Проблема в следующем. Возникла настоятельная необходимость откомпилировать некоторые проекты, созданные в Delphi, под MAC OS. Выяснил, что есть GPL аналог Delphi, называемый Lazarus — свободная среда разработки программного обеспечения для компилятора Free Pascal Compiler. Интегрированная среда разработки предоставляет возможность кроссплатформенной разработки приложений в Delphi-подобном окружении. Lasarus может работать под MAC OS, и я его успешно установил на MAC-е с Mac OS X 10.6.8 (Snow Leopard), но вот Free Pascal Compiler, используемый в Lasarus пишет, что может быть установлен только на ресурс от MAC OS Darwin.

__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь

Объясните что такое E
Объясните пожалуйста подробно что значит буква E в таких задачах:

Объясните что такое k ?
Объясните пожалуйста что такое k. Чему равно его начальное значение? uses crt; var x:array of.

Объясните что такое INNER JOIN?
Объясните что такое INNER JOIN?

inline-объясните что такое
1.Перегрузка ф-ии-следует ли все функции перегрузить? 2.inline-объясните что такое 3.каким.

Дарвин это вроде как ядро. По поводу компиляции, лучше с самого мака, установить дополнения для Xcode (если они есть, паскаль во всяком случаи поддерживается. ) А дочитать всю статью из wikipedia сил не хватило ?
Darwin - это только часть MAC OS X
Причем похоже это именно та часть кода, которую они открыли
Поэтому если тебе нужен MAC OS X, то нужен именно MAC OS X
так как Darwin тебе не поможет

Объясните что такое сервлет?
Почитал немного о сервлетах, но так и не смог до конца понять что это такое и для чего нужно.

Объясните, что такое Рекурсия?
Всем привет! Не могли бы пояснить -- что такое рекурсия? Или хотя бы где это доходчиво объяснено?

Все в курсе, что мобильные девайсы Apple работают под управлением iOS. Многие знают, что iOS представляет собой облегченную версию настольной Mac OS X. Некоторые догадываются, что в основе Mac OS X лежит POSIX-совместимая ОС Darwin, а те, кто всерьез интересуется IT, в курсе, что основа Darwin — это ядро XNU, появившееся на свет в результате слияния микроядра Mach и компонентов ядра FreeBSD. Однако все это голые факты, которые ничего не скажут нам о том, как же на самом деле работает iOS и в чем ее отличия от настольного собрата.

Mac OS X

Операционная система, установленная сегодня на все маки и (в измененном виде) на айдевайсы, ведет свою историю аж с 1988 года, который в мире IT известен также тем, что стал годом выпуска первой бета-версии операционной системы NeXTSTEP. Сама NeXTSTEP была детищем команды разработчиков Стива Джобса, который к тому времени уже покинул Apple и основал компанию NeXT, которая занялась разработкой компьютеров для образовательных нужд.

В момент своего появления на свет NeXTSTEP была поистине передовой операционной системой, которая включала в себя множество технологических новаций. В основе ОС лежало модифицированное микроядро Mach, дополненное компонентами ядра FreeBSD, включая эталонную реализацию сетевого стека. Более высокоуровневые компоненты NeXTSTEP были написаны с использованием языка Objective-C и предоставляли разработчикам приложений богатый объектно-ориентированный API. Система была снабжена развитым и весьма удобным графическим интерфейсом (ключевые компоненты которого сохранились в OS X и даже iOS) и мощной средой разработки, включавшей в себя в том числе известный всем современным разработчикам визуальный дизайнер интерфейса.

После провала NeXT и возвращения Стива Джобса в компанию Apple в 1997 году NeXTSTEP легла в основу проекта Rhapsody, в рамках которого началась разработка системы-наследника Mac OS 9. В 2000 году из Rhapsody был выделен открытый проект Darwin, исходники которого опубликованы под лицензией APSL, а уже в 2001 году появилась на свет OS X 10.0, построенная на его основе. Спустя несколько лет Darwin лег в основу операционной системы для готовящегося к выпуску смартфона, о котором до 2007-го, кроме слухов, не было известно почти ничего.

Рабочий стол NeXTSTEP. Справа можно видеть док, который в OS X/ iOS переехал в нижнюю часть экрана

XNU и Darwin

Условно начинку OS X / iOS можно разделить на три логических уровня: ядро XNU, слой совместимости со стандартом POSIX (плюс различные системные демоны/сервисы) и слой NeXTSTEP, реализующий графический стек, фреймворк и API приложений. Darwin включает в себя первые два слоя и распространяется свободно, но только в версии для OS X. iOS-вариант, портированный на архитектуру ARM и включающий в себя некоторые доработки, полностью закрыт и распространяется только в составе прошивок для айдевайсов (судя по всему, это защита от портирования iOS на другие устройства).

По своей сути Darwin — это «голая» UNIX-подобная ОС, которая включает в себя POSIX API, шелл, набор команд и сервисов, минимально необходимых для работы системы в консольном режиме и запуска UNIX-софта. В этом плане он похож на базовую систему FreeBSD или минимальную установку какого-нибудь Arch Linux, которые позволяют запустить консольный UNIX-софт, но не имеют ни графической оболочки, ни всего необходимого для запуска серьезных графических приложений из сред GNOME или KDE.

Ключевой компонент Darwin — гибридное ядро XNU, основанное, как уже было сказано выше, на ядре Mach и компонентах ядра FreeBSD, таких как планировщик процессов, сетевой стек и виртуальная файловая система (слой VFS). В отличие от Mach и FreeBSD, ядро OS X использует собственный API драйверов, названный I/O Kit и позволяющий писать драйверы на C++, используя объектно-ориентированный подход, сильно упрощающий разработку.

iOS использует несколько измененную версию XNU, однако в силу того, что ядро iOS закрыто, сказать, что именно изменила Apple, затруднительно. Известно только, что оно собрано с другими опциями компилятора и модифицированным менеджером памяти, который учитывает небольшие объемы оперативки в мобильных устройствах. Во всем остальном это все то же XNU, которое можно найти в виде зашифрованного кеша (ядро + все драйверы/модули) в каталоге /System/Library/Caches/com.apple.kernelcaches/kernelcache на самом устройстве.

Уровнем выше ядра в Darwin располагается слой UNIX/BSD, включающий в себя набор стандартных библиотек языка си (libc, libmatch, libpthread и так далее), а также инструменты командной строки, набор шеллов (bash, tcsh и ksh) и демонов, таких как launchd и стандартный SSH-сервер. Последний, кстати, можно активировать путем правки файла /System/Library/LaunchDaemons/ssh.plist. Если, конечно, джейлбрейкнуть девайс.

На этом открытая часть ОС под названием Darwin заканчивается, и начинается слой фреймворков, которые как раз и образуют то, что мы привыкли считать OS X / iOS.

Слой Darwin

Описание фреймворков iOS на сайте Apple

Фреймворки

Darwin реализует лишь базовую часть Mac OS / iOS, которая отвечает только за низкоуровневые функции (драйверы, запуск/остановка системы, управление сетью, изоляция приложений и так далее). Та часть системы, которая видна пользователю и приложениям, в его состав не входит и реализована в так называемых фреймворках — наборах библиотек и сервисов, которые отвечают в том числе за формирование графического окружения и высокоуровневый API для сторонних и стоковых приложений

Как и во многих других ОС, API Mac OS и iOS разделен на публичный и приватный. Сторонним приложениям доступен исключительно публичный и сильно урезанный API, однако jailbreak-приложения могут использовать и приватный.

В стандартной поставке Mac OS и iOS можно найти десятки различных фреймворков, которые отвечают за доступ к самым разным функциям ОС — от реализации адресной книги (фреймворк AddressBook) до библиотеки OpenGL (GLKit). Набор базовых фреймворков для разработки графических приложений объединен в так называемый Cocoa API, своего рода метафреймворк, позволяющий получить доступ к основным возможностям ОС. В iOS он носит имя Cocoa Touch и отличается от настольной версии ориентацией на сенсорные дисплеи.

Далеко не все фреймворки доступны в обеих ОС. Многие из них специфичны только для iOS. В качестве примеров можно привести AssetsLibrary, который отвечает за работу с фотографиями и видео, CoreBlueTooth, позволяющий получить доступ к синезубу, или iAd, предназначенный для вывода рекламных объявлений в приложениях. Другие фреймворки существуют только в настольной версии системы, однако время от времени Apple переносит те или иные части iOS в Mac OS или обратно, как, например, случилось с фреймворком CoreMedia, который изначально был доступен только в iOS.

Все стандартные системные фреймворки можно найти в системном каталоге /System/Library/Frameworks/. Каждый из них находится в своем собственном каталоге, называемом бандлом (boundle), который включает в себя ресурсы (изображения и описание элементов интерфейса), хидеры языка си, описывающие API, а также динамически загружаемую библиотеку (в формате dylib) с реализацией фреймворка.

Одна из интересных особенностей фреймворков — их версионность. Один фреймворк может иметь сразу несколько разных версий, поэтому приложение, разработанное для устаревших версий системы, будет продолжать работать, даже несмотря на изменения, внесенные в новые версии ОС. Именно так реализован механизм запуска старых iOS-приложений в iOS 7 и выше. Приложение, разработанное для iOS 6, будет выглядеть и работать именно так, как если бы оно было запущено в iOS 6.

SpringBoard

Уровнем выше находятся приложения, системные и устанавливаемые из магазина приложений. Центральное место среди них занимает, конечно же, SpringBoard (только в iOS), реализующее домашний экран (рабочий стол). Именно оно запускается первым после старта системных демонов, загрузки в память фреймворков и старта дисплейного сервера (он же менеджер композитинга, он же Quartz Compositor), отвечающего за вывод изображения на экран.

SpringBoard — это связующее звено между операционной системой и ее пользователем, графический интерфейс, позволяющий запускать приложения, переключаться между ними, просматривать уведомления и управлять некоторыми настройками системы (начиная с iOS 7). Но также это и обработчик событий, таких как касание экрана или переворот устройства. В отличие от Mac OS X, которая использует различные приложения и демоны-агенты для реализации компонентов интерфейса (Finder, Dashboard, LaunchPad и другие), в iOS почти все базовые возможности интерфейса пользователя, в том числе экран блокировки и «шторка», заключены в одном SpringBoard.

В отличие от других стоковых приложений iOS, которые располагаются в каталоге /Applications, SpringBoard наравне с дисплейным сервером считается частью фреймворков и располагается в каталоге /System/Library/CoreServices/. Для выполнения многих задач он использует плагины, которые лежат в /System/Library/SpringBoardPlugins/. Кроме всего прочего, там можно найти, например, NowPlayingArtLockScreen.lockboundle, отвечающий за отображение информации о проигрываемой композиции на экране блокировки, или IncomingCall.serviceboundle, ответственный за обработку входящего звонка.

Начиная с iOS 6 SpringBoard разделен на две части: сам рабочий стол и сервис BackBoard, ответственный за коммуникации с низкоуровневой частью ОС, работающей с оборудованием (уровень HAL). BackBoard отвечает за обработку таких событий, как касания экрана, нажатия клавиш, получение показания акселерометра, датчика положения и датчика освещенности, а также управляет запуском, приостановкой и завершением приложений.

SpringBoard и BackBoard имеют настолько большое значение для iOS, что, если каким-либо образом их остановить, вся система застынет на месте и даже запущенное в данный момент приложение не будет реагировать на касания экрана. Это отличает их от домашнего экрана Android, который является всего лишь стандартным приложением, которое можно остановить, заменить или вообще удалить из системы (в этом случае на экране останутся вполне рабочие кнопки навигации и строка состояния со «шторкой»).

Приложения

На самой вершине этой пирамиды находятся приложения. iOS различает встроенные (стоковые) высоко привилегированные приложения и сторонние, устанавливаемые из iTunes. И те и другие хранятся в системе в виде бандлов, во многом похожих на те, что используются для фреймворков. Разница заключается лишь в том, что бандл приложения включает в себя несколько иную метаинформацию, а место динамической библиотеки занимает исполняемый файл в формате Mach-O.

Стандартный каталог хранения стоковых приложений — /Applications/. В iOS он абсолютно статичный и изменяется только во время обновлений системы; пользователь получить к нему доступ не может. Сторонние приложения, устанавливаемые из iTunes, напротив, хранятся в домашнем каталоге пользователя /var/mobile/Applications/ внутри подкаталогов, имеющих вид 4-2-2-2-4, где два и четыре — это шестнадцатеричные числа. Это так называемый GUID — уникальный идентификатор, который однозначно идентифицирует приложение в системе и нужен в том числе для создания изолированной песочницы (sandbox).

Sandbox

В iOS песочницы используются для изолирования сервисов и приложений от системы и друг от друга. Каждое стороннее приложение и большинство системных работают в песочнице. С технической точки зрения песочница представляет собой классический для мира UNIX chroot, усиленный системой принудительного контроля доступа TrustedBSD MAC (модуль ядра sandbox.kext), которая отрезает приложениям не только доступ к файлам за пределами домашнего каталога, но и прямой доступ к железу и многим системным функциям ОС.

В целом заключенное в sandbox приложение ограничено в следующих возможностях:

  • Доступ к файловой системе за исключением своего собственного каталога и домашнего каталога пользователя.
  • Доступ к каталогам Media и Library внутри домашнего каталога за исключением Media/DCIM/, Media/Photos/, Library/AddressBook/, Library/Keyboard/ и Library/Preferences/.
  • Доступ к информации о других процессах (приложение «считает» себя единственным в системе).
  • Прямой доступ к железу (разрешено использовать только Cocoa API и другие фреймворки).
  • Ограничение на использование оперативной памяти (контролируется механизмом Jatsam).

Все эти ограничения соответствуют sandbox-профилю (набору ограничивающих правил) container и применяются к любому стороннему приложению. Для стоковых приложений, в свою очередь, могут применяться другие ограничения, более мягкие или жесткие. В качестве примера можно привести почтовый клиент (профиль MobileMail), который в целом имеет такие же серьезные ограничения, как и сторонние приложения, но может получить доступ ко всему содержимому каталога Library/. Обратная ситуация — SpringBoard, вообще не имеющий ограничений.

Вторая проблема — это защита системы от самой себя и пользователя. Баги могут существовать как в стоковом софте от Apple, так и в головах юзеров. Sandbox защищает от обоих. Даже если злоумышленник найдет дыру в Safari и попытается ее эксплуатировать, он все равно останется в песочнице и не сможет навредить системе. А юзер не сможет «сломать свой любимый телефончик» и не напишет гневных отзывов в адрес Apple. К счастью, знающие люди всегда могут сделать jailbreak и обойти защиту sandbox (собственно, в этом и есть смысл джейлбрейка).

Многозадачность

Одна из самых спорных особенностей iOS — это реализация многозадачности. Она вроде бы и есть, а с другой стороны, ее нет. В сравнении с традиционными настольными ОС и пресловутым Android iOS не является многозадачной операционной системой в привычном смысле этого слова и не позволяет приложениям свободно работать в фоне. Вместо этого ОС реализует API, который приложение может использовать для выполнения отдельных задач, пока оно находится в фоновом режиме.

Впервые такой API появился в iOS 4 (до этого фоновые задачи могли выполнять только стоковые приложения) и наращивался по мере развития операционной системы. Сегодня (речь идет об iOS 7) так называемый Background API позволяет делать следующее:

  • проигрывать аудио;
  • совершать VoIP-звонки;
  • получать информацию о смене местоположения;
  • получать push-уведомления;
  • планировать отложенный вывод уведомлений;
  • запрашивать дополнительное время для завершения работы после перехода в фоновый режим;
  • обмениваться данными с подключенными к девайсу аксессуарами (в том числе Bluetooth);
  • получать и отправлять данные по сети (начиная с iOS 7).

Такие ограничения на работу в фоне необходимы в первую очередь для того, чтобы сохранить заряд батареи и избежать лагов интерфейса, так знакомых пользователям Android, где приложения могут делать в фоне все что захотят. На самом деле Apple настолько сильно заботится о сохранении батареи, что даже реализовала специальный механизм для группировки фоновых действий приложений и их запуска в нужные моменты, например тогда, когда смартфон активно используется, подключен к Wi-Fi-сети или к зарядному устройству.

Выводы

Стоит сказать, что за время своего развития и последующего переезда в мобильные девайсы NeXTSTEP не только не растеряла все свои достоинства, но и приумножила их. Можно долго слушать россказни сотрудников Google, уверяющих, что Android разрабатывался без оглядки на iOS, но факт остается фактом: многие архитектурные решения Android позаимствовал именно у iOS. И не потому, что так было проще, а благодаря их красоте и эффективности.

Шесть стадий загрузки iOS

  1. Boot ROM. После включения устройства первым запускается минималистичный загрузчик, прошитый в постоянную память устройства. Его задача — произвести начальную инициализацию железа и передать управление первичному загрузчику LLB. Boot ROM всегда имеет заводскую прошивку и не может быть обновлен.
  1. Low Level Bootloader (LLB). Далее управление получает LLB. Это первичный загрузчик, задача которого — найти в памяти устройства iBoot, проверить его целостность и передать ему управление либо переключить девайс в режим восстановления, если это не удалось. Код LLB хранится в NAND-памяти устройства и обновляется вместе с установкой новой версии прошивки. Кроме всего прочего, он выводит на экран загрузочный логотип.
  1. iBoot. Это вторичный и основной загрузчик айдевайсов. Он включает в себя драйвер файловой системы, с помощью которого получает доступ к содержимому NAND-памяти, находит ядро и передает ему управление. В iBoot также встроен драйвер UART, с помощью которого можно производить отладку ядра и ОС, подключив девайс к COM-порту или USB-порту компа (с помощью кабеля USB — UART).

4 Ядро. Здесь все как обычно. Ядро производит инициализацию оборудования, после чего передает управление демону launchd.

5 Launchd. Это первичный процесс iOS и Mac OS X, он подключает файловые системы, запускает демоны/службы (например, backupd, configd, locationd), дисплейный сервер, фреймворки, а на последнем этапе загрузки отдает управление SpringBoard. В iOS и Mac OS X launchd используется как замена стандартного /bin/init в UNIX, однако его функциональность гораздо шире.

6 SpringBoard. Вот и экран блокировки!

Первые четыре этапа в этой цепи образуют chain of trust, реализованный с помощью сверки цифровой подписи загружаемого компонента. Цифровую подпись имеют LLB, iBoot и ядро, что позволяет исключить внедрение в цепочку хакнутого загрузчика или ядра, которые могут быть использованы для загрузки сторонней операционной системы или джейлбрейка. Единственный способ обойти этот механизм — найти дыру в одном из загрузчиков и воспользоваться ею для обхода проверки. В свое время было найдено несколько таких дыр в Boot ROM (наиболее известен эксплойт limera1n от geohot, актуальный для iPhone 1–4), а в начале 2014 года и в iBoot (хакер iH8sn0w, эксплойт так и не был опубликован).

Удерживая кнопку «Домой» при включении iPhone, можно заставить iBoot загрузиться в так называемый режим восстановления (Recovery), который позволяет восстановить прошивку iOS или обновить ее, используя iTunes. Однако механизм автоматического OTA-обновления использует другой режим, именуемый DFU (Device Firmware Upgrade), который активируется на раннем этапе загрузки сразу после Boot ROM и реализован в двух компонентах: iBSS и iBEC. По сути, это аналоги LLB и iBoot, конечная цель которых — не загрузить ОС, а перевести смартфон в режим обновления.

Процесс загрузки iOS

Евгений Зобнин

Редактор рубрики X-Mobile. По совместительству сисадмин. Большой фанат Linux, Plan 9, гаджетов и древних видеоигр.

Полгода прошло с момента выхода в свет последнего релиза упомянутого в заголовке продукта. Президент Apple Стив Джобс подтвердил, что MacOSX действительно можно запустить на x86-платформе [1]. Давайте разберемся, что же может привлечь потенциального пользователя/администратора, помимо легендарного названия фирмы Apple Computer? В первую очередь, ориентирование компании на постепенное расширение своей продукции. Как известно, на протяжении своей истории операционные системы фирмы Apple работали только на оборудовании самой Apple. Отчасти это правильно. Приходится меньше волноваться о вопросах совместимости аппаратного и программного обеспечения. В то же время это и откровенный тупик в развитии.

Что же из себя представляет Darwin? Если коротко – это некое ядро операционной системы MacOSX, оно состоит из 5 главных компонентов: микроядро Mach, BSD-подсистема, файловая система, сетевая подсистема и система ввода-вывода (I/O Kit).

К сожалению, графическая подсистема MacOSX (Quick Time, OpenGL, Quartz), пользовательский интерфейс (Aqua) не присутствуют в системе. Хотя и без них Darwin является уже полноценной ОС. Более подробно об истории возникновения Darwin см. [2].

Дискутировать относительно открытости продуктов самой фирмы Apple можно долго, однако нас в первую очередь должно волновать несколько моментов:

  • списки совместимости с оборудованием (так называемые hardware compatibility list [3]);
  • знание структуры *BSD-систем;
  • потребность в использовании данной ОС в обучающем процессе на производстве.

Насчет первого пункта сильно огорчаться не следует, т.к. система стартует и работает на более-менее современной x86 машине. В общем-то, Intel Celeron 366, 128 Мб памяти должно хватить для ознакомления. Также следует обзавестись одной из следующих сетевых карт: 3Com 3c90x, Intel 8255x, Broadcom 570x, Realtek 8139, Dec 21x4 (она же Tulip). Встроенные сетевые карты, к сожалению, не поддерживаются. Видеокарта должна работать в VESA-режиме.

Для начала возьмем дистрибутив с сайта OpenDarwin [4]. Он из себя представляет упакованный gzip-образ, который потом надо записать на компакт-диск. Размер упакованного образа составляет 430 Мб.

gzip -d darwin-701.iso.gz

cdrecord -v darwin-701.iso

Для дальнейшей работы потребуется пустой жесткий диск размером не более 2 Гб или такого же объема раздел.

Установленная система занимает примерно 1 Гб. Оставшееся место будем использовать для сборки необходимых пакетов.

Настраиваем загрузку с компакт-диска, и после определения оборудования ядром ОС мы увидим приглашение выбрать тот диск, на который хотим поставить операционную систему.

Пункт 1 предназначен для установки на пустой диск. В случае, когда не надо иметь на диске несколько систем, выбирайте его. Пункт 3 предназначен для случая, когда место заранее выделено и размечено под операционную систему Darwin (ее идентификатор 0xA8, см. далее по тексту).

Если вам не подошли пункты 1 или 3, тогда вспоминаем, что настоящие герои всегда идут в обход и выбирают самый легкий путь. В целом разметка вручную не так и страшна, как кажется на первый взгляд.

Выбираем пункт 2. Для начала следует ознакомиться с командами fdisk данной системы.

Правильно, нажимаем слово «help» и читаем, что есть в меню. Команд немного, поэтому можно набирать не полную версию, а, например, сокращать до 2 начальных букв. То есть вместо «help» писать «he».

Команды прочитаны, пора выделить место под наше сегодняшнее яблочко. Распечатаем содержимое MBR диска, на который будем ставить ОС. Для этого подаем команду «print». Видим теперь, где находятся разделы и свободное место. Для редактирования свободного места подадим команду «edit ID», где ID – это номер раздела, предположим под номером 2 (то есть на текущем диске первичный раздел номер 2). Процедура выбора необходимого размера для нового раздела не составит, я надеюсь, особого труда. Отмечу, что размер считается в секторах, а не в килобайтах. Идентификатор файловой системы для Darwin имеет код 0xA8 (Darwin UFS).

Затем следует обновить информацию в MBR (Master Boot Record). Если вы ставите на чистый диск, то в MBR никакого загрузчика нет. Поэтому следует записать в него штатный, идущий в комплекте с OpenDarwin. В случае когда вы устанавливаете на отдельный раздел, все равно придется перезаписать MBR. В этом нет ничего страшного, т.к. дальше в статье разъясняется на примере LILO, как сделать загрузку нескольких операционных систем.

Для этих целей предусмотрена команда «update». После этого запишем в MBR непосредственно сведения о разделе, в котором будет жить наша «яблочная» операционная система. Сделаем это с помощью команды «write». Следует помнить, что в MBR записывается новый загрузчик, поэтому если у вас стоял LILO, GRUB или что-то аналогичное, то он будет просто-напросто переписан загрузчиком от Darwin. У меня используется LILO, поэтому я просто добавил в /etc/lilo.conf следующую строчку:

И запустив /sbin/lilo, перезаписываю MBR. Теперь при старте можно будет выбрать загрузку с раздела hdd2, где обитает OpenDarwin.

Всё. Выставим флаг активности раздела (команда «active ID», где ID – опять-таки нужный нам номер раздела). И завершим разметку подав команду «exit».

После этого осталось дождаться, чтобы установились пакеты, входящие в состав компакт-диска. Как говорится, возьмите чай, кофе – сахар по вкусу.

В ходе установки внимание обращает тот факт, что все пакеты находятся в упакованном виде. Сжаты они с помощью bzip2. После установки истинно «яблочных» пакетов, таких как AppleUSBAudio, следом идут пакеты с до боли знакомыми названиями. Согласитесь, что такие строчки, как apache-670tar.bz2, bind9-7tar.bz2, gcc-1495tar.bz2, вам о чем-то говорят. В этом нет ничего удивительного, т.к. система, как вы, наверное, слышали, базируется на BSD.

Большинство утилит, присутствующих в системе, хорошо знакомы людям, постоянно работающим в Open/Net/FreeBSD, да и тем, кто когда-либо занимался сборкой программ под UNIX.

Вернемся к нашему яблоку. Перегружаемся, не забываем вытащить из привода компакт-диск. Далее загрузка будет происходить с нашего жесткого диска.

Вот несколько интересных, на мой взгляд, строк, которые можно наблюдать при старте системы. Ваше аппаратное обеспечение отличается от моего, но по аналогии можете сами проследить отличия.

AppleSMBIOS: socketDesignation = SOCKET A
AppleSMBIOS: processorType = 0x3
AppleSMBIOS: processorFamily = 0x1
AppleSMBIOS: manufacturer = AuthenticAMD
AppleSMBIOS: processorVersion = AMD Athlon(TM) XP 1700+
AppleSMBIOS: voltage = 0x8e
AppleSMBIOS: externalClock = 0x85
AppleSMBIOS: maximumClock = 0x8ca
AppleSMBIOS: currentClock = 0x5ba

AppleGenericPCATADriver: Port 0x1f0, IRQ 14
AppleGenericPCATADriver: Port 0x170, IRQ 15

BSD root: disk1s2, major 14, minor 9
hfs_mount: invalid HFS+ sig 0x0000

Итак, строка externalClock = 0x85 означает, что шина работает на частоте 133 МГц (переведите цифры в десятичное представление). Строка currentClock = 0x5ba разъясняет, что текущая тактовая частота равна 1466 МГц, а максимальная частота для этого типа процессора равна 2250 МГц (maximumClock = 0x8ca).

Стоит разъяснить, откуда появляется надпись «hfs_ mount: invalid HFS+ sig 0x0000». Вы помните, когда мы ставили идентификатор раздела, то поставили 0xA8 (Darwin UFS). В связи с чем делаем вывод, что корневой раздел у нас отформатировался в UFS-формате. Ничего страшного, кроме досадного факта, что файловая система у нас получилась нежурналируемая. Для того чтобы корневая файловая система была в HFS+ формате, при начальной разметке диска следует ставить идентификатор 0xAF (вместо 0xA8). Перевести систему из UFS в HFS+ пока не представляется возможным.

Итак, перед нами приглашение на вход в систему. Заходим под пользователем root (пароль изначально не установлен). Что необходимо сделать на этом этапе? Попробуем поднять сеть? Давайте сделаем!

Ага, вот и наша сетевая карта (интерфейс en0). Есть два пути – правильный и не очень правильный. Чтобы прописать в Darwin IP-адрес для интерфейса, в /etc/ надо создать файл iftab. Структура его следующая:

en0 inet 10.0.0.10 netmask 255.255.255.0 up

где 10.0.0.10 – IP-адрес, 255.255.255.0 – маска сети, «up» – интерфейс при загрузке поднять.

Стоит отметить, что файла /etc/rc.conf в Darwin просто нет. Поэтому вписать информацию о сетевых адресах по аналогии с FreeBSD не получится.

Файл, который необходимо отредактировать, совпадает с названием каталога (его имя тоже Network). Обратите внимание, что на нем установлены биты на исполнение.

ConsoleMessage "Initializing network"

ipconfig waitall > /dev/null 2>&1

sysctl -w net.inet6.ip6.auto_on=0 > /dev/null

sysctl -w net.inet.ip.forwarding=1 > /dev/null

sysctl -w net.inet.ip.forwarding=0 > /dev/null

ifconfig en0 10.0.0.10 netmask 255.255.255.0

Вот так выглядит файл Network на моей машине. Добавленная строка выделена красным цветом.

Небольшое уточнение, выясненное в ходе настройки. При переходе на новую систему не надо забывать, что структурно Darwin не отличается от FreeBSD или, скажем, Linux в плане загрузки модулей. Что я хочу этим сказать. Если у вас сетевая карта опознана, то Darwin подгрузит для нее модуль. Как только модуль подгружен, то можно выставлять IP-адрес и маску. В общем, если выставляете IP-адрес в один из rc-файлов, будьте внимательны.

Вставляйте строку после загрузки модулей ядра (они загружаются демоном kextd).

На этом этапе сеть у нас готова. Правда, развертка монитора может раздражать. Мы ведь работаем в VESA-режиме. Вертикальная развертка 60 Hz.

Давайте зададим текстовый режим консоли. Для этого редактируем файл /Library/Preferences/SystemConfiguration/com.apple.Boot.plist.

В оригинале он выглядит так.

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN"

Да, забыл сказать. Почти все конфигурационные файлы в Darwin хранятся в xml-формате. Что мы сейчас и видим.

Для текстового режима необходимо поменять параметр Boot Graphics с Yes на No. Со следующей загрузки будет использоваться текстовый режим.

Добавим теперь сервисы ftp, telnet. Редактируем файл /etc/inetd.conf, удаляем ненужные символы, ставим комментарии перед нужными нам службами.

Посылаем сигнал, чтобы демон inetd перечитал свои настройки.

killall -1 inetd

Отлично. Службы появились.

Теперь задумаемся, а может, нам еще нужен и веб-сервер? А DNS-сервер? Что ж, пробовать, так все и сразу.

Чтобы запускать указанные и некоторые другие службы, при старте Darwin существует файл /etc/hostconfig:

Если параметр установлен в -YES-, тогда при старте указанные службы будут запущены.

Запуском apache (строка WEBSERVER=-YES-) занимается файл /System/Library/StartupItems/Apache/Apache.

Для DNS-сервера выделен файл /System/Library/Startup Items/BIND/BIND. В целом прослеживается аналогия со структурой системных файлов, например, как в Linux Slackware. В последней скрипты, запускающие определенный сервис, называются /etc/rc.d/rc.ServiceName.

Строка MAILSERVER предназначена для почтовой службы postfix, TIMESYNC – для синхронизации времени, CUPS – для сервиса, отвечающего за печать, SMBSERVER – samba-сервис, добавим самостоятельно чуть позднее.

Картина вырисовывается следующая. Сначала отрабатываются файлы /etc/rc*, а затем – соответствующие файлы в /System/Library/StartupItems.

Чтобы запустить свой сервис, необходимо создать в /System/Library/StartupItems директорию с названием сервиса. В ней должны находиться: исполняемый файл, совпадающий с названием только что созданной директории и информационный файл StartupParameters.plist.

Давайте посмотрим, как создать скрипт сервиса, отвечающего за старт samba-сервера.

ConsoleMessage "Starting SMB services"

Description = "smb file server";

start = "Starting Samba";

stop = "Stopping Samba";

Вставляем в файл /etc/hostconfig строчку SMBSER-VER=-YES- и в дальнейшем надо будет выделить samba-ресурсы (файл /etc/smb.conf).

Так, со службами все понятно. Установим локальное время в системе.

ln -s /usr/share/zoneinfo/Europe/Moscow localtime

Теперь мы рассмотрим концепцию NetInfo, реализованную в Darwin. Система может искать информацию как в файлах службы NetInfo, так и в «плоских» («plain text») файлах (/etc/fstab, /etc/passwd и др.).

Для добавления пользователя, существует утилита niutil (NetInfo Util). С помощью этой же утилиты настраивается большая часть системы.

niutil -create / /users/Bob

niutil -createprop / /users/Bob shell /bin/tcsh

niutil -createprop / /users/Bob realname UncleBob

niutil -createprop / /users/Bob home /Users/Bob

niutil -createprop / /users/Bob _shadow_passwd

Комментарии, надеюсь, излишни? Сначала мы создали объект Bob в иерархии /users, а затем добавили этому объекту свойства. Добавить добавили, но надо и создать ему домашний каталог.

chown -R Bob:wheel Bob

Теперь у Bob домашняя директория, да и сам он получился по умолчанию в группе wheel. Можно переделать, добавив через niutil пользователю uid и gid.

Для получения списка объектов в иерархии NetInfo выполним команду:

Получим список корневых иерархий. Для просмотра объекта resolver (аналог /etc/resolver):

niutil -read . /locations/resolver

Создадим запись в объекте resolver:

niutil -createprop . /locations/resolver nameserver 10.0.0.100

Всю базу NetInfo можно просмотреть:

nidump -r / / > nidump.txt

Приступаем к заключительной части нашей статьи. Готовимся к прыжку в окна X-сервера.

В Darwin он называется XDarwin (это портированный в Mac OS проект XFree86). В системе обнаруживается только один оконный менеджер. Это twm.

Для запуска twm создадим в домашней директории файл .xinitrc:

Не забываем, что он должен иметь установленным исполняемый бит.

А теперь в окна! То есть в X-сервер.

Как-то непривычно, не правда ли?

Давайте поменяем twm на другой менеджер. Например, blackbox. Сказано – сделано.

mv blackbox-0.65.0.tar.gz sources

tar xzvf blackbox-0.65.0.tar.gz

make && make install

Теперь, как мне кажется, намного симпатичнее.

Большую часть приложений придется собирать из исходников. Кому нравится GNOME, нет проблем. Дело вкуса. Для любителей клубнички даже существует проект darwine, запуск windows-приложений под Darwin (небезызвестный родоначальник – проект wine).

Пару слов о модулях, упомянутых в начале статьи. Просмотр информации о загруженных модулях:

В списке я оставил упоминания модулей, названия которых отчасти говорят о платформе и используемом оборудовании.

  • kextload kextName – загрузка модуля под именем kextName (они находятся в /System/Library/Extensions).
  • kextunload kextName – соответственно выгрузка из памяти модуля kextName.
  • kextxcache – подготовка базы модулей, хранящихся в /System/Library/Extensions.

Apache-сервер, которым комплектуется система, идентифицируется следующим образом:

Настройка ничем оригинальным не отличается.

Интересно, как же идентифицируется система со стороны. Сейчас поглядим. Заходим на удаленную машину. И оттуда запускаем наш сканер портов nmap.

Со стороны не отличишь, действительно ли это MacOSX на платформе PPC или x86. Жаль, что ни Aqua, ни Quartz не предусмотрены.

Посмотрим на samba-ресурсы удаленной машины.

Sharename Type Comment
--------- ---- -------
Share Disk Share
Media Disk Music & Video Share
Software Disk Software Share
IPC$ IPC IPC Service (Samba Server)
ADMIN$ Disk IPC Service (Samba Server)
Anonymous login successful

Server Comment
--------- -------
FUJI Samba Server

Посмотрим на геометрию диска из-под ОС Darwin.

Наглядно и просто. Файловых систем не так уж и много.

Файловая система NTFS доступна только на чтение. Для монтирования файловой системы из-под Linux:

На момент написания статьи поддержка из-под Linux только на чтение.

Напоследок пара строк о средстве фильтрации трафика. Конечно, это ipfw. Полностью похож на своего *BSD-собрата. Впрочем, это не собрат, а скомпилированный под Darwin оригинальный ipfw. Правила задаются и убираются абсолютно так же, как и в FreeBSD. Более подробно см. в статьях: «Ipfw и управление трафиком в FreeBSD» (№6 журнала «Системный администратор» за 2003 год), «Сам себе антихакер. Защита от хакерских атак с помощью ipfw» (№1 журнала «Системный администратор» за 2004 год).

В целом из машины на основе OpenDarwin вполне возможно сделать почтовый релей, систему доступа из Интернета по ppp-соединению, веб-сервер. Основные компоненты по созданию сетевой инфраструктуры уже присутствуют в системе: postfix, mysql, php, apache, bind, perl. Относительно сетевой безопасности – код стека TCP/IP, как говорилось в начале статьи, основан на оригинальном BSD-коде. Если каких-либо программ не хватает, то следует обратиться на сайт [7]. Вполне возможно, что эти программы уже портированы и доступны, как ports.

Несколько слов о компиляции программ под Darwin. В системе используется GNU Compiler Collection. Поэтому особых проблем при сборке возникнуть не должно. В Darwin я встретил такое понятие, как «толстые» файлы («fat»-files). То есть при сборке файлы компилируются под несколько архитектур, например, под PPC и под x86. И собираются в один бинарный файл. При выполнении файла происходит определение архитектуры и передается управление на необходимый участок кода. В частности, ядро, идущее с системой, собрано с поддержкой как PowerPC (PPC) архитектуры, так и x86.

Конечно же, статья не претендует на полное освещение всех нюансов «фруктовой» ОС. Она предназначена в первую очередь для тех, кто собирается расширить свой кругозор, и тех, кто неравнодушен к самой компании Apple Computer.

Мечты придуманы для того, чтобы из них делать реальность. И фруктовая компания не забывает об этом.

Darwin - это бесплатная Unix - операционная система компании Apple и основа для проприетарных операционных систем Apple, которые возникли из Mac OS X: macOS для персональных компьютеров марки Mac , iOS для мобильных устройств iPod и iPhone , iPadOS для IPAD , TVOS для Apple TV телеприставки и watchOS для компании Apple Watch . Впервые он был доступен как Darwin 0.1 16 марта 1999 года вместе с Mac OS X Server 1.0 .

В январе 1997 года компания Apple приняла NeXT, а вместе с ней и операционную систему OPENSTEP , которая до версии 3 все еще называлась NeXTStep и только что была выпущена в версии 4.0. Это было названо Rhapsody et al. поверхностью Macintosh в дизайне Platinum, поскольку он также использовался в Mac OS 8 , а также в среде виртуализации Blue Box , в которой Mac OS 8.1 могла быть виртуализирована. NeXTStep, OPENSTEP и Rhapsody используют большие части BSD- Unix в качестве основы для операционной системы, которая может работать на нескольких платформах и компьютерных архитектурах - Rhapsody также следовало запускать на нескольких платформах, но в 1998 году Apple прекратила публикацию завершенной Rhapsody для Системы PowerPC Macintosh и x86 PC как многоплатформенная стратегия были признаны провалившимися на рынке. На WWDC 1998 Apple объявила об объединении Mac OS (в то время в настоящее время в версии 8, до 1997 года все еще System 7 ) с Rhapsody, которая должна была называться «Mac OS X». По словам Стива Джобса , Mac OS X должна выйти в 1999 году. Однако, поскольку она не была завершена в 1999 году, Rhapsody была опубликована как чистая серверная операционная система Macintosh под названием «Mac OS X Server 1.0» - и ее ядро ​​BSD с открытым исходным кодом как Darwin 0.1.

На этой основе - Rhapsody и Darwin как часть с открытым исходным кодом - началась разработка Mac OS X 10.0, и с публикацией Developer Previews и Public Beta , начиная с 1999 г., были также опубликованы некоторые версии Darwin, которые можно запускать на компьютер Macintosh Может быть установлена ​​работающая Mac OS. Но после законченной версии Mac OS X 10.0 «Cheetah» в 2001 году Apple потеряла интерес к официальному дистрибутиву Дарвина и с тех пор предоставила только исходный код для Дарвина, который составляет основу соответствующей версии проприетарной операционной системы. Дальнейшее развитие Дарвина в этой форме тесно переплетено с развитием операционных систем Apple.

Поскольку неотъемлемые части macOS и iOS не имеют открытого исходного кода, у Дарвина отсутствует графический пользовательский интерфейс Aqua, а также Quartz , OpenGL , QuickTime и программные интерфейсы Cocoa и Carbon , поэтому программы для Mac OS X / OS X / macOS не могут запускаться. либо. Поэтому в немногих доступных дистрибутивах Дарвина использовались бесплатные ( совместимые с FreeBSD ) окружения рабочего стола . Б. Посредством MacPorts большое количество бесплатных программ также можно использовать на Дарвине без особых усилий.

Оглавление

Архитектура, функциональное описание и системные требования

База исходного кода Darwin восходит к 4.4BSD-Lite , которая была очищена от последних оставшихся исходных строк исходного кода System V после спора о правах на код UNIX , который закончился в 1994 году . Он находится под бесплатной лицензией APSL . В то же время Darwin является потомком операционной системы NeXTStep, разработанной NeXT , которая была переименована в OPENSTEP в 1996 году и все еще была основана на 4.3BSD. Apple купила NeXT в конце 1996 года, а затем доработала купленную систему до Rhapsody . Базовая система BSD была портирована из 4.3BSD в 4.4BSD Lite исходного кода и ядра от Mach 2.5 до Mach 3. С выпуском Mac OS X Developer Preview 1 это ядро ​​было впервые известно под названием XNU и было опубликовано как часть исходного кода Дарвина. Однако Mach 3 реализован не полностью, а скорее добавил части ядра FreeBSD к гибридному ядру , так что он сочетает в себе преимущества монолитного ядра с преимуществами микроядра . Части реализации Mach из MkLinux , в которой также принимала участие Apple, были повторно использованы.

Darwin может работать в разных версиях на процессорах PowerPC , x86 и ARM . Хотя все программы для Дарвина будут работать в Mac OS X, программы, адаптированные для Mac OS X / OS X / macOS, не обязательно будут работать в Дарвине. Мобильные операционные системы iOS для iPhone , iPadOS для iPad , tvOS для Apple TV и watchOS для Apple Watch также основаны на Дарвине, но у пользователя нет доступа ни к файловой системе, ни к командной строке . В некоторых случаях это ограничение можно снять с помощью взлома .

Лицензирование и маркетинг

Дарвин публикуется в исходном коде в соответствии с лицензией Apple Public Source License , которая начиная с версии 2.0 признается Free Software Foundation как лицензия на бесплатное программное обеспечение . Талисман Дарвина является Hexley, то утконос .

Darwin - это ядро ​​с открытым исходным кодом для проприетарных операционных систем Apple Mac OS X и Rhapsody. Бинарные выпуски Darwin варьировались от Apple до Darwin 8.0, на котором основана Mac OS X Tiger версии 10.4 2004 года.

Доступность

Сама Apple публикует исходный код только тех частей, которые необходимы для создания операционной системы Дарвина. Однако из-за используемой Apple внутренней системы сборки, которая не является общедоступной, исходные коды не так легко скомпилировать. В таких проектах, как OpenDarwin и PureDarwin, первой задачей было сделать исходный текст переводимым с помощью общедоступных компиляторов . Исходные тексты также специально адаптированы для оборудования Apple и также не очень хорошо документированы, что затрудняет адаптацию. Например, с ядром XNU Apple публиковала только те части, которые необходимы для архитектуры процессора, используемой текущими компьютерами Mac для macOS, но не для iOS. Поскольку поддержка PowerPC была прекращена в Mac OS X Snow Leopard (10.6, 2009), поддержка PowerPC больше не содержится в ядре XNU для Darwin 10.0 и новее. За некоторыми исключениями исходные тексты из iOS недоступны.

Первоначально Apple выпустила пакет под названием «Darwin OS» для Mac OS , с помощью которого Darwin можно было установить на Mac. Независимые дистрибутивы частично предлагались внешними разработчиками. С 2002 года задача сделать операционную систему Darwin доступной в виде дистрибутива была передана проекту OpenDarwin. Когда это было прекращено, предпринимались независимые попытки выпустить основанный на Дарвине дистрибутив полноценной операционной системы Unix, но они были лишь умеренно успешными.

Дарвин ОС (1999-2002)

В 1999 году Apple начала предоставлять первые предварительные версии Mac OS X для ограниченного числа разработчиков. Его ядро ​​было основано на OPENSTEP, разработанном NeXT (NeXTStep или NeXTSTEP до 1995 года), и было далее развито Apple в качестве преемника System 7 после ее поглощения в конце 1996 года . После того, как проект Rhapsody (который можно рассматривать как версию OPENSTEP 5.x) был прекращен в 1998 году, Apple выпустила основанную на нем версию как Mac OS X Server 1.0 в 1999 году . Ядро этой первой операционной системы под названием « Mac OS X » стало основой Mac OS X 10.0 (2001, альфа и бета версии 1999-2000). Поощряйте разработчиков. Поскольку в 1997 году Apple решила положить конец многоплатформенной стратегии (и описала Rhapsody, разработанную для Mac и ПК, как провал), дальнейшие разработки были сосредоточены исключительно на архитектуре PowerPC. Однако выпуск исходного кода сделал возможным обратный перенос на архитектуру Intel x86 бесплатными разработчиками.

Darwin OS 0.3 (1999) имела те же требования к оборудованию, что и Mac OS X Server 1.0 (1999, Rhapsody 5.3–5.6), и, поскольку она получила дальнейшее развитие с Mac OS X, вскоре ее требования и совместимость с системой. Darwin 1.2.1 (2000) работает на всех системах Macintosh, на которых также работает Mac OS X Public Beta, и на некоторых ПК Intel x86. Однако поддержка версии x86 («Darwin x86») не преследовалась Apple активно.

Пакет, опубликованный Apple, изначально мог быть установлен только из Mac OS , но были внешние источники для своего рода дистрибутива Дарвина в качестве загрузочного установочного компакт-диска. В Darwin 1.3.1 / x86 и 1.4.1 (позже Darwin Version 5) Apple сама впервые опубликовала загрузочные ISO-образы Darwin в рамках Developer Connection .

Подобно NeXTStep и OPENSTEP, Darwin (а ​​значит, и Mac OS X, OS X или macOS) извлек выгоду из большого количества проектов с открытым исходным кодом. Таким образом, Apple является частью глобального сообщества с открытым исходным кодом , так как дальнейшие разработки часто должны публиковаться из-за требований лицензирования (например, WebKit ).

Darwin 8.0.1 был последней выпущенной Apple версией двоичного файла Darwin на установочном носителе.

история

Публикация Дарвина прежде всего только в качестве исходного текста . В некоторых случаях Apple сделала двоичные установочные образы, ISO-образы , доступными для отдельных версий Darwin как часть Apple Developer Connection (ADC). Поскольку исходный код, необходимый для некоторых конкретных драйверов оборудования, отсутствует, они должны быть установлены как бинарные пакеты.

Какая версия работает в системе, можно uname -v узнать, если есть доступ к командной строке , чего обычно не происходит с iOS без джейлбрейка . Под Mac OS X Lion 10.7.2 является uname -v примером Darwin Kernel Version 11.2.0: Tue Aug 9 20:54:00 PDT 2011; root:xnu-1699.24.8

1) Бинарный установочный носитель Darwin, опубликованный Apple через Developer Connection . 2) Операционная система идентифицирует себя как «Mac OS X 10.0», а не как «Дарвин 0,1» или «Дарвин 0,2». 3) Apple TV первого поколения использовали модифицированный Mac OS X Tiger (10.4), который также , как Darwin Version 8 идентифицированный. 4) Darwin 9 - последняя версия для PowerPC и в то же время первая версия для ARM . 5) До версии 4.2.1 iOS называлась «iPhone OS» и «iPad OS», а также служит основой для tvOS , watchOS и, начиная с iOS версии 13, iPadOS (iOS в адаптированной версии для iPad ).

Распределения Дарвина и порты

Дарвин на ARM

В рамках проекта Darwin on ARM с 2013 года существует проект на основе Darwin 12.x ( OS X Mountain Lion , 10.8, 2012), созданный одним разработчиком, который использует ядро ​​Darwin XNU - и все остальное, что для него требуется. - должен позволить ему работать на устройствах ARM (AArch64, ARMv7, ARMv6-A). Однако последнее изменение было в октябре 2017 года.

OpenDarwin

OpenDarwin (2002–2006) был основан в апреле 2002 года ISC и Apple. Каждый мог внести свой вклад в проект. Целью был независимый дистрибутив Дарвина, платформа должна поддерживать архитектуры PowerPC и x86 . Это сделало OpenDarwin воплощением операционной системы Darwin, которая также позволяла внешним разработчикам вносить свой вклад непосредственно в исходный код, не будучи сотрудником Apple или не имея необходимости регистрироваться в Apple. Как и в случае с ОС Дарвина (с 1999 г.), это была единственная возможность для внешних разработчиков работать с основными компонентами, такими как ядро ​​системы, поскольку некоторые части дерева CVS всегда основывались на действующей CVS Дарвина. Другие части только периодически обновлялись Apple, что делало участие вне Apple еще более затруднительным. OpenDarwin стал доступным на основе текущего дерева CVS .

Однако вместо ожидаемой открытости независимого дистрибутива становилось все труднее скомпилировать исходные коды, предоставленные Apple, без компьютера Apple под управлением Mac OS X. Apple использовала систему сборки, которая была доступна только для внутреннего использования, и адаптировала исходные коды только к своему оборудованию, в то время как более крупные взносы независимых разработчиков в большинстве случаев не были интегрированы в Darwin. Напротив, Apple удалила уже существующую поддержку старого оборудования, что раздражало разработчиков бесплатного OpenDarwin, поскольку такая процедура считается необычной в мире открытого исходного кода. С успехом Mac OS X Apple начала все больше делать новые версии исходного кода и новые драйверы, зависящие от проприетарной Mac OS X, что сделало независимое распространение Дарвина невозможным без дополнительных усилий, таких как собственные разработки или резервные копии. В конце концов, наиболее активных разработчиков OpenDarwin сменила Apple. Так как это соглашение о неразглашении (NDA: п on - д isclosure пылевой ) знак не был, они больше не могли способствовать свободному проекту. Наконец, OpenDarwin больше не поддерживался из-за отсутствия активных разработчиков.

26 июля 2006 года проект «OpenDarwin» был прекращен. Apple, очевидно, не была заинтересована в поддержке OpenDarwin в соответствии с принципами сообщества с открытым исходным кодом , а использовала Дарвина только в качестве основы для проприетарной Mac OS X. В этом свете компоненты операционной системы с открытым исходным кодом появляются только как средство для создания Mac OS X более успешный рынок. На официальном сайте, который был доступен до 28 июня 2007 года, администраторы совсем недавно заявили, что причиной закрытия OpenDarwin было то, что поставленные цели проекта не были достигнуты за четыре года.

PureDarwin

С PureDarwin был продолжен проект с конца 2007 года после прекращения поддержки OpenDarwin. Цель проекта - создать загрузочный ISO- образ Darwin . Развитие идет относительно неустойчиво, поэтому между 2012 и 2015 годами не было никаких значительных усилий, и версия осталась с PureDarwin 1.3 Beta на уровне Darwin 9.8 (аналог Mac OS X Leopard 10.5.8 с 2007 по 2009 год). Текущая версия - «PureDarwin 17.4 Beta OS» от 2017 года, основанная на Darwin 17.4 (аналог macOS High Sierra 10.13.3).

Читайте также: