Saya telah membaca dan menjalankan Linux From Scratch (dan BLFS) dan saya bertanya-tanya, dapatkah saya mengikuti panduan ini untuk membuat Distro Darwin dengan mengganti xnu
kernel? Apakah prosesnya akan sangat berbeda dengan yang diuraikan dalam LFS?
Pemahaman saya saat ini adalah bahwa semua yang diperlukan untuk membuat sistem "Darwin" daripada "Linux" akan menjadi substitusi kernel. Apakah ini benar?
EDIT:
Menanggapi komentar pembunuh, saya akan memperbaiki pertanyaan ini. Sementara saya mencari informasi tentang topik ini secara umum, apa yang saya cari secara khusus adalah sesuatu seperti " Panduan Penciptaan Distro Darwin " seperti halnya LFS adalah " Panduan Penciptaan Distro Linux ".
Saya menghargai bahwa informasi seperti itu mungkin hanya akan datang dari orang-orang dari Puredarwin , OpenDarwin atau GNU / Darwin jadi ini adalah sesuatu yang memanggil mereka untuk meminta bantuan. Panduan " Bagaimana-Kita-Membuat-PureDarwin-Nano-Start-To-Finish " seperti LFS akan sempurna, tetapi saya tahu itu banyak bertanya.
Jawaban:
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:
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:Sekarang untuk mengikuti panduan LFS (dengan adaptasi).
Masukkan (menggunakan titik mount sebenarnya, jelas) ke dalam dan
DFS=/Volumes/DarwinOS
.bashrc
.bash_profile
Buat direktori pengguna (
chown
menjadi 0: 0 di bagian paling akhir):Masukkan
root
:Buat direktori sources dan atur bit sticky:
Buat direktori alat dan buat symlink untuk itu sehingga kita bisa menambahkannya dengan mudah ke $ PATH nanti (masih ada
root
cara):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):
Catatan Anda harus membuat homedir pengguna baru secara manual di Mac:
Sekarang beri pengguna akses baru ke sumber dan alat
Masuk:
Jalankan perintah berikut untuk membersihkan lingkungan (dari LFS):
Sekarang jalankan perintah berikut (lihat LFS untuk apa fungsinya jika Anda tidak yakin):
GCC
/configure
cukup fleksibel. Coba ambil*-
pola, atau jalankangcc -v
untuk melihat bagaimana mesin host Anda dikonfigurasi dan salin itu.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:
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 danboot.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?
sumber
Jelas, Anda telah mengakui bahwa LFS adalah untuk Linux dan Darwin sangat jauh berbeda dari LFS Linux yang diterapkan, sehingga sangat sederhana di luar upaya satu orang Anda untuk menerapkan LFS ke sistem Darwin.
Ada banyak upaya masyarakat untuk mengganti / meningkatkan sistem Darwin. sementara proyek OpenDarwin tidak banyak berhasil, tebak kode oleh Apple terlalu sulit, sementara masih ada satu proyek yang tersisa
PureDarwin : PureDarwin SourceForge
PureDarwin HomePage
Dapatkan Akun Pengembang terlebih dahulu, Ambil alat build mereka, maka Anda bisa mendapatkan langkah-langkah membuat Kernel kustom Anda sendiri.
Kernel Darwin tidak memiliki arsitektur yang sama dengan Kernel Linux, jadi, tidak dapat diganti dengan Kernel Linux, jadi Anda perlu mengkompilasinya.
Sebenarnya yang perlu Anda lakukan adalah tetap menggunakan 100% proyek PureDarwin, lalu panggil skrip berikut: Google Code - Pure Darwin Switch Kernel dengan Gambar Kernel khusus yang telah Anda buat akan baik-baik saja.
Tetapi mengenai bagaimana membangun Kernel Darwin yang berfungsi dengan baik, itu akan menjadi pertanyaan baru.
sumber