Можно ли скомпилировать дистрибутив Darwin из исходного кода, как вы можете собрать дистрибутив Linux?

Я прочитал и проведена Linux С Нуля (и BLFS) и мне было интересно, могу ли я следовать этому руководству, чтобы создать дистрибутив Darwin, заменив xnu ядра? Бы процесс значительно отличается от изложенной в ОФС?

в настоящее время я понимаю, что все, что потребуется для создания системы "Darwin", а не "Linux", будет заменой ядра. Заключаться в следующем верно?


EDIT:

в ответ на замечание киллермиста я уточню этот вопрос. Хотя я ищу информацию об этой теме в целом, то, что я специально ищу, - это что-то вроде "Darwin Distro Руководство По Созданию" как ОРС-это "Руководство По Созданию Дистрибутива Linux".

Я ценю, что такая информация, вероятно, будет поступать только от людей из Puredarwin,OpenDarwin или GNU / Darwin так что это что-то вроде вызова к ним за помощью. A"Как-Мы-Сделали-PureDarwin-Нано-Начало-Окончание" руководство, как LFS было бы прекрасно,но я знаю, что прошу много.

27
задан Ephemera
05.03.2023 22:38 Количество просмотров материала 2787
Распечатать страницу

2 ответа

Обновление 19 Апр 2015:

после двух лет все еще очень мало интереса в этой сфере. Однако, сообщество Хакинтош по-прежнему очень активный, что означает, что один из немногих с открытым кодом не-Apple загрузчик, способный загрузить xnu (Хамелеон и вилки) при этом сохраняется и может загрузиться Йосемити. Есть также истории успеха загрузки OS X Yosemite в QEMU. Кроме того, благодаря (теперь Apple, занятых) разработчик, который идет за ручку winocm, то есть ARM порт ядра xnu. Она была самым активным разработчиком, которого я знаю в этой области.

есть и продолжение Амит Синг Мак ОС Х ВКУ в ближайшее время. Я обычно не люблю упоминать личные страницы людей, однако сервер блога со всей информацией кажется немного ненадежным, поэтому смотрите информационное окно на ameaijou страница Twitter.

мне удалось создайте цепочку инструментов разработки Apple (самостоятельный хост, однако "Darwin SDK"также был портирован на Linux). Я считаю, что ОС Darwin все еще можно построить с нуля - все, что нам может не хватать,-это некоторые Kexts с открытым исходным кодом. Смотрите это пространство, и если вы знаете, как вызвать интерес, дайте мне знать! :)


краткие ответы на этот вопрос:

технически: Да

фактически: No*

С Бинарными Читы: возможно, но и не легально (непроверено)

С бинарными Читы для общего оборудования: как указано выше (непроверено)

*если вы не работаете в Apple (*прочищает горло в общем направлении Калифорнии*)


более длинный ответ:

это будет довольно длинной. Я предложите кофе. Если у вас нет времени/желания читать все это, вы можете перейти к "заключительные замечания".

Практически Не Возможно (Нет):

к сожалению, Apple отозвала исходный код для слишком многих необходимые Kexts Дарвина и двоичные файлы, чтобы сделать компиляцию ОС Darwin исключительно из источника возможно. Это все еще технически возможно (вы можете написать исходный код самостоятельно, чтобы исправить его должным образом), но у меня просто нет время, навыки или склонность к этому (и я сомневаюсь, что сообщество краудфандинга будет очень интересно).

неудивительно, что ключевым переломным моментом был выпуск Darwin 10, который привел xnu в x86_64-land. Большинство необходимых источников были до этого, но были только x86. С течением времени значение "открытого исходного кода" Apple, похоже, переместилось в "открытый исходный код только на оборудовании Apple", поскольку KEXTs от Apple теперь зависит от аппаратного обеспечения, поэтому даже если вы может получить все и работает (см. Ниже) вы все равно будете ограничены аппаратным обеспечением Apple.

Технически Возможно (Да):

однако не все потеряно. Руководство LFS действительно пригодилось, и, конечно же, вся необходимая настройка может быть проведена без фактического создания ОС Darwin. Кроме того, представленные шаги дают вам почти точную дорожную карту пути вперед, минус ядро, KEXTs и загрузчик. Мне удалось решить загрузчик хотя проблема (по крайней мере для устройств Apple).

Если вам интересно, вот полный обзор того, что вам придется делать:

  • стереть раздел (предпочтительно 8 ГБ или больше) на диске (внутренний или внешний не имеет значения) и отформатировать его как Mac OS Extended (Журналируемый) (HFS+).
  • убедитесь, что у него есть таблица разделов GUID (GPT), и что при этом у него есть раздел EFI. Самый простой способ это с помощью дисковой утилиты Apple, но вы можете сделать это в командной строке, если вы хотите (есть учебники в другом месте о том, как это сделать). Важным моментом является то, что при запуске distil list diskNsM следующая информация должна быть правильной:

Тип Раздела: Apple_HFS

OS можно установить: Да

Носитель Только Для Чтения: No

Том Только Для Чтения: No

  • теперь следовать руководству LFS (с варианты адаптации.)

  • вставить 'DFS= / Volumes/DarwinOS' (без кавычек и с фактической точки монтирования, очевидно) в .bashrc и .bash_profile

  • создать каталог пользователя (chown это на 0:0 в самом конце):

    sudo mkdir-v $DFS/usr

  • Enter 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 binutils в любом случае.)

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

  • сделайте обездоленного пользователя специально для DFS (предложено LFS):

    sudo dscl . -создавать /Пользователи/ОРС

    sudo dscl . -создание /пользователи/ОРС UserShell /бин/Баш

    sudo dscl . - создать/Users / LFS RealName"LFS DFS"

    sudo dscl . -создать /пользователи/ОРС уникальный идентификатор "2070" # все, что вам нравится

    sudo dscl . - создать/Users / lfs PrimaryGroupID 20 # по умолчанию 'staff'

    sudo dscl . -создание /пользователи/NFSHomeDirectory /пользователи ОРС/ОРС

    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

  • Log in:

    su-lfs

    пароль: ДПП

  • выполните следующую команду для очистки среды (от LFS):

    кошки > ~/.файл << "ВФ"

    Эхо " вход в чистую окружающую среду..."

    exec для ОКР -я дома=$домашняя срока=$срок от PS1='\u:\из ж\$ ' /Бен/Баш

    EOF

  • теперь выполните следующую команду (см. LFS для того, что он делает, если вы не уверены):

    кошки > ~/.bashrc следующее << "ВФ"

    set +h

    umask 022

    DFS= / Volumes/DarwinOS # как ранее

    LC_ALL=POSIX

    LFS_TGT=$(uname-m)-dfs-darwin1242 # посмотрите внутри gcc/configure для возможностей!

    путь=/инструменты/ОГРН:/ОГРН:/usr/Бен # Примечание симлинк из Перед

    экспорт ЗНАЧЕНИЕ LC_ALL LFS_TGT ПУТИ ОРС

    echo ".сценарий bashrc и полной. Среда готова."

    EOF

  • GCC /configure достаточно гибкий. Попробовать применение grep к интернет *- узор, или просто запустить gcc -v, чтобы увидеть, как ваш хост-машина была настроена и скопировать это.

  • теперь выйдите из системы пользователя lfs и войдите обратно. Теперь у вас должна быть чистая окружающая среда.
  • все теперь происходит внутри пользователь lfs. Вы заметите, что я был немного ленив в преобразовании только половину символов " LFS "в символы "DFS". Извините за это, но вы поняли идею.

хорошо, теперь к гипотетическому разделу.

отсюда это довольно хорошо будет стандартная процедура LFS: извлечение источников, сборка, установка, тестирование, удаление источников. Примечание. 2 прохода binutils, GCC и Glibc по-прежнему необходимы, но вы также должны иметь рабочую копию libc++.1.dylib - и вам нужно это сделать за 2 прохода тоже. Вы можете увидеть проект LLVM libcxx страница для немного больше деталей. После компиляции вы можете поместить его в /usr/lib. Вам нужно скомпилировать и установить ядро xnu (есть несколько учебников вокруг интернета для того, как это сделать), а затем установить KEXTs. Даже если бы все необходимые KEXTs были доступны, вам все равно нужно было бы поместить их в .пакет kext вручную. Опять там учебники для рук-создать КЕКСТ на командная строка.

последний бит делает систему загрузочной. Для этого необходимо выполнить следующую команду:

"$ДПП выполнить/sbin/благослови" --папка "$крепление/система/библиотеки/CoreServices" --bootefi параметром --verbose

на самом деле место, чтобы благословить на самом деле не имеет значения. Эта папка просто стандартна для Apple.

в любом случае, предполагая, что ядро и KEXTs были в нужных местах, у вас были правильные копии dyld,launchd и т. д. и boot.efi работал правильно, система должна работать и загрузиться!

обратите внимание, если вы действительно хотите, чтобы вы могли запустить faux -launchd это просто скрипт для запуска в командной строке - это PureDarwin Nano делает.

опять же, непременно напишите KEXTs и двоичные файлы сами, если хотите - it is технически возможно. Просто позвони мне, когда будешь сделанный.


С бинарными чит-кодами: возможно, но и не легально (непроверено)

так почему бы вам просто не вырвать двоичные файлы, KEXTs и необходимые файлы из Mountain Lion, благословить громкость и уйти? Ну, ты, наверное, можешь. Но для этого Вам также нужна лицензия. Кроме того, если вы сделаете это, вы просто в основном сделали копию Mountain Lion. Разве это не к делу относится?

С бинарными Читы для общего оборудования: Как указано выше (непроверено)

это довольно много is проект OSx86. Опять же, вы в значительной степени сразу сталкиваетесь с юридическими проблемами. Нет никаких сомнений в том, что эти последние два метода, безусловно, возможны - тот факт, что вы можете запускать Mountain Lion на универсальном оборудовании, является доказательством этого, - но весь смысл этого состоял в том, чтобы законно скомпилировать свою собственную ОС Darwin из источника.


сторону Примечание

вы, возможно, заметили, что я сознательно избегал чего-либо 32-битного. В мире, где все основные ОС доступны в 64-битной версии, нет особого смысла компилировать 32-битную. Apple действительно предоставила образы дисков Дарвина (вплоть до Дарвина 9) здесь. Они отлично работали на моем окне.

Заключение

я думаю, в конце концов, люди покупают Mac не для Дарвина, они покупают Mac для Aqua. В результате поддержка Darwin как автономного продукта с открытым исходным кодом постепенно снизилась до такой степени, что это действительно просто символический жест для сообщества с открытым исходным кодом. Другой слегка ироничный факт заключается в том, что для того, чтобы узнать об этом много, вам нужно перейти прямо в проект OSx86, который точно не санкционирован (мягко говоря). Даже тогда вокруг не так много информации. PureDarwin - отличное место для начала, и Джонатан Книга Левина неоценимая справка для всех вещей xnu.

это был чрезвычайно образовательный год работы, и я почти так же счастлив, зная, как это сделать, как я на самом деле это делаю. Я собираюсь прекратить работу над ним на каком-то этапе, хотя и сейчас это время. В качестве последнего бесполезного крика Apple, было бы слишком много просить, чтобы иметь еще одну сборку Дарвина, когда вы выпускаете Mavericks?

32
отвечен Ephemera 2023-03-07 06:26

очевидно, вы признали, что LFS для Linux и Darwin очень сильно отличается от Linux LFS применяется, так что это просто за пределами ваших усилий одного человека, чтобы применить LFS к системам Дарвина.

есть много попыток сообщества заменить / улучшить системы Дарвина. пока проект OpenDarwin не так уж много получится, угадать код от Apple-это слишком сложно, а тут еще один проект PureDarwin остальных:

PureDarwin SourceForge

Домашняя Страница PureDarwin

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

ядро Darwin не имеет такой же архитектуры с ядром Linux, поэтому его нельзя заменить ядром Linux, поэтому вам нужно его скомпилировать.

на самом деле все, что вам нужно сделать, это придерживаться 100% с проектом PureDarwin, а затем вызвать следующий сценарий: Код Google - Чистый Дарвин Переключатель Ядра С пользовательские изображения ядра у вас будет хорошо.

но относительно того, как построить хорошо работающее ядро Дарвина, это был бы новый вопрос.

1
отвечен 2023-03-07 08:43

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх