Pembaruan 19 Apr 2015:
Setelah dua tahun tampaknya masih ada sedikit minat dalam bidang ini. Namun, komunitas Hackintosh masih sangat aktif, artinya salah satu dari sedikit bootloader non-Apple open source yang mampu mem-boot xnu (Chameleon dan fork) masih dipertahankan dan dapat mem-boot Yosemite. Ada juga kisah sukses mem-boot OS X Yosemite dalam QEMU. Selain itu, terima kasih kepada pengembang (sekarang dipekerjakan oleh Apple) yang menggunakan winocm handle , kami memiliki port ARM dari kernel xnu . Dia telah menjadi pengembang paling aktif yang saya tahu di bidang ini.
Ada juga sekuel dari Amit Singh untuk Mac OS X Internal yang akan segera hadir. Saya biasanya tidak suka menyebutkan halaman pribadi orang; namun, server blog dengan semua info tampaknya sedikit tidak bisa diandalkan, jadi lihat kotak info di halaman Twitter ameaijou .
Saya telah berhasil membangun toolchain pengembangan Apple (sebuah host sendiri, namun "Darwin SDK" juga telah diangkut ke Linux ). Saya percaya bahwa OS Darwin mungkin masih dapat dibangun dari awal - tentang semua yang mungkin kita lewatkan adalah beberapa Kexts open-source. Tonton ruang ini, dan jika Anda tahu cara menarik minat, beri tahu saya! :)
Jawaban singkat untuk pertanyaan ini:
Secara teknis: Ya
Praktis: Tidak *
Dengan Binary Cheats: Mungkin, tetapi juga tidak sah (tidak diuji)
Dengan Binary Cheats untuk perangkat keras umum: Seperti di atas (belum diuji)
* kecuali Anda bekerja di Apple (* membersihkan tenggorokan di arah umum California *)
Jawaban yang lebih panjang:
Ini akan menjadi agak lama. Saya sarankan kopi. Jika Anda tidak punya waktu / kecenderungan untuk membacanya semua, Anda dapat melompat ke "Keterangan Penutup".
Kemungkinan Praktis (Tidak):
Sayangnya, Apple telah menarik kode sumber untuk terlalu banyak KEXT dan binari Darwin yang diperlukan untuk membuat kompilasi dari Darwin OS murni dari sumber yang mungkin. Secara teknis masih mungkin (Anda bisa menulis sendiri sumbernya untuk menambalnya dengan benar), tetapi saya tidak punya waktu, keterampilan, atau kecenderungan untuk melakukan ini (dan saya ragu komunitas pendanaan kerumunan akan sangat tertarik).
Tidak mengherankan bahwa titik kritis utama adalah pelepasan Darwin 10, yang membawa xnu ke daratan x86_64. Sebagian besar sumber yang diperlukan ada sebelum itu, tetapi hanya x86. Seiring berjalannya waktu, makna "Open Source" Apple tampaknya telah bergeser ke "Open Source hanya pada perangkat keras Apple" karena KEXT Apple sekarang merupakan perangkat keras khusus, jadi bahkan jika Anda bisa mendapatkan semuanya dan menjalankan (lihat di bawah) Anda masih akan terbatas pada perangkat keras Apple.
Kemungkinan Secara Teknis (Ya):
Namun, semuanya tidak hilang. Panduan LFS memang berguna dan tentu saja semua pengaturan yang diperlukan dapat dilakukan tanpa benar-benar membangun OS Darwin. Lebih lanjut, langkah-langkah yang disajikan memberi Anda peta jalan yang hampir pasti dari jalan di depan, minus kernel, KEXTs dan bootloader. Saya berhasil menyelesaikan masalah bootloader (setidaknya untuk perangkat keras Apple).
Jika Anda tertarik, berikut ini ikhtisar lengkap tentang apa yang harus Anda lakukan:
- Hapus partisi (8 GB atau lebih besar lebih disukai) pada drive (internal atau eksternal - tidak masalah) dan format itu sebagai Mac OS Extended (Journaled) (HFS +).
Pastikan ia memiliki Tabel Partisi GUID (GPT) dan ketika Anda melakukannya, ia memiliki partisi EFI. Cara termudah untuk melakukan ini adalah melalui Disk Utility Apple, tetapi Anda dapat melakukannya di baris perintah jika Anda mau (ada tutorial di tempat lain tentang cara melakukan ini). Poin penting adalah bahwa ketika Anda menjalankan distil list diskNsM
, informasi berikut harus benar:
Jenis Partisi: Apple_HFS
OS Dapat Dipasang: Ya
Media Hanya Baca: Tidak
Volume Hanya Baca: Tidak
Sekarang untuk mengikuti panduan LFS (dengan adaptasi).
Masukkan (menggunakan titik mount sebenarnya, jelas) ke dalam danDFS=/Volumes/DarwinOS
.bashrc
.bash_profile
Buat direktori pengguna ( chown
menjadi 0: 0 di bagian paling akhir):
sudo mkdir -v "$DFS"/usr
Masukkan root
:
sudo su -
Buat direktori sources dan atur bit sticky:
mkdir -v "$DFS"/sources # Make sure you still have $DFS defined; if not, redefine it.
chmod -v a+wt "$DFS"/sources
Buat direktori alat dan buat symlink untuk itu sehingga kita bisa menambahkannya dengan mudah ke $ PATH nanti (masih ada root
cara):
mkdir -v "$DFS"/tools
ln -sv "$DFS"/tools /
logout # Leave root
Unduh sumber dari semua paket yang Anda inginkan. Ini, tentu saja, di mana Anda terjebak. Semua yang diperlukan tidak ada di sana. (Kebetulan, saya lebih suka GNU binutils
.)
Dengan asumsi Anda sebenarnya bisa mengunduh semua yang Anda butuhkan, mari kita lanjutkan.
Buat pengguna yang kurang mampu khusus untuk DFS (disarankan oleh 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.
Catatan Anda harus membuat homedir pengguna baru secara manual di Mac:
sudo mkdir /Users/lfs
sudo chown -R lfs:staff /Users/lfs/
Sekarang beri pengguna akses baru ke sumber dan alat
sudo chown -v lfs $DFS/tools
sudo chown -v lfs $DFS/sources
Masuk:
su - lfs
Password: dfs
Jalankan perintah berikut untuk membersihkan lingkungan (dari LFS):
cat > ~/.bash_profile << "EOF"
echo "Entering clean environment…"
exec env -i HOME=$HOME TERM=$TERM PS1='\u:\w\$ ' /bin/bash
EOF
Sekarang jalankan perintah berikut (lihat LFS untuk apa fungsinya jika Anda tidak yakin):
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
cukup fleksibel. Coba ambil *-
pola, atau jalankan gcc -v
untuk melihat bagaimana mesin host Anda dikonfigurasi dan salin itu.
- Sekarang keluarlah dari pengguna lfs dan masuk kembali. Sekarang Anda harus memiliki lingkungan yang bersih.
- Semuanya mulai sekarang terjadi di dalam pengguna lfs. Anda akan melihat bahwa saya sedikit malas hanya mengubah setengah simbol 'LFS' menjadi simbol 'DFS'. Maaf tentang itu tetapi Anda mendapatkan ide.
Oke sekarang ke bagian hipotetis.
Dari sini, cukup baik untuk menjadi prosedur LFS standar: Ekstrak sumber, bangun, pasang, uji, hapus sumber. Perhatikan 2 pass binutils, GCC dan Glibc masih diperlukan, TAPI JUGA Anda juga harus memiliki copy berfungsi libc++.1.dylib
- dan Anda harus melakukannya dalam 2 pass juga. Anda dapat melihat halaman libcxx proyek LLVM untuk lebih jelasnya. Setelah dikompilasi, Anda dapat memasukkannya /usr/lib
. Anda perlu mengkompilasi dan menginstal kernel xnu (ada beberapa tutorial di web untuk cara melakukannya) dan kemudian menginstal KEXTs. Bahkan jika semua KEXT yang diperlukan tersedia, Anda masih harus memasukkannya ke dalam paket .kext dengan tangan. Sekali lagi ada tutorial untuk bagaimana membuat kerajinan KEXT pada baris perintah.
Bit terakhir membuat sistem dapat di-boot. Untuk melakukan itu, Anda akan menjalankan perintah berikut:
"$DFS/usr/sbin/bless" --folder "$MOUNT/System/Library/CoreServices" --bootefi --verbose
Sebenarnya lokasi untuk memberkati tidak benar-benar membuat perbedaan. Folder itu hanya standar Apple.
Dalam kasus apapun, dengan asumsi kernel dan kexts berada di tempat yang tepat, Anda memiliki salinan tepat dari dyld
, launchd
, dll di tempat dan boot.efi
bekerja dengan benar, sistem harus bekerja dan bootable!
Catatan jika Anda benar-benar ingin Anda dapat menjalankan imitasi - launchd
itu hanya sebuah skrip untuk menjalankan bash prompt - itulah yang dilakukan PureDarwin Nano .
Sekali lagi, dengan segala cara, menulis kexts dan binari sendiri jika Anda suka - itu adalah teknis mungkin. Panggil saja saya setelah selesai.
Dengan Binary Cheats: Mungkin, tetapi juga tidak sah (tidak diuji)
Jadi, mengapa Anda tidak bisa hanya merobek binari, KEXT dan file yang diperlukan dari Mountain Lion, memberkati volume dan pergi? Yah, kamu mungkin bisa. Tetapi Anda juga perlu lisensi untuk melakukan ini. Juga, jika Anda melakukan ini, pada dasarnya Anda baru saja membuat salinan Mountain Lion. Bukankah itu intinya?
Dengan Binary Cheats untuk perangkat keras umum: Seperti di atas (belum teruji)
Ini cukup banyak adalah proyek OSx86. Sekali lagi Anda langsung mengalami masalah hukum. Tidak ada keraguan bahwa kedua metode terakhir ini benar-benar mungkin - fakta bahwa Anda dapat menjalankan Mountain Lion pada perangkat keras generik adalah buktinya - tetapi inti dari semua ini adalah untuk dapat mengkompilasi OS Darwin Anda dari sumber secara sah.
Catatan Samping
Anda mungkin memperhatikan bahwa saya sengaja menghindari sesuatu yang 32-bit. Di dunia di mana setiap OS utama tersedia dalam 64-bit, tidak ada gunanya mengkompilasi 32-bit. Apple memang menyediakan gambar disk Darwin (hingga Darwin 9) di sini . Mereka bekerja dengan sempurna di kotak Windows saya.
Keterangan Penutup
Saya kira pada akhirnya, orang tidak membeli Mac untuk Darwin, mereka membeli Mac untuk Aqua. Akibatnya, dukungan untuk Darwin sebagai produk open-source mandiri, secara bertahap menurun ke titik di mana itu benar-benar hanya isyarat token bagi komunitas open-source. Fakta lain yang agak ironis adalah bahwa untuk mempelajari banyak hal ini, Anda harus langsung masuk ke proyek OSx86, yang tidak sepenuhnya disetujui (untuk membuatnya dengan jelas). Meski begitu, tidak ada banyak informasi di sekitarnya. PureDarwin adalah tempat yang bagus untuk memulai, dan buku Jonathan Levin adalah referensi yang sangat berharga untuk semua hal xnu.
Ini merupakan tahun kerja yang sangat mendidik, dan saya hampir sama senangnya mengetahui cara melakukannya sama seperti saya akan benar-benar melakukannya. Saya harus berhenti bekerja pada tahap tertentu dan sekarang saatnya. Sebagai teriakan terakhir yang sia-sia bagi Apple, apakah terlalu berlebihan untuk meminta memiliki satu lagi bangunan Darwin ketika Anda melepaskan Mavericks?