Перейти к содержимому

Darvin kernel что это

  • автор:

unixforum.org

вот вопрос есть вроде как я понял самостоятельная ОС Darwin включающая NEXTSTEP и mach kernel если я правильно все понял.

возник вопрос можно ли поставить OC Darwin на x86 и будет ли ето легально и встанет маковсий софт на ето платформу ?

M$ Windows для пользователей и геймеров
MacosX для дизайнеров и музыкантов
Linux для программистов и хакеров
*BSD для серверов

Спасибо сказали:
diesel Бывший модератор Сообщения: 5989 ОС: OS X, openSuSE, ROSA, Debian Контактная информация:

Re: Darwin OS

Сообщение diesel » 03.05.2010 14:08

03.05.2010 13:34

вот вопрос есть вроде как я понял самостоятельная ОС Darwin включающая NEXTSTEP и mach kernel если я правильно все понял.

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

В яблочко! Краткий обзор ОС Darwin 7.0 на платформе X86 (MAC OS X 10.3 Jaguar)

К сожалению, графическая подсистема 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 21×4 (она же Tulip). Встроенные сетевые карты, к сожалению, не поддерживаются. Видеокарта должна работать в VESA-режиме.

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

wget -ct0 http://opendarwin.org/downloads/darwin-701.iso.gz

gzip -d darwin-701.iso.gz

cdrecord -v darwin-701.iso

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

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

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

«1) Auto-partition the disk (Destroys all disk contents)»
«2) Manually partition the disk using fdisk»
«3) Use existing partitions»

Пункт 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+ пока не представляется возможным.

Процесс загрузки ОС кардинально не отличается от процесса загрузки системы на FreeBSD. Знакомые конфигурационные файлы в /etc (rc, rc.boot, rc.common, fstab, syslog.conf и т. д.).

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

lo0: flags=8049 mtu 16384
inet6 ::1 prefixlen 128
inet6 fe80::1 prefixlen 64 scopeid 0x1
inet 127.0.0.1 netmask 0xff000000
gif0: flags=8010 mtu 1280
stf0: flags=0<> mtu 1280
en0: flags=8863 mtu 1500
ether 00:01:03:d1:f9:7c
media: autoselect (100baseTX ) status: active
supported media: 10baseT/UTP 10baseT/UTP autoselect 10
0baseTX 100baseTX

Ага, вот и наша сетевая карта (интерфейс 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 не получится.

Так вот, правильный путь не работает. Поэтому либо пропишем в /etc/rc.common наш сетевой адрес (для этого найдите функцию CheckForNetwork() – в ее теле и надо прописать), либо идем в системный каталог автозагрузки. Его полный путь – /System/Library/StartupItems. Каталог, отвечающий за сеть, именуется Network.

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

# Configure network interfaces and host name

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.

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

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

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

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

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

killall -1 inetd

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

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

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

# This file is maintained by the system control panels

Если параметр установлен в -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-сервера.

# Include system wide configuration options

# Start SMB services

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

Для необходимого нам hostname следует подправить файл /etc/rc.boot. Вместо строки по умолчанию «hostname localhost» вставим «hostname DarwinOS».

Теперь мы рассмотрим концепцию 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:

/usr/X11R6/bin/xterm &
/usr/X11R6/bin/twm

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

# chmod +x .xinitrc

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

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

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

wget -ct0 http://prdownloads.sf.net/blackboxwm/blackbox-0.65.0.tar.gz

mv blackbox-0.65.0.tar.gz sources

tar xzvf blackbox-0.65.0.tar.gz

make && make install

echo “/usr/local/blackbox/bin/blackbox” > ~/.xinitrc

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

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

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

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

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

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

sh-2.05b# telnet darwin 80

Trying 10.0.0.10.
Connected to darwin.
Escape character is «^]».
HEAD / HTTP/1.0
HTTP/1.1 200 OK
Date: Sun, 23 May 2004 00:53:47 GMT
Server: Apache/1.3.28 (Darwin)
Content-Location: index.html.en
Vary: negotiate,accept-language,accept-charset
TCN: choice
Last-Modified: Wed, 18 Jul 2001 23:44:21 GMT
ETag: «37bce-5b0-3b561f55;3fa2d462»
Accept-Ranges: bytes
Content-Length: 1456
Connection: close
Content-Type: text/html
Content-Language: en
Expires: Sun, 23 May 2004 00:53:47 GMT
Connection closed by foreign host.

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

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

# /usr/local/nmap/bin/nmap -v -sS -O darwin

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

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

DarwinOS:~ root# smbclient -L fuji -I fuji 2> /dev/null

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.

DarwinOS:~ root# fdisk /dev/rdisk1

Disk: /dev/rdisk1 geometry: 779/128/63 [6281856 sectors]
Signature: 0xAA55
Starting Ending
#: id cyl hd sec — cyl hd sec [ start — size]
————————————————————————
1: 06 0 1 1 — 68 127 63 [ 63 — 556353] DOS > 32MB
*2: A8 69 0 1 — 576 127 63 [ 556416 — 4096512] Darwin UFS
3: 00 0 0 0 — 0 0 0 [ 0 — 0] unused
4: 00 0 0 0 — 0 0 0 [ 0 — 0] unused

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

cd9660.fs cddafs.fs hfs.fs msdos.fs ntfs.fs ufs.fs

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

# mount /dev/hdd2 /mnt/hd -t ufs -o, ufstype=44bsd

На момент написания статьи поддержка из-под 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.

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

  1. http://developer.apple.com/darwin/history.html
  2. http://news.com.com/2100-1045_3-5103279.html
  3. http://www.opendarwin.org/hardware
  4. http://blackboxwm.sf.net
  5. http://www.opendarwin.org/documentation
  6. http://www.mymac.ru
  7. http://darwinports.opendarwin.org
  8. Потемкин А. Mac OS X или то, что должен знать каждый про Macintosh, Apple и операционные системы. – Журнал «Системный администратор», №7, июль, 2003 г. – 68-77 с. (http://samag.ru/archive/article/157)

Дарвин (операционная система) — Darwin (operating system)

Darwin — это открытый источник Unix-like операционная система, впервые выпущенная Apple. Inc. в 2000 году. Он состоит из кода, разработанного Apple, а также кода, производного от NeXTSTEP, BSD, Mach и других бесплатное программное обеспечение проектов.

Дарвин формирует основной набор компонентов, на основе которого macOS (ранее OS X и Mac OS X), iOS, watchOS, tvOS и iPadOS. Он в основном POSIX -совместим, но сам по себе никогда не был сертифицирован как совместимый с какой-либо версией POSIX. Начиная с Leopard, macOS сертифицирована как совместимая со спецификацией Single UNIX Specification версии 3 (SUSv3).

  • 1 История
  • 2 Дизайн
    • 2.1 Ядро
    • 2.2 Аппаратная и программная поддержка
    • 5.1 OpenDarwin
    • 5.2 PureDarwin
    • 5.3 Другие производные проекты

    История

    Наследие Дарвина началось с операционной системы NeXT NeXTSTEP (позже, начиная с версии 4.0, известная как OPENSTEP), впервые выпущенная в 1989 году. После того, как Apple купила NeXT в 1997 году, она объявила, что будет основывать свою следующую операционную систему на OPENSTEP. Это было развито в Rhapsody в 1997 году, Mac OS X Server 1.0 в 1999 году, Mac OS X Public Beta в 2000 году и Mac OS X 10.0. в 2001 году.

    В 1999 году Apple объявила о выпуске микроядра Mach 2.5, ОС BSD Unix 4.4 и компонентов веб-сервера Apache для Mac OS X Server. В то время исполняющий обязанности генерального директора Стив Джобс сослался на британца натуралиста Чарльза Дарвина, заявив, что «потому что речь идет об эволюции». В 2000 году основные компоненты операционной системы Mac OS X были выпущены как программное обеспечение с открытым исходным кодом под Apple Public Source License (APSL) как Darwin; компоненты более высокого уровня, такие как структуры Cocoa и Carbon, оставались закрытым исходным кодом.

    . До Darwin 8.0.1 Apple выпустила двоичный установщик (как ISO-образ ) после каждого основного выпуска Mac OS X, который позволял устанавливать Darwin в системах PowerPC и Intel x86 в качестве отдельной операционной системы. Незначительные обновления были выпущены в виде пакетов, которые устанавливались отдельно. Darwin теперь доступен только как исходный код, за исключением варианта ARM, который не был выпущен ни в какой форме отдельно от iOS, watchOS или tvOS. Любитель-разработчик winocm взял официальный исходный код Darwin и перенес его на ARM.

    Упрощенная история Unix-подобных операционных систем.

    Дизайн

    Схема архитектуры Mac OS X

    Ядро

    Ядро Darwin — это XNU, гибридное ядро ​​, которое использует OSFMK 7.3 (Open Software Foundation Mach Kernel) из OSF, различные элементы FreeBSD (включая модель процесса, сетевой стек и виртуальную файловую систему ), а также объектно-ориентированный драйвер устройства API называется I / O Kit. Гибридный дизайн ядра обеспечивает гибкость микроядра и производительность монолитного ядра.

    Аппаратная и программная поддержка

    Darwin в настоящее время включает поддержку 64- бит x86-64 вариант процессоров Intel x86, используемых в Mac и 64-битных ARM, используемые в iPhone 5S, iPod Touch 6-го поколения, iPad Air, Apple TV четвертого поколения, оригинальные HomePod и более поздние модели, а также 32-битные процессоры ARM, используемые в iPhone 5C и более ранних, более ранних поколениях iPod Touch, iPad до четвертого поколения, а также Apple TV второго и третьего поколения. Существует порт с открытым исходным кодом для ядра XNU, который поддерживает Darwin на платформах Intel и AMD x86, официально не поддерживаемых Apple, хотя, похоже, он не обновлялся с 2009 года. Порт с открытым исходным кодом ядра XNU также существует для платформ ARM. Более старые версии поддерживали некоторые или все 32-битные PowerPC, 64-битные PowerPC и 32-битные x86.

    Он поддерживает POSIX API посредством своей BSD родословной (в основном FreeBSD userland) и большого количества программ, написанных для различных других UNIX-подобные системы могут быть скомпилированы на Дарвине без изменений исходного кода .

    Дарвин не включает многие определяющие элементы macOS, такие как Carbon и Cocoa API или пользовательский интерфейс Quartz Compositor и Aqua, и поэтому не могут запускать приложения Mac. Однако он поддерживает ряд менее известных функций macOS, таких как mDNSResponder, который является ответчиком multicast DNS и основным компонентом Bonjour сетевые технологии и launchd, расширенная структура управления услугами framework.

    License

    В июле 2003 года Apple выпустила Darwin под версией 2.0 документа Лицензия Apple Public Source License (APSL), которую Фонд свободного программного обеспечения (FSF) классифицирует как лицензию бесплатного программного обеспечения, несовместимую с Стандартной общественной лицензией GNU. Предыдущие версии были выпущены под более ранней версией лицензии APSL, которая не соответствовала определению бесплатного программного обеспечения FSF, хотя и соответствовала требованиям Определение открытого исходного кода.

    История выпуска

    Ниже приводится таблица основных выпусков Darwin с датами их выпуска и соответствующими выпусками macOS. Обратите внимание, что соответствующий выпуск macOS мог быть выпущен в другую дату; см. соответствующие даты на страницах macOS.

    • Первоначальный выпуск
    • 0.1 разработан (для сортировки и идентификации), поскольку он идентифицировал себя просто как Rhapsody 5.3
    • ISO-образ доступен на archive.org
    • После этого ядро ​​изменилось с NeXTSTEP / OPENSTEP / Rhapsody на более новый XNU для Mac OS X
    • образ ISO доступно на archive.org
    • Первый коммерческий выпуск Darwin
    • Все выпуски Cheetah (v10.0.0–4) имели Та же версия Darwin.
    • Улучшение производительности для «загрузки» время, потоки реального времени, управление потоками, очистка кеша и обработка прерывания «
    • Поддержка SMB сетевой файловой системы
    • Wget заменена на cURL.
    • Изменение схемы нумерации для соответствия схеме нумерации сборки Mac OS X
    • GCC обновлен с 2 до 3.1
    • IPv6 и IPSec support
    • mDNSResponder сервис Discoveryдемон (Rendezvous )
    • Добавление CUPS, Ruby и поддержка Python
    • ведения журнала в HFS + (Darwin 6.2)
    • Профили приложений («файлы предварительного нагрева») для более быстрого запуска программы.
    • BSD уровень синхронизирован с FreeBSD 5
    • Автоматическая дефрагментация файла , кластеризация горячих файлов и необязательная чувствительность к регистру в HFS +
    • Bash вместо tcsh по умолчанию оболочка
    • Только чтение Поддержка NTFS (Darwin 7.9)
    • Mac OS X Tiger
    • Mac OS X для Apple TV
    • Mac OS X для Apple TV в Darwin 8.8.2
    • Стабильное ядро ​​, программный интерфейс, более тонкое ядро ​​блокировка, 64-битный уровень BSD
    • запущенуправление услугами структура
    • Расширенные атрибуты файлов, списки управления доступом
    • Команды, такие как cp и mv, обновлены до сохранить расширенные атрибуты и вилки ресурсов
    • Mac OS X Leopard
    • iPhone OS 1
    • Поддержка iPhone OS 1 в Darwin 9.0.0d1
    • Полная совместимость с POSIX, улучшенная иерархическая модель планирования процессов, динамически выделяемыефайлы подкачки, динамические ограничения ресурсов (для файлов и процессы ), процесс песочница, рандомизация разметки адресного пространства, DTraceтрассировка структура, файловая система демон событий, каталогжесткие ссылки
    • Apache 1.3 и PHP 4 обновлены до Apache 2.2 и PHP 5, только для чтения Поддержка ZFS.
    • Первое ядро ​​Darwin, используемое для устройств iPhone.
    • Mac OS X Snow Leopard
    • iOS 4
    • Окончание официальной поддержки архитектуры PPC (хотя несколько толстых двоичных файлов, таких как Kernel, все еще содержат изображения PPC)
    • 64-битное ядро ​​и dr ivers
    • libdispatchраспараллеливание задач структура
    • OpenCLгетерогенные вычисления структура
    • Начальная поддержка автоматического подсчета ссылок
    • Поддержка блоков в C
    • Прозрачный сжатие файлов в HFS +.
    • Mac OS X Lion
    • iOS 5
    • XNU больше не поддерживает PPC двоичные файлы (толстый двоичный файл только для i386, x86_64).
    • XNU требует процессора x86_64, за исключением iOS, которая основана на ARM.
    • Улучшенная песочница приложений
    • Полная поддержка для Автоматический подсчет ссылок
    • Mac OS X была переименована в OS X.
    • Сборка мусора Objective-C устарела в пользу Автоматический подсчет ссылок
    • OS X Mavericks
    • iOS 6
    • Сжатие виртуальной памяти
    • Объединение таймера
    • OpenGL 4.1 и OpenCL 1.2
    • Блок сообщений сервера версия 2 ( SMB2) теперь протокол по умолчанию для обмена файлами вместо AFP. Это сделано для повышения производительности и кросс-платформенной совместимости.
    • IPoTB (Интернет-протокол через Thunderbolt Bridge).
    • API Open Transport был удалено
    • OS X Yosemite
    • iOS 7, iOS 8
    • OS X El Capitan
    • iOS 9
    • Защита целостности системы. Защищает определенные части системы от изменения или вмешательства в процесс, даже если он запущен root или пользователем с привилегиями root.
    • sudo по умолчанию настроен с флагом «tty_tickets», ограничивающим время ожидания сеанса до сеанс терминала (например, окно или вкладка), в котором пользователь аутентифицировал программу.
    • LibreSSL заменяет OpenSSL
    • macOS Sierra
    • iOS 10
    • OS X была переименована в macOS.
    • Запись в каталог / Volumes теперь разрешена пользователю root или любому пользователю с правами root
    • Защита целостности системы теперь охватывает каталог / Library / Application Support / com.apple.TCC , содержащий список приложений, которым разрешено «управлять компьютером»
    • Objective-Cсборщик мусора удален и заменен на Автоматическая ссылка ence Counting, представленный в Darwin v12.0 (OS X v10.8). Приложения Objective-C, использующие сборку мусора, больше не будут работать.
    • Встроенная поддержка PPTP была удалена.
    • Изменена файловая система с HFS + на APFS на устройствах iOS. APFS уже доступна в macOS с 10.12.0, но не может использоваться в загрузочном разделе.
    • macOS High Sierra
    • iOS 11
    • APFS заменяет HFS + в качестве файловой системы по умолчанию для загрузочного раздела в macOS на компьютерах Mac с флэш-памятью . На компьютерах Mac с жесткими дисками загрузочный раздел необходимо переформатировать для использования APFS.
    • ntpd заменить на timed в качестве службы синхронизации времени
    • FTP и telnet команды удалены.
    • Расширения ядра («kexts») потребуют явного одобрения со стороны пользователя перед запуском.
    • Поддержка внешних графических процессоров, использующих Thunderbolt 3, и отменена поддержка внешних графических процессоров, использующих Thunderbolt 1 и 2.
    • macOS Mojave
    • iOS 12
    • Добавлена ​​поддержка новых графических процессоров Radeon Vega 20 в новых MacBook
    • macOS Catalina
    • iOS 13
    • Система Расширения заменяют Kexts и работают в пользовательском пространстве, вне ядра.
    • заменяет комплект ввода / вывода ]. Он представляет «Dexts» (расширения драйверов), которые создаются с использованием DriverKit. Driverkit — это новый SDK со всеми новыми фреймворками, основанными на IOKit, но обновленный и модернизированный. Драйверы устройств запускаются в пользовательском пространстве вне ядра.
    • macOS Big Sur
    • iOS 14
    • macOS Big Sur

    Переход номеров версий с Darwin 1.4.1 на 5.1 с выпуском Mac OS X v10.1.1 был разработан для того, чтобы связать Дарвина с версией Mac OS X и системой нумерации сборки, который, в свою очередь, унаследован от NeXTSTEP. В системе нумерации сборок macOS каждая версия имеет уникальный начальный номер сборки, который определяет, частью какой целой версии macOS она является. Mac OS X v10.0 имеет номера сборки, начинающиеся с 4, 10.1 — номера сборки, начинающиеся с 5, и так далее (более ранние номера сборки представляли версии для разработчиков).

    Команда uname -r в Терминале будет показан номер версии Darwin, а команда uname -v отобразит строку версии сборки XNU, которая включает номер версии Darwin.

    Производные проекты

    Из-за природы Дарвина бесплатного программного обеспечения, были проекты, направленные на изменение или улучшение операционной системы.

    OpenDarwin

    GNOME, работающий на OpenDarwin.

    OpenDarwin был управляемой сообществом операционной системой, основанной на системе Дарвина. Он был основан в апреле 2002 года компаниями Apple Inc. и Консорциумом интернет-систем. Его целью было расширение сотрудничества между разработчиками Apple и сообществом свободного программного обеспечения. Apple выиграла от этого проекта, потому что улучшения OpenDarwin будут включены в выпуски Darwin; Сообщество свободного / открытого исходного кода извлекло выгоду из того, что ему был предоставлен полный контроль над собственной операционной системой, которую затем можно было использовать в таких дистрибутивах свободного программного обеспечения, как GNU-Darwin.

    25 июля 2006 г. команда OpenDarwin объявила что проект закрывается, поскольку, по их мнению, OpenDarwin «превратился в простой хостинг для проектов, связанных с Mac OS X», и что попытки создать автономную операционную систему Darwin потерпели неудачу. Они также заявляют: «Этому способствовали доступность источников, взаимодействие с представителями Apple, сложность создания и отслеживания источников, а также отсутствие интереса со стороны сообщества». Последним стабильным выпуском была версия 7.2.1, выпущенная 16 июля 2004 года.

    PureDarwin

    PureDarwin — это проект по созданию загрузочного образа операционной системы из выпущенного Apple исходного кода для Darwin. После прекращения использования OpenDarwin и выпуска загрузочных образов, начиная с Darwin 8.x, становится все труднее создать полноценную операционную систему, поскольку многие компоненты становятся закрытыми. Проекту удалось создать рождественский выпуск на основе Darwin 9 с графическим интерфейсом X11 и командной строкой только 17.4 Beta на основе Darwin 17.

    Другие производные проекты

    • MacPorts (ранее DarwinPorts), Fink и Homebrew — хорошо известные проекты по переносу программ UNIX в операционную систему Darwin и обеспечению управления пакетами. Кроме того, несколько стандартных менеджеров пакетов UNIX, такие как RPM, pkgsrc и Portage, имеют порты Darwin. Некоторые из них работают в собственном пространстве имен, чтобы не мешать работе базовой системы.
    • GNU-Darwin — это проект, который переносит пакеты бесплатного программного обеспечения в Дарвин. Они упаковывают образы ОС аналогично дистрибутиву Linux.
    • Проект Darwine был портом для Wine, который позволяет запускать Программное обеспечение Microsoft Windows на Дарвине.
    • SEDarwin является портом TrustedBSDструктуры обязательного контроля доступа и частей SELinux рамки к Дарвину. Он был включен в Mac OS X 10.5.
    • Проект Darbat является экспериментальным портом Дарвина для семейства микроядер L4. Он стремится быть двоично-совместимым с существующими двоичными файлами Darwin.
    • Проект Darling — это уровень совместимости для запуска двоичных файлов macOS в системах Linux. Он использует некоторый исходный код Darwin.
    • Существуют различные проекты, направленные на поддержку драйверов: например, беспроводные драйверы, драйверы проводного NIC, драйверы модема, устройства чтения карт и ext2 и ext3 файловые системы.

    См. Также

    • Портал бесплатного программного обеспечения с открытым исходным кодом
    • A / UX
    • mkLinux
    • OSF / 1

    Ссылки

    Внешние ссылки

    • Дарвин выпускает на Apple Developer Connection
    • исходный код отдельных пакетов
    • Хексли, талисман Дарвина
    • PureDarwin.org
    • Музей Apple » Номера сборки MacOS X «на Wayback Machine (архивировано 25 декабря 2011 г.)

    LXF164:Darwin:Вид про­ис­хо­ж­де­ния

    Darwin – это не тот, ко­то­рый вы­ду­мал тео­рию эво­лю­ции, а тот, на ко­то­ром осно­ва­на про­прие­тар­ная Mac OS X. Чи­та­те­ли, воз­мож­но, уди­вят­ся: с че­го это LXF рас­ска­зы­ва­ет о про­прие­тар­ной ОС? За­гвозд­ка тут в том, что Darwin как раз-та­ки сво­бод­ная и от­кры­тая ОС – при­чем в пол­ном со­от­вет­ст­вии со смыс­лом, вкла­ды­вае­мым в эти сло­ва FSF и OSI.

    Ιστορία

    По­ла­гаю, что ис­то­рию Darwin на­до на­чать с ухо­да Сти­ва Джоб­са из Apple. Мы не мо­жем знать точ­но, из-за че­го он ушел, но ито­гом ста­ло то, что он пе­ре­манил в но­вую фир­му некое­го Ави Те­ва­ня­на [Avie Tevanian], ко­то­рый ра­бо­тал над мик­ро­ядром Mach и был одним из его основ­ных раз­ра­бот­чи­ков (кон­цеп­ция Mach раз­ра­бо­та­на в Универ­си­те­те Карнеги-Мел­ло­на). Пе­ре­манил его Джобс, конеч­но, не про­сто так, а для раз­ра­бот­ки ОС, ко­то­рая в дальней­шем по­лу­чит на­звание NeXTStep.

    • Метамодернизм в позднем творчестве В.Г. Сорокина
    • ЛитРПГ — последняя отрыжка постмодерна
    • «Ричард III и семиотика»
    • 3D-визуализация обложки Ridero создаем обложку книги при работе над самиздатом.
    • Архитектура метамодерна — говоря о современном искусстве, невозможно не поговорить об архитектуре. В данной статье будет отмечено несколько интересных принципов, характерных для построек «новой волны», столь притягательных и скандальных.
    • Литература
    • Метамодерн
    • Рокер-Прометей против изначального зла в «Песне про советскую милицию» Вени Дркина, Автор: Нина Ищенко, к.ф.н, член Союза Писателей ЛНР — перепубликация из журнала «Топос».
    • Как избавиться от комаров? Лучшие типы ловушек.
    • Что делать если роблокс вылетает на windows
    • Что делать, если ребенок смотрит порно?
    • Почему собака прыгает на людей при встрече?
    • Какое масло лить в Задний дифференциал (мост) Visco diff 38434AA050
    • О чем может рассказать хвост вашей кошки?
    • Верветки
    • Отчетность бюджетных учреждений при закупках по Закону № 223-ФЗ
    • Срок исковой давности как правильно рассчитать
    • Дмитрий Патрушев минсельхоз будет ли преемником Путина
    • Кто такой Владислав Поздняков? Что такое «Мужское Государство» и почему его признали экстремистским в России?
    • Как правильно выбрать машинное масло в Димитровграде?
    • Как стать богатым и знаменитым в России?
    • Почему фильм «Пипец» (Kick-Ass) стал популярен по всему миру?
    • Как стать мудрецом?
    • Как правильно установить FreeBSD
    • Как стать таким как Путин?
    • Где лучше жить — в Димитровграде или в Ульяновске?
    • Почему город Димитровград так называется?
    • Что такое метамодерн?
    • ВАЖНО! Временное ограничение движения автотранспортных средств в Димитровграде
    • Тарифы на электроэнергию для майнеров предложено повысить

    Для раз­ра­бот­ки но­вой ОС бы­ло ре­ше­но ис­поль­зо­вать объ­ект­но-ори­ен­ти­ро­ван­ные тех­но­ло­гии. Не­ве­до­мо по­че­му был вы­бран Objective-C, а не C++. Не­ко­то­рые ис­точники по­ка­зы­ва­ют, что C++ к мо­мен­ту на­ча­ла ра­бо­ты над NeXTStep еще не был соз­дан, но они всту­па­ют в про­ти­во­ре­чие с дру­ги­ми ис­точника­ми, по­это­му мож­но пред­по­ло­жить, что но­во­яв­лен­ная ком­пания про­сто вы­бра­ла тот язык, ко­то­рый стар­ше и боль­ше по­хож на C – основ­ной язык раз­ра­бот­ки ОС то­го вре­мени. NeXT Computers ли­цен­зи­ро­ва­ла Obj-C в 1988.

    Язык этот на тот мо­мент был до­воль­но «про­дви­ну­тым» – он, на­при­мер, вклю­чал ООП (при­чем ООП реа­ли­зо­ва­но че­рез со­об­щения, как в SmallTalk, несколь­ко непо­хо­же на то, к че­му мы при­вык­ли сей­час), ди­на­ми­че­скую ти­пи­за­цию, а в со­вре­мен­ной вер­сии еще и сбор му­со­ра.

    Яд­ро же NeXTStep бы­ло гиб­рид­ным (несмот­ря на то, что неко­то­рые ис­точники на­зы­ва­ют дан­ную ОС мик­ро­ядер­ной, это не так) и на­пи­сан­ным на чис­том C. Раз­ра­бот­чи­ки взя­ли луч­шие чер­ты мик­ро­яд­ра Mach, та­кие как мо­дуль­ную ар­хи­тек­ту­ру и яд­ра BSD (ско­рость и се­те­вой стек).

    Чарльз Дар­вин: во­круг све­та

    Рас­смат­ри­вать уста­нов­ку бу­дем на при­ме­ре VMWare Server 1.0 – у ав­то­ра от­сут­ст­ву­ет про­цес­сор с вир­туа­ли­за­ци­ей, а без нее мно­гие со­вре­мен­ные вир­ту­аль­ные ма­ши­ны ра­бо­та­ют очень мед­лен­но. Тип вир­ту­аль­ной ма­ши­ны – FreeBSD, же­ст­кий диск IDE; ука­зы­ва­ем ISO-об­раз, за­гру­жа­ем­ся с него. по­еха­ли!

    � Шаг 1 Вы­би­ра­ем же­ст­кий диск для уста­нов­ки. С этим, ду­ма­ет­ся, про­блем не возникнет ни у ко­го.

    � Шаг 2 Вы­бор ти­па раз­мет­ки же­ст­ко­го дис­ка. Тут мы, как это ни стран­но, вы­би­ра­ем руч­ную, ибо ав­то­ма­ти­че­­ская, сколь­ко ни пы­та­лись, не хо­те­ла ра­бо­тать. Нас вы­бро­сит в fdisk. На­би­ра­ем auto hfs (ав­то­ма­ти­че­­ская раз­мет­ка дис­ка с одним раз­де­лом HFS+) и. ско­рее все­го, по­лу­ча­ем ошиб­ку ви­да “malloc:*** Deallocation of a pointer not malloced. ”. Еще раз на­би­ра­ем auto hfs – те­перь уже это­го со­об­щения не бу­дет. За­пи­сы­ва­ем MBR ко­ман­дой w, за­тем вы­хо­дим из fdisk – quit. Те­перь нас по­про­сят вы­брать корневой раз­дел – че­ст­но го­во­ря, непо­нят­но, за­чем на­до вво­дить его це­ли­ком, когда мож­но бы­ло бы вы­би­рать из имею­щих­ся пу­тем на­жа­тия со­от­вет­ст­вую­щей циф­ры – но это уже во­прос к раз­ра­бот­чи­кам про­грам­мы уста­нов­ки. За­бе­гая впе­ред, ска­жем, что это да­ле­ко не един­ст­вен­ная ошиб­ка в ней. Да­лее у нас по­про­сят под­твер­дить: дей­ст­ви­тель­но ли мы хо­тим со­вер­шить «чис­тую» уста­нов­ку? От­ве­ча­ем – и сно­ва во­прос: имя то­ма; здесь мож­но на­пи­сать что угод­но. По­сле от­ве­та, как во­дит­ся, жмем . Оба-на! Пи­шет “error: nknown filesystem type”. Ухо­дим на пе­ре­за­груз­ку – за­но­во с об­раза. За­ме­ча­ем, что на пер­вом эта­пе поя­вил­ся пункт 3 – “Use existing partition”. Его и вы­би­ра­ем. Опять по­про­сят ука­зать корневой раз­дел. По­сле это­го бу­дет во­прос: ка­кой тип фай­ло­вой сис­те­мы ис­поль­зо­вать? Во­прос этот вы­гля­дит, по мень­шей ме­ре, стран­ным – есть же таб­ли­ца раз­де­лов, от­ту­да и бе­ри­те – но те­перь хо­тя бы по­нят­на при­чи­на пе­ре­за­груз­ки: уста­но­воч­ная про­грам­ма (скрипт?) по­пы­та­лась под­мон­ти­ро­вать раз­дел без ФС, и, ес­те­ст­вен­но, вы­лез­ла вы­ше­ука­зан­ная ошиб­ка. С нас сно­ва спро­сят под­твер­ждение и имя то­ма – ес­ли нам еще не на­дое­ло, от­ве­ча­ем на них, и – ура! – на­ча­лось ко­пи­ро­вание фай­лов. Это мо­жет за­нять несколь­ко мин. ой. Жур­нал-то про *nix, за­чем здесь по­вто­рять со­об­щение Windows? Но, как бы то ни бы­ло, это до­воль­но дли­тель­ный про­цесс, и во вре­мя него мож­но, к при­ме­ру, съесть пи­рож­ное.

    • Метамодернизм в позднем творчестве В.Г. Сорокина
    • ЛитРПГ — последняя отрыжка постмодерна
    • «Ричард III и семиотика»
    • 3D-визуализация обложки Ridero создаем обложку книги при работе над самиздатом.
    • Архитектура метамодерна — говоря о современном искусстве, невозможно не поговорить об архитектуре. В данной статье будет отмечено несколько интересных принципов, характерных для построек «новой волны», столь притягательных и скандальных.
    • Литература
    • Метамодерн
    • Рокер-Прометей против изначального зла в «Песне про советскую милицию» Вени Дркина, Автор: Нина Ищенко, к.ф.н, член Союза Писателей ЛНР — перепубликация из журнала «Топос».
    • Как избавиться от комаров? Лучшие типы ловушек.
    • Что делать если роблокс вылетает на windows
    • Что делать, если ребенок смотрит порно?
    • Почему собака прыгает на людей при встрече?
    • Какое масло лить в Задний дифференциал (мост) Visco diff 38434AA050
    • О чем может рассказать хвост вашей кошки?
    • Верветки
    • Отчетность бюджетных учреждений при закупках по Закону № 223-ФЗ
    • Срок исковой давности как правильно рассчитать
    • Дмитрий Патрушев минсельхоз будет ли преемником Путина
    • Кто такой Владислав Поздняков? Что такое «Мужское Государство» и почему его признали экстремистским в России?
    • Как правильно выбрать машинное масло в Димитровграде?
    • Как стать богатым и знаменитым в России?
    • Почему фильм «Пипец» (Kick-Ass) стал популярен по всему миру?
    • Как стать мудрецом?
    • Как правильно установить FreeBSD
    • Как стать таким как Путин?
    • Где лучше жить — в Димитровграде или в Ульяновске?
    • Почему город Димитровград так называется?
    • Что такое метамодерн?
    • ВАЖНО! Временное ограничение движения автотранспортных средств в Димитровграде
    • Тарифы на электроэнергию для майнеров предложено повысить

    � Шаг 3 Ко­пи­ро­вание за­вер­ше­но. Нас спро­сят па­роль root (два­ж­ды – в этом смыс­ле все нор­маль­но), по­том спро­сят имя до­ме­на, а за­тем вы­бор из 3 пунк­тов: соз­дать но­во­го поль­зо­ва­те­ля, пе­ре­за­гру­зить­ся и обо­лоч­ка. Ну, поль­зо­ва­те­ля мож­но соз­дать и по­том, обо­лоч­ка по­ро­ж­да­ет­ся глюч­ная, по­это­му вы­би­ра­ем пункт 2 – Reboot. Пе­ре­за­гру­жа­ем­ся. и су­до­рож­но вспо­ми­на­ем, был ли во­прос про за­груз­чик. Вы­яс­ня­ет­ся, что не бы­ло. Да-да! Его на­до ста­вить руч­ка­ми.

    � Шаг 4 Сно­ва за­гру­жа­ем­ся с об­раза. Толь­ко те­перь необ­хо­ди­мо ра­бо­тать в обо­лоч­ке, по­это­му на­би­ра­ем shell.Во­шли.На­би­ра­ем пер­вую ко­ман­ду –

    fdisk -f /usr/standalone/i386/boot0 -u -y /dev/rdisk0

    Что эта ко­ман­да де­ла­ет? Де­ла­ет она сле­дую­щее: ста­вит пер­вую часть за­груз­чи­ка в MBR (без таб­ли­цы раз­де­лов – оп­ция -u) без за­про­са под­твер­ждения – оп­ция -y.

    � Шаг 6 По­сле этой ко­ман­ды да­ем ко­ман­ду

    dd if=/usr/standalone/i386/boot1h of=/dev/rdisk0s1

    для ус­та­нов­ки за­гру­зоч­но­го сек­то­ра раз­де­ла HFS+.

    � Шаг 7 Мон­ти­ру­ем раз­дел –

    mount_hfs /dev/disk0s1 /mnt

    и ко­пи­ру­ем файл –

    cp /usr/standalone/i386/boot /mnt/

    (соб­ст­вен­но, сам за­груз­чик). От­мон­ти­ру­ем – umount /mnt – и пе­ре­за­гру­зим­мся – shutdown -r now. Ус­та­нов­ка за­вер­ше­на.

    Пер­вое зна­ком­ст­во

    За­груз­ка мо­жет пой­ти нор­маль­но, а мо­жет и за­вис­нуть (“Still waiting for root device”) – мы не смог­ли вы­яснить, с чем это свя­за­но. Во вто­ром слу­чае сле­ду­ет пе­ре­за­гру­зить­ся – иногда несколь­ко раз. По­сле успеш­ной за­груз­ки ви­дим при­гла­шение вхо­да в сис­те­му и ошиб­ки нена­строе­но­го mDNSResponder. Пе­ре­во­дим стро­ку и вхо­дим как root. Для на­ча­ла хо­те­лось бы по­ре­ко­мен­до­вать ском­пи­ли­ро­вать ста­рый до­б­рый MC – конеч­но, мож­но обой­тись и без него, но с ним удобнее.

    С ком­пи­ля­ци­ей при­дет­ся по­во­зить­ся: необ­хо­ди­мо ма­ло то­го что ска­чать как соб­ст­вен­но MC, так и все необ­хо­ди­мые за­ви­си­мо­сти, но еще и пе­ре­дать их на вир­ту­аль­ную ма­ши­ну. А ка­ким об­ра­зом? Сеть-то не на­строе­на. Един­ст­вен­ный бо­лее-менее доступ­ный путь – ис­поль­зо­вать ISO-об­раз.

    По­сле то­го, как соз­да­дим и под­мон­ти­ру­ем об­раз дис­ка (на вся­кий слу­чай – по­ря­док дей­ст­вий: в ка­та­ло­ге /Volumes соз­дать пап­ку cdrom, по­том смон­ти­ро­вать диск ко­ман­дой mount_cd9660 /dev/disk1s0 /Volumes/cdrom. Ес­те­ст­вен­но, об­раз уже дол­жен быть под­го­тов­лен для ис­поль­зо­вания в вир­ту­аль­ной ма­шине. Спе­ци­фи­ка Darwin. ), необ­хо­ди­мо ско­пи­ро­вать все фай­лы в до­машний ка­та­лог. Ко­ман­да ко­пи­ро­вания стан­дарт­ная; един­ст­вен­ное, что на­до от­ме­тить – Darwin стран­но ото­бра­жа­ет фай­лы на ISO9660, по­это­му ко­пи­ро­вать луч­ше по мас­ке, а раз­ар­хи­ви­ро­вать с ис­поль­зо­ванием ав­то­до­полнения по кла­ви­ше , бла­го оно име­ет­ся.

    Да! Пе­ред на­ча­лом ком­пи­ля­ции вы­полните сле­дую­щие ко­ман­ды:

    – ус­та­нав­ли­ва­ет ми­ни­маль­ную вер­сию ОС;

    – то­же по­нят­но, но для тех, ко­му не­по­нят­но – ука­зы­ва­ет­ся путь, ку­да при ком­пи­ля­ции бу­дут скла­ды­вать­ся биб­лио­те­ки.

    Соб­ст­вен­но ком­пи­ля­ция за­ви­си­мо­стей про­ис­хо­дит дол­го и нуд­но – рас­па­ков­ка (tar xzvf имя_ар­хи­ва), пе­ре­ход в ка­та­лог, configure, make, make install, рас­па­ков­ка, пе­ре­ход в ка­та­лог. важ­но лишь, в ка­ком по­ряд­ке – а он сле­дую­щий: pcre, pkg-config, gettext, slang и, на­конец, glib.

    За­ви­си­мо­сти ском­пи­ли­ро­ва­лись – пе­ре­хо­дим к соб­ст­вен­но mc. Тут дей­ст­ву­ем поч­ти так же – но configure необ­хо­ди­мо вы­полнить с оп­ци­ей —with-screen=slang. И по­сле вы­полнения make install бу­дет нам сча­стье – ском­пи­ли­ро­ван­ный mc под Darwin

    Но сча­стье ред­ко бы­ва­ет пол­ным – по неиз­вест­ным при­чи­нам в тек­сто­вом ре­жи­ме в ОС от Apple не ра­бо­та­ют функ­цио­наль­ные кла­ви­ши. По слу­хам, они ра­бо­та­ют в гра­фи­че­­ском тер­ми­на­ле – но ком­пи­ля­ция X-сер­ве­ра и ка­ко­го-ли­бо окон­но­го менед­же­ра вы­хо­дит за рам­ки этой ста­тьи. А что же де­лать с функ­цио­наль­ны­ми кла­ви­ша­ми? При­дет­ся ис­поль­зо­вать фо­кус – вме­сто функ­цио­наль­ных кла­виш – mc по­зво­ля­ет ис­поль­зо­вать ком­би­на­цию + циф­ра от 1 до 0. Не са­мый удоб­ный спо­соб, да, но с этим ниче­го не по­де­ла­ешь.

    Прой­дем­ся немно­го по де­ре­ву ка­та­ло­гов – оно, де­ре­во, силь­но от­ли­ча­ет­ся от при­выч­но­го нам. И не сто­ит за­бы­вать, что Darwin – «де­ск­топ­ная ОС без де­ск­то­па», ес­ли мож­но так вы­ра­зить­ся, по­это­му неко­то­рые эле­мен­ты там при­сут­ст­ву­ют лишь как за­глуш­ки. Итак, зрим в ко­рень. и вот ка­кие ка­та­ло­ги мы там ви­дим.

    » Ка­та­лог /.Trashes как раз и яв­ля­ет­ся за­глуш­кой – в Mac OS X он вы­пол­ня­ет функ­цию кор­зи­ны для су­пер­поль­зо­ва­те­ля.

    » Ка­та­лог /.vol – за­га­доч­ный ка­та­лог, где на­хо­дит­ся еще один (или бо­лее) ка­та­лог с циф­ро­вым именем. Но ес­ли по­смот­реть вы­вод ко­ман­ды mount, ста­но­вит­ся по­нят­ным, что к оно­му ка­та­ло­гу под­мон­ти­ро­ва­на псев­до­фай­ло­вая сис­те­ма volfs, на­зна­чение ко­то­рой из на­звания, впро­чем, не ста­но­вит­ся менее за­га­доч­ным. Дан­ная фай­ло­вая сис­те­ма пред­на­зна­че­на для досту­па к фай­лам не по имени, а по inode. Это бы­ло необ­хо­ди­мо для сты­ков­ки POSIX и Carbon API, ко­то­рый ныне (2012 год) счи­та­ет­ся уже уста­рев­шим, но в вер­сии Mac OS X, осно­ван­ной на опи­сы­вае­мом в дан­ном раз­де­ле Darwin 8.0.1, был вполне се­бе жи­вым.

    » /AppleInternal – со­дер­жит неко­то­рые за­го­ло­воч­ные фай­лы.

    » /Applications – опять же, пред­на­зна­чен для OS X. Ту­да обыч­но уста­нав­ли­ва­ют­ся несис­тем­ные при­ло­жения c GUI, раз­ра­бо­тан­ные спе­ци­аль­но для ОС от Apple. Ин­те­рес­но, что в Darwin при­сут­ст­ву­ет од­но та­кое при­ло­жение, хо­тя GUI там и в по­мине нет – со­от­вет­ст­вен­но, да­же и пы­тать­ся его за­пустить не сто­ит.

    » /Developer со­дер­жит до­ку­мен­та­цию, при­ме­ры ис­ход­ных ко­дов и шаб­ло­ны про­ек­тов мо­ду­лей яд­ра и рас­ши­рений яд­ра – разница ме­ж­ду ними бу­дет по­яснена чуть поз­же.

    » /Library со­дер­жит неко­то­рые важ­ные кон­фи­гу­ра­ци­он­ные фай­лы – в ча­ст­но­сти, файл /Library/Preferences/SystemConfiguration/com.apple.Boot.plist, необ­хо­ди­мый для за­груз­чи­ка, и неко­то­рые ло­ги.

    » /Network – по всей ви­ди­мо­сти, слу­жит для мон­ти­ро­вания се­те­вых фай­ло­вых сис­тем.

    » /System со­дер­жит под­ка­та­лог Library, бли­жай­шим ана­ло­гом ко­то­ро­го в Linux яв­ля­ет­ся /lib. В нем при­сут­ст­ву­ют фрейм­вор­ки при­ло­жений, мо­ду­ли и рас­ши­рения яд­ра, мо­ду­ли Perl.

    » /Users со­дер­жит до­машние ка­та­ло­ги поль­зо­ва­те­лей и в этом смыс­ле со­вер­шен­но иден­ти­чен /home.

    » /Volumes ана­ло­ги­чен /mnt и /media. Ка­та­ло­ги, соз­дан­ные в нем поль­зо­ва­те­лем, су­ще­ст­ву­ют до сле­дую­щей пе­ре­за­груз­ки – уч­ти­те это, когда бу­де­те в сле­дую­щий раз мон­ти­ро­вать ком­пакт-диск.

    » /bin, /dev, /sbin, /usr, /opt – объ­яс­нять не бу­дем, и так все по­нят­но. А вот ка­та­ло­ги /etc, /tmp и /var на са­мом де­ле яв­ля­ют­ся сим­во­ли­че­­ски­­ми ссыл­ка­ми на со­от­вет­ст­вую­щие ка­та­ло­ги в /private.

    Ес­ли уж за­гля­ну­ли в ка­та­лог /etc, да­вай­те в фай­ле profile ис­пра­вим пе­ре­мен­ную PATH, до­ба­вив в чис­ло пу­тей /usr/local/bin, и до­ба­вим пе­ре­мен­ные LIBDIR и MACOSX_DEPLOYMENT_TARGET (зна­чения см. ранее) – на слу­чай, ес­ли чи­та­те­лю за­хо­чет­ся по­уп­раж­нять­ся в ком­пи­ля­ции че­го-ли­бо POSIX-со­вмес­ти­мо­го. В прин­ци­пе, мож­но да­же по­пы­тать­ся ском­пи­ли­ро­вать све­жие вер­сии яд­ра и ба­зо­вых ути­лит, бу­де чи­та­тель ока­жет­ся же­ст­ким из­вра­щен­цем – ав­тор этих строк не ри­ск­нул по­ста­вить по­доб­ный экс­пе­ри­мент.

    Ар­хи­тек­тур­ные осо­бен­но­сти

    Как и древние рим­ляне, начнем с яй­ца – то есть с яд­ра. Яд­ро у ОС от Apple, как уже сказано, осно­ва­но на мик­ро­яд­ре Mach. Но «осно­ва­но на мик­ро­яд­ре» во­все не оз­на­ча­ет, что ар­хи­тек­ту­ра мик­ро­ядер­ная: ар­хи­тек­ту­ра гиб­рид­ная, и услов­но со­сто­ит из трех сло­ев.

    » В са­мом низу яд­ра ле­жит слой Mach, ко­то­рый от­ве­ча­ет за HAL (не сто­ит ис­кать дан­но­го тер­ми­на в до­ку­мен­та­ции, мы его ис­поль­зу­ем для уп­ро­щения), управ­ление про­цес­со­ра­ми, вы­тес­няю­щую мно­го­за­дач­ность, управ­ление па­мя­тью, внут­ри­ядер­ный IPC, под­держ­ку «мяг­ко­го» ре­аль­но­го вре­мени и, на­конец, за от­лад­ку яд­ра – в ка­че­­ст­ве от­лад­чи­ка на от­ла­жи­ваю­щей ма­шине ис­поль­зу­ет­ся GDB.

    » Слой BSD ле­жит вы­ше и вклю­ча­ет реа­ли­за­цию про­цес­сов и сиг­на­лов, ба­зо­вую мо­дель безо­пас­но­сти, API POSIX, сис­тем­ные вы­зо­вы, под­держ­ку се­ти и мно­гое дру­гое.

    » Слой I/O Kit – это фрейм­ворк, по­зво­ляю­щий раз­ра­бот­чи­кам ис­поль­зо­вать ог­раничен­ный на­бор воз­мож­но­стей C++ для объ­ект­но-ори­ен­ти­ро­ван­но­го про­грам­ми­ро­вания драй­ве­ров.

    В прин­ци­пе, эти слои не на­столь­ко чет­ко раз­де­ле­ны, по­это­му неко­то­рые мо­гут еще что-то вы­де­лить, а неко­то­рые, на­обо­рот, пред­поч­тут что-то уб­рать; но об­щая кар­ти­на та­ко­ва.

    Xnu (так на­зы­ва­ет­ся это яд­ро; рас­шиф­ро­вы­ва­ет­ся же эта аб­бре­виа­ту­ра как. да-да, Xnu is not Unix – Стол­лме­ну впо­ру об­ви­нять Apple в пла­гиа­те) по­зво­ля­ет под­клю­чать к се­бе рас­ши­рения – так на­зы­вае­мые kernel extensions, в един­ст­вен­ном чис­ле kext. Рас­ши­рения мо­гут со­сто­ять из од­но­го или бо­лее мо­ду­лей яд­ра. Мо­дуль яд­ра (Kmod) яв­ля­ет­ся минималь­ной единицей ко­да, ко­то­рую мож­но за­гру­зить в яд­ро.

    В Darwin ис­поль­зу­ет­ся фор­мат ис­пол­няе­мых фай­лов Mach-O и под­дер­жи­ва­ет­ся тех­но­ло­гия, осно­ван­ная на нем – муль­ти­ар­хи­тек­тур­ные ис­пол­няе­мые фай­лы. От­ме­тим, что Apple при­ме­ня­ла ее для пе­ре­но­са OS X с ар­хи­тек­ту­ры PowerPC на Intel.

    Те­перь рас­смот­рим та­кие спе­ци­фи­че­­ские осо­бен­но­сти Darwin, как «па­ке­ты [bundles]» и фрейм­вор­ки (при­ме­чание: здесь и да­лее речь мо­жет пой­ти о ве­щах, ко­то­рые не под­дер­жи­ва­ют­ся в вер­сии Darwin 8.0.1 – сия вер­сия 2005 го­да, а сей­час уже, по­чи­тай, 2012 за­кан­чи­ва­ет­ся ско­ро). «Па­ке­том» в дан­ном кон­тек­сте на­зы­ва­ет­ся на­бор свя­зан­ных ре­сур­сов, в чис­ло ко­то­рых мо­гут вхо­дить испол­няе­мые фай­лы, изо­бра­жения, ау­дио, за­го­ло­воч­ные фай­лы и да­же дру­гие па­ке­ты. Яс­ное де­ло, что та­кой «па­кет» – по­ня­тие аб­ст­ракт­ное, а по­се­му при­ве­дем кон­крет­ный при­мер – фрейм­ворк. Фрейм­ворк – на­бор, со­стоя­щий из од­ной или бо­лее ди­на­ми­че­­ских биб­лио­тек с за­го­ло­воч­ны­ми фай­ла­ми, до­ку­мен­та­ци­ей, ло­ка­ли­за­ци­ей и со­пут­ст­вую­щи­ми про­грам­ма­ми для об­лег­чения ра­бо­ты. Да­вай­те рас­смот­рим неко­то­рые фрейм­вор­ки, вхо­дя­щие в со­став ОС от Apple.

    Уже упо­ми­нав­ший­ся ранее I/O Kit – фрейм­ворк, со­стоя­ший из двух час­тей: ре­жи­ма поль­зо­ва­те­ля и ре­жи­ма яд­ра. Часть поль­зо­ва­тель­ско­го ре­жи­ма от­ве­ча­ет за про­стой доступ к обо­ру­до­ванию из при­ло­жений, а часть ре­жи­ма яд­ра – за ба­зо­вую ие­рар­хию клас­сов и под­держ­ку C++. Мы уже от­ме­ча­ли, что C++ в I/O Kit несколь­ко ог­раничен. За­клю­ча­ет­ся это в от­сут­ст­вии та­ких ве­щей, как шаб­ло­ны, ис­клю­чения, RTTI и мно­же­ст­венн­ное на­сле­до­вание. Тем не менее, это нис­коль­ко не ме­ша­ет раз­ра­бот­чи­кам пи­сать драй­ве­ры.

    CoreFoundation – фрейм­ворк, обес­пе­чи­ваю­щий ба­зо­вые воз­мож­но­сти для про­грамм, на­пи­сан­ных на Objective-C, та­кие как раз­бор XML-фай­лов, доступ к ре­сур­сам че­рез URL, управ­ление спи­ска­ми свойств и мно­гие дру­гие.

    Для об­лег­чения ра­бо­ты с се­тью пред­на­зна­чен фрейм­ворк CFNetwork. Он де­ла­ет удоб­ной ра­бо­ту с со­ке­та­ми, соз­дание SSL/TLS-со­единений, раз­ре­шение имен. Раз­ра­бот­чик же­ла­ет ра­бо­тать с HTTP или FTP? Ни­ка­ких про­блем – за это так­же от­ве­ча­ет дан­ный фрейм­ворк.

    Нель­зя не упо­мя­нуть и о фай­ло­вой сис­те­ме HFS+. Осо­бен­но­стя­ми она по со­вре­мен­ным мер­кам не от­ли­ча­ет­ся (раз­ве что под­держ­ка лю­бых сим­во­лов Юнико­да в имени фай­ла, за ис­клю­чением сим­во­ла NUL), но все же пе­ре­чис­лим ее воз­мож­но­сти. Это жур­на­ли­ро­вание, B-де­ре­вья для эф­фек­тив­но­го по­ис­ка фай­лов, про­зрач­ное сжа­тие.

    А как об­сто­ят де­ла с безо­пас­но­стью? О, с безо­пас­но­стью все хо­ро­шо, не со­мневай­тесь! Вот неко­то­рые воз­мож­но­сти и тех­но­ло­гии, так или ина­че от­но­ся­щие­ся к ней:

    » ASLR Тех­но­ло­гия, раз­ме­щаю­щая в ОЗУ неко­то­рые кри­тич­но важ­ные сис­тем­ные дан­ные слу­чай­ным об­ра­зом. Это серьезно ослож­ня­ет экс­плуа­та­цию ря­да атак, тре­бую­щих знания их рас­по­ло­жения.

    » NX-бит За­пре­ща­ет вы­полнение ко­да в сте­ке и в ку­че.

    » Пра­ва досту­па Стан­дарт­ная мо­дель Unix.

    » ACL Рас­ши­рен­ная сис­те­ма прав досту­па; по­зво­ля­ет ин­ди­ви­ду­аль­но для ка­ж­до­го поль­зо­ва­те­ля на­зна­чать пра­ва досту­па к фай­лам.

    » Kauth Ман­дат­ная сис­те­ма кон­тро­ля досту­па; ана­ло­гич­на SELinux.

    » Шиф­ро­вание раз­де­ла под­кач­ки.

    » IPSec Его реа­ли­за­цию, как, впро­чем, и в Linux,ста­щи­ли из FreeBSD.

    » Под­пи­сы­вание ис­пол­няе­мых фай­лов Воз­мож­но тео­ре­ти­че­­ски.

    Не­объ­ят­ное объ­ять нель­зя – nemo omnia potest scire – но ав­тор и не ста­вил та­кой це­ли, он ста­вил цель за­ин­те­ре­со­вать чи­та­те­ля. Хо­те­лось бы на­де­ять­ся, что у него это по­лу­чи­лось.

    Ито­ги

    Впе­чат­ление о дан­ной ОС сло­жи­лись неод­но­знач­ные: с од­ной сто­ро­ны, ин­те­рес­но по­смот­реть на внут­рен­но­сти ком­мер­че­­ской ОС от Apple, а с дру­гой. Darwin яв­но не яв­ля­ет­ся сис­те­мой для на­столь­но­го ис­поль­зо­вания. Пред­принима­лись по­пыт­ки соз­дать ди­ст­ри­бу­тив на осно­ве этой ОС, но осо­бо­го успе­ха они не по­лу­чи­ли. Мо­жет быть, вый­дет у ко­го-нибудь из на­ших чи­та­те­лей. |

    Па­ке­ты, не­об­хо­ди­мые для ком­пи­ля­ции MC вер­сии 4.6.1:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *