Оновлення 19 квітня 2015 року:
Через два роки, як і раніше, виявляється дуже мало інтересу до цієї сфери. Однак спільнота Hackintosh все ще дуже активна, це означає, що один з небагатьох завантажувачів з відкритим кодом, що не включає Apple, здатний завантажувати xnu (Хамелеон і вилки), як і раніше, підтримується і може завантажувати Yosemite. Існують також історії успіху, що завантажують ОС X Yosemite в рамках QEMU. Крім того, завдяки розробнику (який зараз працює в Apple), який проходить за ручкою winocm , у нас є порт ARM ядра xnu . Вона була найактивнішим розробником, якого я знаю в цій галузі.
Також найближчим часом буде продовження Mac OS X Internal Amit Singh . Я зазвичай не люблю згадувати особисті сторінки людей; однак сервер блогу з усією інформацією здається трохи недостовірним, тому дивіться інформаційне поле на сторінці ameaijou у Twitter.
Мені вдалося створити ланцюжок інструментів для розробки Apple (власний хост, проте "Darwin SDK" також був перенесений в Linux ). Я вважаю, що Darwin OS ще можливо побудувати з нуля - про все, що ми можемо бракувати, є деякі Kexts з відкритим кодом. Слідкуйте за цим простором, і якщо ви знаєте, як збільшити інтерес, дайте мені знати! :)
Короткі відповіді на це питання:
Технічно: Так
Практично: Ні *
З Бінарними чітами: Напевно, але також не законно (не перевірено)
З бінарними кодами для загального обладнання: Як зазначено вище (неперевірене)
* якщо ви не працюєте в Apple (* очищає горло в загальному напрямку Каліфорнії *)
Більш довга відповідь:
Це буде досить довгим. Я пропоную каву. Якщо у вас немає часу / схильності прочитати все, ви можете перейти до "Заключні зауваження".
Практично можливо (ні):
На жаль, Apple вилучила вихідний код для занадто багато необхідних KEXT і бінарних файлів Дарвіна, щоб зробити компіляцію Дарвінської ОС чисто з джерела можливою. Це технічно все-таки можливо (ви можете написати джерело самостійно, щоб зафіксувати його належним чином), але у мене просто немає часу, навичок чи схильності для цього (і я сумніваюся, що громада фінансування натовпу була б дуже зацікавлена).
Не дивно, що ключовим моментом став випуск Darwin 10, який привіз xnu в x86_64-land. Більшість необхідних джерел були раніше, але були лише x86. З часом ідеться, що сенс "Open Source" від Apple перейшов до "Open Source лише для апаратних засобів Apple", оскільки KEXTs Apple зараз є загальновиробничим, тому навіть якщо ви зможете все покращити і працює (див. нижче), ви все ще обмежилися обладнанням Apple.
Технічно можливо (Так):
Однак все не втрачено. Посібник з LFS дуже корисний, і, безумовно, всі необхідні налаштування можна проводити без фактичної побудови ОС Дарвіна. Крім того, представлені кроки дають вам майже точну дорожню карту шляху вперед, за вирахуванням ядра, KEXT та завантажувача. Мені все ж вдалося вирішити проблему завантажувача (принаймні, для апаратних засобів Apple).
Якщо вас цікавить, ось повний огляд того, що вам доведеться зробити:
- Видаліть розділ (бажано 8 Гб або більше) на диску (внутрішній чи зовнішній - не має значення) та відформатуйте його як Mac OS Extended (Journaled) (HFS +).
Переконайтесь, що у нього є таблиця розділів GUID (GPT), і що при цьому у вас є розділ EFI. Найпростіший спосіб зробити це через Disk Utility 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 # Make sure you still have $DFS defined; if not, redefine it.
chmod -v a+wt "$DFS"/sources
Створіть каталог інструментів і зробіть до нього символьне посилання, щоб ми змогли пізніше його легко додати до $ PATH (все ще root
до речі):
mkdir -v "$DFS"/tools
ln -sv "$DFS"/tools /
logout # Leave root
Завантажте джерело всіх необхідних пакетів. Це, звичайно, там, де ти застряєш. Усього необхідного немає. (До речі, я все binutils
одно віддаю перевагу GNU .)
Якщо припустити, що ви можете фактично завантажити всі необхідні, натисніть на.
Створіть непривілейованого користувача спеціально для DFS (запропонованого LFS):
sudo dscl . -create /Users/lfs
sudo dscl . -create /Users/lfs UserShell /bin/bash
sudo dscl . -create /Users/lfs RealName "LFS DFS"
sudo dscl . -create /Users/lfs UniqueID "2070" # whatever you like
sudo dscl . -create /Users/lfs PrimaryGroupID 20 # Default 'staff'
sudo dscl . -create /Users/lfs NFSHomeDirectory /Users/lfs
sudo dscl . -passwd /Users/lfs dfs # Again to taste.
Зауважте, що ви повинні зробити homedir нового користувача вручну на Mac:
sudo mkdir /Users/lfs
sudo chown -R lfs:staff /Users/lfs/
Тепер надайте новому користувачеві доступ до джерел та інструментів
sudo chown -v lfs $DFS/tools
sudo chown -v lfs $DFS/sources
Увійти:
su - lfs
Password: dfs
Виконайте таку команду для очищення середовища (від LFS):
cat > ~/.bash_profile << "EOF"
echo "Entering clean environment…"
exec env -i HOME=$HOME TERM=$TERM PS1='\u:\w\$ ' /bin/bash
EOF
Тепер запустіть таку команду (див. LFS про те, що вона робить, якщо ви не впевнені):
cat > ~/.bashrc << "EOF"
set +h
umask 022
DFS=/Volumes/*DarwinOS* # As previously
LC_ALL=POSIX
LFS_TGT=$(uname -m)-dfs-darwin1242 # Look inside gcc/configure for possibilities!
PATH=/tools/bin:/bin:/usr/bin # Note symlink from before
export LFS LC_ALL LFS_TGT PATH
echo ".bashrc script complete. Environment is ready."
EOF
GCC /configure
досить гнучкі. Спробуйте зв'язати *-
шаблон або просто запустіть, gcc -v
щоб побачити, як налаштована ваша хост-машина, і скопіюйте це.
- Тепер вийдіть із системи lfs та увійдіть назад. Тепер у вас повинно бути чисте середовище.
- Відтепер усе відбувається всередині користувача lfs. Ви помітите, що я трохи лінувався перетворювати лише половину символів "LFS" в символи "DFS". Вибачте з цього приводу, але ви отримаєте ідею.
Гаразд до гіпотетичного розділу.
Звідси вже досить добре буде стандартна процедура LFS: Витягайте джерела, будуйте, встановлюйте, тестуйте, видаляйте джерела. Зверніть увагу, що два пропуски бінутилів, GCC та Glibc все ще необхідні, Але ВАМ У вас також є робоча копія libc++.1.dylib
- і вам потрібно буде зробити це також через 2 проходи. Щоб дізнатися більше, ви можете ознайомитися на сторінці libcxx проекту LLVM . Після компіляції ви можете розмістити його /usr/lib
. Вам потрібно буде скласти та встановити ядро xnu ( для того, як це зробити, є декілька навчальних посібників у Інтернеті), а потім встановити KEXT. Навіть якщо всі необхідні KEXT були доступні, вам все одно потрібно буде вкласти їх в .kext пакет вручну. Знову є навчальні посібники щодо того, як вручну виготовити KEXT у командному рядку.
Останній біт робить систему завантажувальною. Для цього слід виконати таку команду:
"$DFS/usr/sbin/bless" --folder "$MOUNT/System/Library/CoreServices" --bootefi --verbose
Насправді місце для благословення насправді не має значення. Ця папка просто стандарт Apple.
У будь-якому випадку, якщо припустити, що ядро та KEXT знаходилися в потрібних місцях, у вас були належні копії dyld
, launchd
і т. Д. І boot.efi
працювали правильно, система повинна працювати і завантажуватися!
Зверніть увагу, якщо ви дійсно хотіли, щоб ви могли запустити фальшивку launchd
- це лише сценарій для запуску баш-підказки - ось що робить PureDarwin Nano .
Знову ж , всі засоби, напишіть кексти і бінарники себе , якщо вам подобається - це це технічно можливо. Просто зателефонуйте мені, коли закінчите.
З Бінарними чітами: Напевно, але також не законно (не перевірено)
Отже, чому ви не можете просто зірвати бінарні файли, KEXT та потрібні файли з Mountain Lion, не благословивши гучність і піти? Ну, напевно, можна. Але для цього вам також потрібна ліцензія. Крім того, якщо ви це зробите, ви в основному зробили копію Гірського Лева. Хіба це не поруч із пунктом?
З бінарними кодами для загального обладнання: Як зазначено вище (неперевірене)
Це в значній мірі є проект OSx86. Знову ж таки, ви майже зараз стикаєтеся з юридичними питаннями. Немає сумніву, що ці два останні методи безумовно можливі - факт того, що ви можете запустити Mountain Lion на універсальному апаратному забезпеченні, є доказом цього - але вся суть у цьому полягала в тому, щоб мати можливість законно скласти вашу власну ОС Дарвін з джерела.
Бічна примітка
Можливо, ви помітили, що я навмисно уникав нічого 32-розрядного. У світі, де кожна основна ОС доступна у 64-розрядному варіанті, збирати 32-бітну не багато. Apple насправді надала дискові зображення Дарвіна (аж до Дарвіна 9) тут . Вони прекрасно працювали на моєму вікні Windows.
Заключні зауваження
Я думаю, наприкінці дня люди не купують Mac для Дарвіна, вони купують Mac для Aqua. Як результат, підтримка Дарвіна як окремого продукту з відкритим кодом поступово зменшувалася до того, що це насправді лише жест жесту до спільноти з відкритим кодом. Інший злегка іронічний факт полягає в тому, що для того, щоб дізнатися про багато з цього, вам доведеться перейти прямо до проекту OSx86, який не є точно санкціонованим (якщо сказати це сміливо). Навіть тоді навколо не так багато інформації. PureDarwin - відмінне місце для початку, а книга Джонатана Левіна - неоціненна довідка для всіх речей xnu.
Це був надзвичайно навчальний рік роботи, і я майже такий же щасливий, що знаю, як це зробити, як і справді це роблю. Мені доведеться припинити роботу над ним на якомусь етапі, хоча зараз є час. Як остаточний безрезультатний вигук на Apple, чи було б надто багато просити мати ще одну складову Дарвіна, коли ви випустите Mavericks?