अपडेट 19 अप्रैल 2015:
दो साल बाद भी इस क्षेत्र में बहुत कम रुचि दिखाई देती है। हालांकि, हैकिन्टोश समुदाय अभी भी अत्यधिक सक्रिय है, जिसका अर्थ है कि कुछ खुले स्रोत गैर-ऐप्पल बूटलोडर्स में से एक जो बूटिंग विष्णु (गिरगिट और कांटे) को बूट करने में सक्षम है और अभी भी योसमाइट को बूट कर सकता है। QEMU के भीतर OS X Yosemite को बूट करने वाली सफलता की कहानियां भी हैं। इसके अलावा, एक (अब Apple- नियोजित) डेवलपर के लिए धन्यवाद जो हैंडल विनोकम से जाता है , हमारे पास एक्सयू कर्नेल का एआरएम पोर्ट है । वह सबसे सक्रिय डेवलपर रही है जो मुझे इस क्षेत्र में पता है।
जल्द ही अमित सिंह के मैक ओएस एक्स इंटर्नल का सीक्वल भी आने वाला है। मैं आमतौर पर लोगों के निजी पृष्ठों का उल्लेख करना पसंद नहीं करता; हालाँकि, सभी जानकारी वाला ब्लॉग सर्वर थोड़ा अविश्वसनीय है, इसलिए ameaijou के ट्विटर पेज पर जानकारी बॉक्स देखें ।
मैं Apple के डेवलपमेंट टूलचैन (एक सेल्फ-होस्ट, हालांकि "डार्विन एसडीके" को भी लिनक्स में पोर्ट किया गया है ) बनाने में कामयाब रहा हूं । मेरा मानना है कि एक डार्विन ओएस अभी तक खरोंच से निर्माण करना संभव हो सकता है - हम सभी के बारे में याद कर सकते हैं कुछ ओपन-सोर्स केक्स हैं। इस स्थान को देखें, और यदि आप जानते हैं कि ब्याज कैसे निकालना है, तो मुझे बताएं! :)
इस प्रश्न के संक्षिप्त उत्तर:
तकनीकी रूप से: हाँ
व्यावहारिक रूप से: नहीं *
द्विआधारी धोखा देती है: संभवतः, लेकिन कानूनी (अप्रयुक्त) भी नहीं
सामान्य हार्डवेयर के लिए द्विआधारी धोखा देती है: जैसा कि ऊपर (अप्रयुक्त)
* जब तक आप Apple में काम नहीं करते (* कैलिफोर्निया की सामान्य दिशा में गला साफ करते हैं) *
दीर्घ उत्तर:
यह लंबा होने जा रहा है। मैं कॉफी का सुझाव देता हूं। यदि आपके पास यह पढ़ने के लिए समय / झुकाव नहीं है, तो आप "रिमार्क्सिंग को छोड़कर" को छोड़ सकते हैं।
व्यावहारिक रूप से संभव (नहीं):
अफसोस की बात है कि, Apple ने डार्विन के कई आवश्यक टेक्सटाइल्स और बायनेरिज़ के स्रोत कोड को वापस ले लिया है ताकि डार्विन OS का संकलन शुद्ध रूप से संभव हो सके। यह अभी भी तकनीकी रूप से संभव है (आप इसे ठीक से पैच अप करने के लिए स्रोत स्वयं लिख सकते हैं), लेकिन मेरे पास ऐसा करने के लिए समय, कौशल या झुकाव नहीं है (और मुझे संदेह है कि भीड़ फंडिंग समुदाय बहुत रुचि रखेगा)।
अप्रत्याशित रूप से प्रमुख टिपिंग बिंदु डार्विन 10 का विमोचन था, जिसने xnu को x86_64-land में लाया। अधिकांश आवश्यक स्रोत तब से पहले के आसपास थे, लेकिन केवल x86 थे। जैसे-जैसे समय बीतता जा रहा है, Apple के "Open Source" का अर्थ "Apple के हार्डवेयर पर ओपन सोर्स" में स्थानांतरित हो गया है, क्योंकि Apple के KEXTs अब बाय-एंड-लार्ज हार्डवेयर-विशिष्ट हैं, इसलिए भले ही आप सब कुछ पा सकें और चल रहा है (नीचे देखें) आप अभी भी Apple हार्डवेयर तक ही सीमित रहेंगे।
तकनीकी रूप से संभव (हाँ):
वैसे, सबकुछ नष्ट नहीं हुआ है। एलएफएस गाइड काम में नहीं आया और निश्चित रूप से सभी आवश्यक सेटअप वास्तव में डार्विन ओएस के निर्माण के बिना आयोजित किए जा सकते हैं। इसके अलावा प्रस्तुत किए गए कदम आपको मार्ग का लगभग-सटीक रोडमैप प्रदान करते हैं, कर्नेल, KEXTs और बूटलोडर को घटाते हैं। मैंने बूटलोडर समस्या को हल करने का प्रबंधन किया, हालांकि (कम से कम Apple हार्डवेयर के लिए)।
यदि आप रुचि रखते हैं, तो आपको क्या करना है, इसका पूरा अवलोकन यहां दिया गया है:
- एक ड्राइव (आंतरिक या बाहरी - कोई फर्क नहीं पड़ता) पर एक विभाजन (8 जीबी या अधिमानतः) मिटा दें और इसे मैक ओएस एक्सटेंडेड (जर्नलेड) (एचएफएस +) के रूप में प्रारूपित करें।
सुनिश्चित करें कि इसमें एक GUID विभाजन तालिका (GPT) है और जब आप ऐसा करते हैं तो इसमें EFI विभाजन होता है। ऐसा करने का सबसे आसान तरीका ऐप्पल की डिस्क उपयोगिता के माध्यम से है, लेकिन आप इसे कमांड लाइन पर कर सकते हैं यदि आप चाहते हैं (ऐसा करने के तरीके पर कहीं और ट्यूटोरियल हैं)। महत्वपूर्ण बिंदु यह है कि जब आप दौड़ते हैं distil list diskNsM
, तो निम्नलिखित जानकारी सही होनी चाहिए:
विभाजन प्रकार: Apple_HFS
ओएस स्थापित किया जा सकता है: हाँ
पढ़ें- केवल मीडिया: नहीं
केवल-पढ़ने के लिए वॉल्यूम: नहीं
अब एलएफएस गाइड (अनुकूलन के साथ) का पालन करने के लिए।
सम्मिलित करें (वास्तविक माउंट बिंदु का उपयोग करके, जाहिर है) और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
वैसे भी पसंद करता हूं ।)
आप वास्तव में आप की जरूरत है सभी को डाउनलोड कर सकते हैं मान लें, चलो पर दबाएँ।
विशेष रूप से डीएफएस (एलएफएस द्वारा सुझाए गए) के लिए एक अल्प विकसित उपयोगकर्ता बनाएं:
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.
ध्यान दें कि आपको नए उपयोगकर्ता का होमडियर स्वयं मैक पर बनाना होगा:
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
जीसीसी /configure
काफी लचीला है। *-
पैटर्न को टटोलने का प्रयास करें , या बस gcc -v
यह देखने के लिए दौड़ें कि आपकी मेजबान मशीन को कैसे कॉन्फ़िगर किया गया था और इसे कॉपी करें।
- अब lfs उपयोगकर्ता का लॉगआउट करें और वापस लॉग इन करें। अब आपके पास एक स्वच्छ वातावरण होना चाहिए।
- अब से सब कुछ lfs उपयोगकर्ता के अंदर होता है। आप देखेंगे कि मैं केवल 'LFS' प्रतीकों को 'DFS' प्रतीकों में परिवर्तित करने में थोड़ा आलसी था। इसके बारे में क्षमा करें, लेकिन आपको इसका विचार है।
ठीक है अब काल्पनिक खंड में।
यहाँ से यह बहुत अच्छी तरह से मानक एलएफएस प्रक्रिया होने जा रही है: स्रोत निकालें, निर्माण, स्थापित करें, परीक्षण करें, स्रोतों को हटाएं। ध्यान दें कि बिनुटिल्स के 2 पास, जीसीसी और ग्लिबक अभी भी आवश्यक हैं लेकिन आपको यह भी काम libc++.1.dylib
करना होगा - और आपको 2 पासों में भी ऐसा करना होगा। आप कुछ और विवरणों के लिए LLVM प्रोजेक्ट का libcxx पेज देख सकते हैं । एक बार संकलित करने के बाद, आप इसे अंदर रख सकते हैं /usr/lib
। आपको xnu कर्नेल को संकलित करने और स्थापित करने की आवश्यकता होगी ( ऐसा करने के लिए वेब के आसपास कुछ ट्यूटोरियल हैं) और फिर KEXT को स्थापित करें। यहां तक कि अगर सभी आवश्यक KEXT उपलब्ध थे, तो भी आपको उन्हें हाथ से .kext पैकेज में रखना होगा। फिर से कमांड लाइन पर KEXT को कैसे हैंड-क्राफ्ट करना है, इसके लिए ट्यूटोरियल हैं ।
अंतिम बिट सिस्टम को बूट करने योग्य बनाता है। ऐसा करने के लिए, आप निम्नलिखित कमांड चलाएंगे:
"$DFS/usr/sbin/bless" --folder "$MOUNT/System/Library/CoreServices" --bootefi --verbose
वास्तव में आशीर्वाद देने का स्थान वास्तव में फर्क नहीं करता है। वह फ़ोल्डर सिर्फ Apple-standard है।
किसी भी स्थिति में, कर्नेल और टेक्सट को सही स्थानों पर मानते हुए, आपके पास जगह आदि की उचित प्रतियां थीं dyld
, launchd
और boot.efi
सही तरीके से काम कर रहा था, सिस्टम को काम करना चाहिए और बूट करने योग्य होना चाहिए!
ध्यान दें कि यदि आप वास्तव में चाहते थे कि आप एक फॉक्स चला सकें- launchd
तो बस बैश प्रॉम्प्ट चलाने के लिए एक स्क्रिप्ट है - यही प्योरडर्विन नैनो करता है।
फिर, हर तरह से, kexts और बाइनरी खुद के बारे में अगर आप की तरह है - यह है तकनीकी रूप से संभव। जब आप काम पूरा कर लें तो मुझे फोन करें।
द्विआधारी धोखा देती है: संभवतः, लेकिन कानूनी (अप्रयुक्त) भी नहीं
तो, आप सिर्फ माउंटेन शेर से बाहर बायनेरिज़, टेक्सट और आवश्यक फ़ाइलों को चीर क्यों नहीं कर सकते हैं, वॉल्यूम को आशीर्वाद दें और जाएं? खैर, आप शायद कर सकते हैं। लेकिन ऐसा करने के लिए आपको लाइसेंस की भी आवश्यकता होती है। इसके अलावा, यदि आप ऐसा करते हैं, तो आपने मूल रूप से माउंटेन शेर की एक प्रति बनाई है। उस बिंदु के बगल में नहीं है?
सामान्य हार्डवेयर के लिए द्विआधारी धोखा देती है: जैसा कि ऊपर (अप्रयुक्त)
यह काफी है osx86 परियोजना। फिर आप बहुत सीधे कानूनी मुद्दों में भाग जाते हैं। इसमें कोई सवाल नहीं है कि ये अंतिम दो तरीके निश्चित रूप से संभव हैं - यह तथ्य कि आप जेनरिक हार्डवेयर पर माउंटेन लायन को चला सकते हैं, इस बात का प्रमाण है - लेकिन इसका पूरा बिंदु आपके डार्विन ओएस को स्रोत से वैध रूप से संकलित करने में सक्षम होना था।
पक्षीय लेख
आपने देखा होगा कि मैंने जानबूझकर कुछ भी 32-बिट से परहेज किया है। एक ऐसी दुनिया में जहाँ हर प्रमुख OS 64-बिट में उपलब्ध होता है, 32-बिट को संकलित करने में ज्यादा फायदा नहीं होता है। Apple ने वास्तव में डार्विन की डिस्क छवियां प्रदान कीं (डार्विन 9 तक) यहां । उन्होंने पूरी तरह से मेरे विंडोज बॉक्स पर काम किया।
समापन टिप्पणी
मुझे लगता है कि दिन के अंत में, लोग डार्विन के लिए मैक नहीं खरीदते हैं, वे एक्वा के लिए मैक खरीदते हैं। नतीजतन, डार्विन के लिए एक स्टैंडअलोन के रूप में समर्थन, ओपन-सोर्स उत्पाद धीरे-धीरे उस बिंदु तक गिर गया है जहां यह वास्तव में ओपन-सोर्स समुदाय के लिए एक टोकन इशारा है। दूसरा थोड़ा विडंबनापूर्ण तथ्य यह है कि इस बारे में बहुत कुछ जानने के लिए, आपको OSx86 प्रोजेक्ट में दाईं ओर कूदना होगा, जो बिल्कुल मंजूर नहीं है (इसे पूरी तरह से लगाने के लिए)। फिर भी, आसपास बहुत अधिक जानकारी नहीं है। प्योरडर्विन शुरू करने के लिए एक उत्कृष्ट स्थान है, और जोनाथन लेविन की पुस्तक सभी चीजों के लिए एक अमूल्य संदर्भ है विष्णु।
यह काम का एक अत्यंत शैक्षिक वर्ष रहा है, और मैं यह जानकर बहुत खुश हूं कि इसे कैसे करना है क्योंकि मैं वास्तव में इसे कर रहा हूं। मैं उस समय कुछ काम करना बंद करने जा रहा हूं, हालांकि अब वह समय है। एक अंतिम निरर्थक के रूप में Apple के लिए चिल्लाते हैं, क्या डार्विन के सिर्फ एक और निर्माण के लिए पूछना बहुत ज्यादा होगा जब आप टावर्स जारी करेंगे?