Обновление 19 апреля 2015 г .:
Спустя два года интерес к этой сфере все еще остается очень низким. Тем не менее, сообщество Hackintosh по-прежнему очень активно, а это означает, что один из немногих загрузчиков с открытым исходным кодом, не поддерживающих Apple, способных загружать xnu (Chameleon и вилки), по-прежнему поддерживается и может загружать Yosemite. Есть также истории успеха загрузки OS X Yosemite в QEMU. Кроме того, благодаря (в настоящее время работающему в Apple) разработчику, который использует дескриптор winocm, у нас есть порт ARM ядра xnu. Она была самым активным разработчиком, которого я знаю в этой области.
Существует также продолжение Mac OS X Internals от Amit Singh, которое скоро появится. Я обычно не люблю упоминать личные страницы людей, однако сервер блогов со всей информацией кажется немного ненадежным, поэтому смотрите информационное окно на странице Twitter ameaijou .
Мне удалось создать инструментарий разработки Apple (самодостаточный, однако "Darwin SDK" также был перенесен на Linux). Я верю, что Darwin OS все еще можно собрать с нуля - все, что нам может не хватать, - это некоторые Kexts с открытым исходным кодом. Посмотрите это место, и если вы знаете, как вызвать интерес, дайте мне знать! :)
Краткие ответы на этот вопрос:
Технически: да
Практически: нет *
С двоичными кодами: возможно, но не законно (не проверено)
С двоичными кодами для общего оборудования: как указано выше (не проверено)
* если вы не работаете в Apple (* прочищает горло в общем направлении Калифорнии *)
Более длинный ответ:
Это будет довольно долго. Я предлагаю кофе. Если у вас нет времени / желания читать все это, вы можете перейти к "Заключительным замечаниям".
Практически возможно (нет):
К сожалению, Apple отозвала исходный код слишком многих необходимых KEXT и двоичных файлов Дарвина, чтобы сделать компиляцию Darwin OS исключительно из исходного кода. Это все еще технически возможно (вы могли бы написать источник самостоятельно, чтобы исправить это должным образом), но у меня просто нет времени, навыков или желания сделать это (и я сомневаюсь, что сообщество краудфандинга было бы очень заинтересовано).
Неудивительно, что ключевым переломным моментом стал выпуск Darwin 10, который привел xnu в мир x86_64. Большинство необходимых источников было до этого, но были только x86. С течением времени значение "открытого исходного кода" Apple, по-видимому, сместилось на "открытый исходный код только на оборудовании Apple", так как KEXT от Apple теперь в целом зависят от аппаратного обеспечения, так что даже если бы вы могли все поднять и работает (см. ниже), вы все равно будете ограничены аппаратным обеспечением Apple.
Технически возможно (да):
Однако еще не все потеряно. Руководство по LFS пригодилось, и, безусловно, все необходимые настройки могут быть выполнены без фактической сборки ОС Darwin. Кроме того, представленные шаги дают вам почти точную дорожную карту пути вперед, за исключением ядра, KEXT и загрузчика. Мне все-таки удалось решить проблему с загрузчиком (по крайней мере, для оборудования Apple).
Если вам интересно, вот полный обзор того, что вам нужно будет сделать:
- Сотрите раздел (желательно 8 ГБ или больше) на диске (внутренний или внешний не имеет значения) и отформатируйте его как Mac OS Extended (Journaled) (HFS+).
- Убедитесь, что у него есть таблица разделов GUID (GPT), и что когда вы это делаете, у нее есть раздел EFI. Самый простой способ сделать это - воспользоваться дисковой утилитой Apple, но вы можете сделать это в командной строке, если хотите (в других местах есть учебники о том, как это сделать). Важным моментом является то, что при запуске
distil list diskNsM
следующая информация должна быть правильной:
Тип раздела: Apple_HFS
ОС может быть установлена: Да
Только для чтения: нет
Том только для чтения: нет
Теперь, чтобы следовать руководству LFS (с адаптациями).
Вставьте 'DFS =/Volumes/DarwinOS ' (без кавычек и с точной точкой монтирования) в .bashrc
и .bash_profile
Создайте каталог пользователя (chown
его до 0:0 в самом конце):
sudo mkdir -v $ DFS/usr
Введите root
:
sudo su -
Создайте каталог исходных текстов и установите бит закрепления:
mkdir -v $ DFS/sources # Убедитесь, что у вас все еще определен $ DFS, если нет, переопределите его.
chmod -v a+wt $ DFS/sources
Создайте каталог tools и создайте символическую ссылку на него, чтобы мы могли легко добавить его в $ PATH позже (кстати, в root
каталоге):
mkdir -v $ DFS/tools
ln -sv $ DFS/tools /
Выйти # Оставить root
Загрузите источник всех пакетов, которые вы хотите. Это, конечно, где вы застряли. Все необходимые не там. (Кстати, я предпочитаю GNU's binutils
любом случае.)
Предполагая, что вы действительно можете загрузить все, что вам нужно, давайте продолжим.
Сделайте непривилегированного пользователя специально для DFS (предложено LFS):
sudo dscl. -создать / Пользователи / lfs
sudo dscl. -create / Users / lfs UserShell / bin / bash
sudo dscl. -create / Users / lfs RealName "LFS DFS"
sudo dscl. -create / Users / lfs UniqueID "2070" # что угодно
sudo dscl. -create / Users / lfs PrimaryGroupID 20 # По умолчанию 'staff'
sudo dscl. -create / Users / lfs NFSHomeDirectory / Users / lfs
sudo dscl. -passwd / Users / lfs dfs # Снова по вкусу.
Обратите внимание, что вы должны сделать homedir нового пользователя вручную на Mac:
sudo mkdir / Пользователи / lfs
sudo chown -R lfs: персонал / пользователи / lfs /
Теперь предоставьте новому пользователю доступ к источникам и инструментам.
sudo chown -v lfs $ DFS / tools
sudo chown -v lfs $ DFS / sources
Авторизоваться:
su - lfs
Пароль: DFS
Выполните следующую команду, чтобы очистить среду (из LFS):
cat> ~ / .bash_profile << "EOF"
эхо "Вход в чистую среду ..."
exec env -i HOME = $ HOME TERM = $ TERM PS1 = '\u:\w\$' / bin / bash
EOF
Теперь выполните следующую команду (посмотрите, что она делает в LFS, если вы не уверены):
cat> ~ / .bashrc << "EOF"
установить + ч
Umask 022
DFS = / Volumes / DarwinOS # Как ранее
LC_ALL = POSIX
LFS_TGT = $ (uname -m)-dfs-darwin1242 # Загляните в gcc / configure для возможностей!
PATH = / tools / bin: / bin: / usr / bin # Обратите внимание на символическую ссылку ранее
экспортировать LFS LC_ALL LFS_TGT PATH
echo ".bashrc скрипт завершен. Окружающая среда готова. "
EOF
GCC's /configure
довольно гибок. Попробуйте воспользоваться шаблоном *-
или просто запустите gcc -v
чтобы посмотреть, как настроен ваш хост-компьютер, и скопируйте его.
- Теперь выйдите из системы пользователя lfs и войдите снова. Теперь у вас должна быть чистая среда.
- С этого момента все происходит внутри пользователя lfs. Вы заметите, что я немного ленив в преобразовании только половины символов "LFS" в символы "DFS". Извините, но вы поняли.
Хорошо, теперь в гипотетический раздел.
Начиная с этого момента, это будет довольно стандартная процедура LFS: извлечение исходных файлов, сборка, установка, тестирование, удаление исходных текстов. Обратите внимание, что 2 прохода binutils, GCC и Glibc по-прежнему необходимы, НО у вас также должна быть рабочая копия libc++.1.dylib
- и вам нужно будет сделать это также за 2 прохода. Вы можете увидеть страницу libcxx проекта LLVM для более подробной информации. После компиляции вы можете поместить его в /usr/lib
. Вам нужно будет скомпилировать и установить ядро xnu (в Интернете есть несколько учебных пособий о том, как это сделать), а затем установить KEXT. Даже если бы все необходимые KEXT были доступны, вам все равно нужно было бы поместить их в пакет .kext вручную. Снова есть учебники о том, как вручную создать KEXT в командной строке.
Последний бит делает систему загрузочной. Для этого вы должны выполнить следующую команду:
"$ DFS/usr/sbin/bless" --folder "$ MOUNT/ Система / Библиотека / CoreServices" --bootefi --verbose
На самом деле, место, чтобы благословлять, на самом деле не имеет значения. Эта папка просто стандартная для Apple.
В любом случае, если ядро и KEXT были в нужных местах, у вас были правильные копии dyld
, launchd
и т.д. И boot.efi
работал правильно, система должна работать и загружаться!
Обратите внимание, что если вы действительно этого хотите, вы можете запустить faux- launchd
который является просто скриптом для запуска приглашения bash - это то, что делает PureDarwin Nano .
Опять же , все средства, пишут кексты и двоичные файлы самого , если вам нравится - это технически возможно. Просто позвони мне, когда закончишь.
С двоичными кодами: возможно, но не законно (не проверено)
Итак, почему вы не можете просто скопировать двоичные файлы, KEXT и необходимые файлы из Mountain Lion, благословить том и уйти? Ну, вы, вероятно, можете. Но вам также нужна лицензия для этого. Кроме того, если вы сделаете это, вы просто сделали копию Mountain Lion. Разве это не относится к делу?
С двоичными кодами для общего оборудования: как указано выше (не проверено)
Это в значительной степени является проект OSx86. Опять же, вы сразу же столкнулись с юридическими проблемами. Нет никаких сомнений в том, что эти два последних метода определенно возможны - тот факт, что вы можете запускать Mountain Lion на обычном оборудовании, является доказательством этого - но весь смысл этого заключался в том, чтобы иметь возможность легитимно скомпилировать вашу собственную ОС Darwin из исходного кода.
Примечание
Возможно, вы заметили, что я сознательно избегал всего 32-битного. В мире, где каждая основная ОС доступна в 64-битной версии, нет смысла компилировать 32-битную. Apple действительно предоставила образы дисков Дарвина (вплоть до Darwin 9) здесь. Они отлично работали на моей Windows-коробке.
Заключительные замечания
Я думаю, в конце концов, люди не покупают Mac для Дарвина, они покупают Mac для Aqua. В результате поддержка Дарвина как отдельного продукта с открытым исходным кодом постепенно снизилась до такой степени, что это действительно просто символический жест для сообщества разработчиков программного обеспечения с открытым исходным кодом. Еще один немного ироничный факт: чтобы узнать о многом, вам нужно перейти прямо к проекту OSx86, который не является строго санкционированным (мягко говоря). Даже тогда вокруг не так много информации. PureDarwin - отличное место для начала, а книга Джонатана Левина - бесценный справочник по всем вещам xnu.
Это был чрезвычайно образовательный год работы, и я почти так же рад знать, как это сделать, как и на самом деле. Я собираюсь прекратить работу над этим на каком-то этапе, хотя сейчас самое время. В качестве окончательного бесполезного крика Apple, будет ли слишком много просить иметь еще одну сборку Darwin, когда вы выпустите Mavericks?