Güncelleme 19 Nis 2015:
İki yıl sonra hala bu alana çok az ilgi duyuyor gibi görünüyor. Bununla birlikte, Hackintosh topluluğu hala oldukça aktiftir, yani xnu (Chameleon and forks) önyükleyebilen Apple kaynaklı olmayan açık kaynaklı birkaç açıklayıcıdan birinin hala bakımı yapılmaktadır ve Yosemite'yi başlatabilir. QEMU'da OS X Yosemite'yi başlatan başarı hikayeleri de var. Dahası, kulp winocm'unu kullanan (şu anda Apple'ın çalıştığı) geliştiricisi sayesinde, xnu çekirdeğinin bir ARM portuna sahibiz . Bu alanda bildiğim en aktif geliştirici olmuştur.
Yakında Amit Singh'in Mac OS X Internals'ın bir devamı da var . Genelde insanların kişisel sayfalarından bahsetmekten hoşlanmam; Ancak, tüm bilgileri içeren blog sunucusu biraz güvenilmez görünüyor, bu yüzden ameaijou'nun Twitter sayfasındaki bilgi kutusuna bakın.
Apple'ın geliştirme araç zincirini (bir ev sahibi, ancak "Darwin SDK" da Linux'a taşınmıştır ) geliştirmeyi başardım . Darwin'in bir işletim sisteminin sıfırdan inşa edilebileceğine inanıyorum - eksik olabileceğimiz tek şey bazı açık kaynaklı Kexts. Bu boşluğu izleyin ve ilginizi nasıl artıracağınızı biliyorsanız, bana bildirin! :)
Bu sorunun kısa cevapları:
Teknik: evet
Pratik: Hayır *
İkili Hileler ile: Muhtemelen, ama aynı zamanda yasal değil (denenmemiş)
Genel donanım için İkili Hileler ile: Yukarıdaki gibi (denenmemiş)
* Apple'da çalışmadıkça (* genel Kaliforniya yönündeki boğazı temizler *)
Daha uzun cevap:
Bu oldukça uzun sürecek. Ben kahve öneririm. Hepsini okumak için zamanınız / eğriniz yoksa, "Sonuç Notları" na atlayabilirsiniz.
Pratikte Mümkün (Hayır):
Ne yazık ki, Apple, bir Darwin işletim sisteminin derlenmesini tamamen kaynaktan mümkün kılmak için Darwin’in birçok KEXT’si ve ikili kodunun kaynak kodunu geri çekti . Hala teknik olarak mümkün (kaynağını uygun şekilde düzeltmek için kendin yazabilirsin), ama bunu yapmak için zamanım, becerim veya eğilimim yok (ve kalabalık fon topluluğunun çok ilgileneceğinden şüpheliyim).
Şaşırtıcı olmayan bir şekilde, kilit devrilme noktası, xnu x86_64 ülkesine getiren Darwin 10'un serbest bırakılmasıydı. Gerekli kaynakların çoğu ondan önceydi, ancak yalnızca x86 idi. Zaman geçtikçe, Apple’ın "Açık Kaynak" ’ın anlamı, Apple’ın KEXT’leri artık her şeyden daha iyi anlaşabilseniz bile, her geçen gün donanıma özgü donanımlara özel olduğu için" Yalnızca Apple’ın donanımındaki Açık Kaynak "’ a geçti. çalışırken (aşağıya bakın), yine de Apple donanımıyla sınırlı kalacaksınız.
Teknik Olarak Mümkün (Evet):
Ancak, hepsi kayıp değil. LFS kılavuzu oldukça kullanışlı hale geldi ve Darwin kurulumunu kurmadan gerekli tüm kurulum işlemlerini gerçekleştirebiliyorlardı. Dahası, sunulan adımlar, çekirdeği, KEXT'leri ve önyükleyiciyi izleyerek önünüzdeki yolun neredeyse kesin bir yol haritasını verir. Yine de bootloader problemini çözmeyi başardım (en azından Apple donanımı için).
İlgileniyorsanız, yapmanız gerekenler hakkında genel bir bakış:
- Bir sürücüdeki (tercihen 8 GB veya daha büyük) bir bölümü silin (dahili veya harici - önemli değil) ve Mac OS Extended (Journaled) (HFS +) olarak biçimlendirin.
Bir GUID Bölümleme Tablosunun (GPT) olduğundan ve bunu yaparken bir EFI bölümünün olduğundan emin olun. Bunu yapmanın en kolay yolu, Apple'ın Disk Yardımcı Programı'ndan geçer, ancak isterseniz komut satırından yapabilirsiniz (bunun nasıl yapılacağı hakkında başka yerlerde dersler vardır). Önemli olan nokta, çalıştırdığınızda distil list diskNsM
, aşağıdaki bilgilerin doğru olması gerektiğidir:
Bölüm Türü: Apple_HFS
İşletim Sistemi Yüklenebilir: Evet
Salt Okunur Medya: Hayır
Salt Okunur Hacmi: Hayır
Şimdi LFS rehberini takip edin (uyarlamalar ile).
Takın içine (besbelli, gerçek bağlama noktası kullanılarak) veDFS=/Volumes/DarwinOS
.bashrc
.bash_profile
Kullanıcı dizinini yapın ( chown
en sonunda 0: 0'a):
sudo mkdir -v "$DFS"/usr
Girin root
:
sudo su -
Sources dizinini yapın ve yapışkan bit'i ayarlayın:
mkdir -v "$DFS"/sources # Make sure you still have $DFS defined; if not, redefine it.
chmod -v a+wt "$DFS"/sources
Tools dizinini oluşturun ve bir link oluşturun, böylece daha sonra $ PATH öğesine kolayca ekleyebiliriz ( root
bu arada hala ):
mkdir -v "$DFS"/tools
ln -sv "$DFS"/tools /
logout # Leave root
İstediğiniz tüm paketlerin kaynağını indirin. Elbette, burada sıkışıp kaldığınız yer burasıdır. Gerekli olanların hepsi orada değil. (Bu arada, binutils
zaten GNU'ları tercih ediyorum .)
Gerçekte ihtiyacınız olan her şeyi indirebileceğinizi varsayalım, hadi basalım.
Özellikle DFS için imtiyazlı bir kullanıcı olun (LFS tarafından önerilir):
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.
Yeni kullanıcının ana sayfasını bir Mac'te elle yönlendirmeniz gerektiğini unutmayın:
sudo mkdir /Users/lfs
sudo chown -R lfs:staff /Users/lfs/
Şimdi yeni kullanıcıya kaynaklara ve araçlara erişim izni verin
sudo chown -v lfs $DFS/tools
sudo chown -v lfs $DFS/sources
Oturum aç:
su - lfs
Password: dfs
Ortamı temizlemek için aşağıdaki komutu çalıştırın (LFS'den):
cat > ~/.bash_profile << "EOF"
echo "Entering clean environment…"
exec env -i HOME=$HOME TERM=$TERM PS1='\u:\w\$ ' /bin/bash
EOF
Şimdi aşağıdaki komutu çalıştırın (emin değilseniz ne yaptığını görmek için LFS'ye bakın):
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'ler /configure
oldukça esnektir. Deseni çizmeyi deneyin *-
veya yalnızca gcc -v
ana makinenizin nasıl yapılandırıldığını görmek için çalıştırın ve kopyalayın.
- Şimdi lfs kullanıcısının oturumunu kapatıp tekrar giriş yapın. Şimdi temiz bir ortama sahip olmalısınız.
- Bundan sonra her şey lfs kullanıcısının içinde gerçekleşiyor. 'LFS' sembollerinin sadece yarısını 'DFS' sembollerine dönüştürürken biraz tembel olduğumu fark edeceksiniz. Bunun için üzgünüm ama sen anladın.
Tamam, şimdi varsayımsal bölüme.
Buradan itibaren standart LFS prosedürü olacak: Kaynakları ayıkla, inşa et, kur, test et, kaynakları sil. Binutils, GCC ve Glibc'in 2 geçişinin hala gerekli olduğunu unutmayın, ancak bununla birlikte çalışan bir kopyasına sahip libc++.1.dylib
olmalısınız - ve bunu 2 seferde de yapmanız gerekir. LLVM projesinin libcxx sayfasını birkaç detay için görebilirsiniz. Bir kez derlendiğinde, içine koyabilirsiniz /usr/lib
. Xnu çekirdeğini derlemeniz ve kurmanız gerekir (bunun nasıl yapılacağı hakkında web'de birkaç ders vardır) ve sonra KEXT'leri kurmanız gerekir. Gerekli tüm KEXT'ler mevcut olsa bile, bunları elle .kext paketine koymanız gerekir. Yine komut satırında bir KEXT'yi nasıl elde edeceğinize dair öğreticiler var .
Son bit sistemi önyüklenebilir hale getiriyor. Bunu yapmak için aşağıdaki komutu çalıştırın:
"$DFS/usr/sbin/bless" --folder "$MOUNT/System/Library/CoreServices" --bootefi --verbose
Aslında korusun yer gerçekten bir fark yaratmaz. Bu klasör sadece Apple standardında.
Her durumda, çekirdek varsayarak ve kexts doğru yerlerde, biliyor doğru kopyalarını vardı dyld
, launchd
yerinde, vs ve boot.efi
sistem çalışıyor ve önyüklenebilir olmalıdır düzgün çalışıyordu!
Not: Gerçekten size bir hata launchd
verebilecekseniz, bu sadece bir bash istemini çalıştırmak için yazılmış bir betiktir - PureDarwin Nano'nun yaptığı şeydir .
Gibi Yine, elbette, kexts ve ikilileri kendiniz yazmak - bu olduğunu teknik olarak mümkün. İşin bitince beni ara.
İkili Hileler ile: Muhtemelen, fakat aynı zamanda yasal değil (denenmemiş)
Öyleyse neden sadece ikili dosyaları, KEXT'leri ve gerekli dosyaları Mountain Lion'dan sökemiyorsun, haberi kutsa ve git. Muhtemelen yapabilirsin. Ancak, bunun için bir lisansa ihtiyacınız var. Ayrıca, bunu yaparsanız, temel olarak Mountain Lion'un bir kopyasını yaptınız. Mesele bu değil mi?
Genel donanım için İkili Hileler ile: Yukarıdaki gibi (denenmemiş)
Bu hemen hemen bir OSx86 projesi. Yine hemen hemen yasal meselelere maruz kalıyorsunuz. Bu son iki yöntemin kesinlikle mümkün olduğu konusunda hiçbir şüphe yoktur - Mountain Lion'ı genel donanımda çalıştırabileceğiniz gerçeği bunun kanıtıdır - ancak bunun amacı, kendi Darwin işletim sisteminizi yasal olarak kaynaklardan derleyebilmekti.
Kenar notu
Kasten 32-bit bir şeyden kaçındığımı fark etmiş olabilirsin. Her büyük işletim sisteminin 64-bit'de mevcut olduğu bir dünyada, 32-bit'i derlemede fazla bir nokta yoktur. Apple, burada Darwin'in disk görüntülerini (Darwin 9'a kadar) verdi . Windows kutumda mükemmel çalışıyorlardı.
Son sözler
Sanırım günün sonunda insanlar Darwin için Mac almıyorlar, Aqua için Mac alıyorlar. Sonuç olarak, Darwin'e bağımsız bir destek olarak açık kaynaklı ürün, açık kaynak topluluğuna gerçekten sadece belirteçli bir jest olduğu noktasında giderek azaldı. Hafifçe ironik olan bir başka gerçek ise, bunun hakkında bir çok şey öğrenmek için, tam olarak onaylanmayan (sıkıntıya sokmak için) doğrudan OSx86 projesine atlamanız gerektiğidir. O zaman bile, etrafta pek fazla bilgi yok. PureDarwin başlamak için mükemmel bir yer ve Jonathan Levin'in kitabı xnu'daki her şey için paha biçilmez bir referans.
Bu oldukça eğitici bir çalışma yılı oldu ve neredeyse nasıl yapacağımı bildiğim kadar mutluyum. Yine de bir aşamada çalışmayı bırakmam gerekecek ve şimdi o zaman. Son bir boşuna Apple'a bağırırken, Mavericks'i serbest bıraktığınızda yalnızca bir tane daha Darwin binası olmasını istemek çok mu fazla olurdu?