2015年4月19日更新:
2年後も、この分野への関心は非常に低いようです。ただし、Hackintoshコミュニティは依然として非常に活発です。つまり、xnu(Chameleonとfork)を起動できる数少ないオープンソースのApple製以外のブートローダーの1つが引き続き維持され、Yosemiteを起動できます。QEMU内でOS X Yosemiteを起動するサクセスストーリーもあります。さらに、ハンドルで行く(今のApple-採用)開発者のおかげwinocmは、我々が持っているXNUカーネルのARMポートを。彼女は私がこの分野で知っている最も活発な開発者でした。
Amit SinghのMac OS X Internalsの続編も近日公開予定です。私は通常、人々の個人的なページに言及するのは好きではありません。ただし、すべての情報を含むブログサーバーは少し信頼性が低いように見えるため、ameaijouの Twitterページの情報ボックスを参照してください。
私はAppleの開発ツールチェーンを構築することができました(セルフホストですが、「Darwin SDK」もLinuxに移植されています)。Darwin OSはまだゼロから構築できる可能性があると考えています。不足している可能性があるのは、オープンソースのKextだけです。このスペースを見て、興味をかき立てる方法を知っているなら、私に知らせてください!:)
この質問に対する短い回答:
技術的に:はい
実際:いいえ*
Binary Cheatsを使用:おそらく、しかし合法ではない(テストされていない)
汎用ハードウェア用のバイナリのチートを使用:上記(未テスト)
* Appleで働いている場合を除き(*カリフォルニアの一般的な方向で喉をきれいにする*)
より長い答え:
これはかなり長くなるでしょう。コーヒーをお勧めします。すべてを読む時間/傾向がない場合は、「結論」にスキップできます。
実質的に可能(いいえ):
悲しいことに、アップルは、ダーウィンの純粋なソースからのコンパイルを可能にするために、ダーウィンに必要なKEXTとバイナリの多くのソースコードを撤回しました。技術的にはまだ可能です(適切に修正するためにソースを自分で書くことができます)が、私はこれを行う時間、スキル、または傾向がありません(そして、群衆の資金調達コミュニティは非常に興味があるとは思いません)。
当然のことながら、重要な転換点は、xnuをx86_64-landにもたらしたDarwin 10のリリースでした。必要なソースのほとんどはそれ以前のものでしたが、x86のみでした。時間が経つにつれて、Appleの「オープンソース」の意味は「Appleのハードウェアのみのオープンソース」にシフトしているように見えます。実行(下記参照)しても、Appleハードウェアに限定されます。
技術的に可能(はい):
ただし、すべてが失われるわけではありません。LFSガイドは便利で、Darwin OSを実際にビルドしなくても、必要なすべてのセットアップを確実に実行できます。さらに、提示された手順により、カーネル、KEXT、およびブートローダーを除いた先のパスのほぼ正確なロードマップが得られます。しかし、ブートローダーの問題はなんとか解決できました(少なくともAppleハードウェアの場合)。
興味のある方は、ここであなたがしなければならないことの完全な概要があります:
- ドライブ(内部または外部-関係ありません)のパーティション(できれば8 GB以上)を消去し、Mac OS拡張(ジャーナリング)(HFS +)としてフォーマットします。
GUIDパーティションテーブル(GPT)があり、実行するときにEFIパーティションがあることを確認します。これを行う最も簡単な方法はAppleのディスクユーティリティを使用することですが、必要に応じてコマンドラインで実行できます(これを行う方法に関するチュートリアルが他の場所にあります)。重要な点は、実行distil list diskNsM
時に次の情報が正しいことです。
パーティションタイプ:Apple_HFS
OSをインストール可能:はい
読み取り専用メディア:いいえ
読み取り専用ボリューム:いいえ
ここで、LFSガイド(適応)を参照してください。
挿入(もちろん、実際のマウントポイントを使用して)へとDFS=/Volumes/DarwinOS
.bashrc
.bash_profile
ユーザーディレクトリを作成します(chown
最後に0:0にします):
sudo mkdir -v "$DFS"/usr
入力してくださいroot
:
sudo su -
sourcesディレクトリを作成し、スティッキービットを設定します。
mkdir -v "$DFS"/sources # Make sure you still have $DFS defined; if not, redefine it.
chmod -v a+wt "$DFS"/sources
toolsディレクトリを作成し、シンボリックリンクを作成して、後で簡単に$ 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.
Macで新しいユーザーのhomedirを手動で作成する必要があることに注意してください。
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
は非常に柔軟です。*-
パターンをgrepしてみるgcc -v
か、ホストマシンがどのように構成されているかを確認してコピーするだけです。
- lfsユーザーからログアウトし、再度ログインします。これで、クリーンな環境ができました。
- これ以降はすべて、lfsユーザーの内部で行われます。'LFS'シンボルの半分のみを 'DFS'シンボルに変換することに少し怠けていたことにお気づきでしょう。申し訳ありませんが、アイデアは得られます。
さて、仮説セクションに移りましょう。
ここからは、ソースの抽出、ビルド、インストール、テスト、ソースの削除など、標準のLFS手順になります。binutils、GCC、およびGlibcの2つのパスがまだ必要であることに注意してくださいlibc++.1.dylib
。LLVMプロジェクトのlibcxxページで詳細を確認できます。コンパイルしたら、に入れることができます/usr/lib
。xnuカーネルをコンパイルしてインストールする必要があり(その方法についてはWebの周りにいくつかのチュートリアルがあります)、次にKEXTをインストールします。必要なすべてのKEXTが利用可能であったとしても、それらを手動で.kextパッケージに入れる必要があります。繰り返しになりますが、コマンドラインでKEXTを手作りする方法のチュートリアルがあります。
最後のビットは、システムを起動可能にすることです。これを行うには、次のコマンドを実行します。
"$DFS/usr/sbin/bless" --folder "$MOUNT/System/Library/CoreServices" --bootefi --verbose
実際、祝福する場所は実際には違いはありません。そのフォルダはApple標準です。
いずれにせよ、カーネルとKEXTが適切な場所にあり、、などの適切なコピーがありdyld
、正常に動作していると仮定すると、システムは動作して起動可能になります!launchd
boot.efi
本当にしたい場合は、baux launchd
プロンプトを実行するための単なるスクリプトであるfaux を実行できることに注意してください。これがPureDarwin Nanoの機能です。
それは-あなたのような場合には、再度、すべての手段によって、のkextとバイナリを自分で書きであることは技術的には可能。終わったら電話してください。
Binary Cheatsを使用:おそらく、しかし合法ではない(テストされていない)
では、なぜマウンテンライオンからバイナリ、KEXT、および必要なファイルをリッピングし、ボリュームを祝福して行くことができないのですか?まあ、おそらくできる。ただし、これを行うにはライセンスも必要です。また、これを行うと、基本的にMountain Lionのコピーを作成したことになります。そのようなことは重要ではありませんか?
汎用ハードウェア用のバイナリのチートを使用:上記(未テスト)
これはかなりある OSx86プロジェクト。繰り返しますが、すぐに法的問題に遭遇します。これらの最後の2つの方法が間違いなく可能であることは間違いありません。一般的なハードウェア上でMountain Lionを実行できるという事実は、その証拠です。
サイドノート
あなたは私が32ビットを意図的に避けていることに気づいたかもしれません。すべての主要なOSが64ビットで利用できる世界では、32ビットのOSをコンパイルする意味はあまりありません。Appleは実際にダーウィン(ダーウィン9までアップ)のディスクイメージを提供しなかったここに。彼らは私のWindowsボックスで完璧に働いた。
おわりに
結局のところ、人々はダーウィンのためにMacを買うのではなく、アクアのためにMacを買うのだと思います。その結果、スタンドアロンのオープンソース製品としてのダーウィンのサポートは徐々に減少し、実際にはオープンソースコミュニティへの単なるトークンジェスチャになっています。もう少し皮肉な事実は、これについて多くを学ぶためには、OSX86プロジェクトに直接ジャンプする必要があるということです。それでも、それほど多くの情報はありません。PureDarwinは開始するのに最適な場所であり、Jonathan Levinの本はすべてのxnuの貴重な参考資料です。
これは非常に教育的な年でしたが、実際にやっているのと同じように、それを行う方法を知ってとても幸せです。しかし、私はいくつかの段階で作業を停止する必要がありますが、今がその時です。Appleに対する最後の無益な叫びとして、Mavericksをリリースするときにダーウィンをもう1つだけビルドするように要求するのは多すぎるでしょうか?