एक संभव तरीका है, हालांकि यह व्यवहार में एक लंबा समय लगेगा, जड़ों तक वापस जाना होगा। GNU का विकास 1984 में शुरू हुआ, और Minix का मूल संस्करण (जिसका उपयोग बूटस्ट्रैपिंग उद्देश्यों के लिए शुरुआती लिनक्स विकास के दौरान किया गया था) 1987 में जारी किया गया था।
यह संपूर्ण उत्तर आपके आधार पर आधारित है कि "[आप] या अन्य के पास सुरक्षा दोषों के लिए स्रोत कोड को पढ़ने और समझने की क्षमता है, इसलिए संकलन करने से पहले स्रोत कोड को पहले ही वीट कर दिया जाएगा" और आप इस तरह के विश्लेषण के परिणाम पर भरोसा कर सकते हैं । उस के बिना, यह उत्तर संभवतः बेकार से भी बदतर है, क्योंकि आप बिल्कुल भी कोई लाभ के लिए समय की एक बड़ी राशि खर्च कर रहे होंगे।
यदि आप स्रोत कोड के साथ मूल Minix पुस्तक की एक प्रति पा सकते हैं, तो आप इसे पुस्तक से टाइप कर सकते हैं। इसे संकलित करें, और फिर यह पुष्टि करने के लिए कि सिस्टम मशीन अपेक्षित बायनरी आउटपुट उत्पन्न करता है, यह सत्यापित करने के लिए एक अलग सिस्टम पर एक अलग डिकंपाइलर का उपयोग करें। (कोड, केवल 12,000 लाइनों, शायद है सी तो ऐसा करने से समय लेने वाली लेकिन अभी भी भीतर कारण अगर आप इस तरह के एक परियोजना के बारे में गंभीर हैं।) आप अपने स्वयं के disassembler लिख सकता है; यह बहुत मुश्किल नहीं होना चाहिए।
जीएनयू उपयोगिताओं के पुराने संस्करणों को पकड़ो जो आप संभवतः अपने हाथों को प्राप्त कर सकते हैं (जैसा कि उन लोगों के पास कम कोड और बाहरी पुस्तकालयों के लिए कम निर्भरता है), कोड के माध्यम से जाएं, इसे मिनिक्स के लिए बनाएं (यह कुछ काम ले सकता है, हालांकि, आपके क्या? पूरी तरह से बचने के लिए स्रोत कोड में समायोजन करना है, क्योंकि इससे पैच बाद में बहुत त्रुटि वाले हो जाएंगे) और जीएनयू टूल्स के लिए एक समान जुदा-सत्यापित चक्र से गुजरना होगा। उस बिंदु पर आप ओएस और टूलचैन पर भरोसा करते हैं, इसलिए आपको केवल पैचसेट में स्रोत कोड के माध्यम से जाने की जरूरत है (पैचसेट में कुछ भी पहले से ही भरोसा नहीं है), लेकिन आपके द्वारा उपयोग किए जाने वाले उपकरणों की तुलना में उपकरण अभी भी बहुत ही आदिम और क्रूड होंगे। टु टुडे। उदाहरण के लिए, काम करने के लिए सिस्टम टूल्स की सबसे बुनियादी कार्यक्षमता से अधिक कुछ भी उम्मीद न करें।बहुत सारे XKCD पढ़ें।
कुछ बिंदु पर, आपके पास एक सिस्टम होगा जो लिनक्स कर्नेल के शुरुआती संस्करण को संकलित कर सकता है और बूटस्ट्रैप कर सकता है, जैसे कि यह 1990 के दशक की शुरुआत में किया गया था क्योंकि लिनक्स ने हैकर्स के बीच कर्षण हासिल करना शुरू कर दिया था। मैं उस बिंदु पर लिनक्स में माइग्रेट करने का सुझाव दूंगा (लिनक्स के खिलाफ सिस्टम लाइब्रेरी और टूलचैन को फिर से बनाऊंगा, लिनक्स कर्नेल का निर्माण करूंगा, लिनक्स में बूट करूंगा और संभवतः लिनक्स के भीतर लिनक्स कर्नेल और जीएनयू टूलचैन को फिर से बनाऊंगा; अंतिम साबित होता है कि सिस्टम अब स्व- है होस्टिंग), लेकिन यह काफी हद तक आपके ऊपर है। पैच को सत्यापित करना, कर्नेल, लाइब्रेरी और बुनियादी GNU टूल को पैच करना और पुनर्निर्माण करना जब तक कि आप आधुनिक संस्करण प्राप्त न कर लें।
जब आपके पास एक विश्वसनीय बेसिक ओएस और कंपाइलर है जिसका उपयोग आधुनिक सॉफ्टवेयर बनाने के लिए किया जा सकता है। तब तक, आप उपयोगी कार्यों को करने में सक्षम प्रणाली का निर्माण करने के लिए लिनक्स से स्क्रैच गाइड का अनुसरण कर सकते हैं।
किसी भी बिंदु पर "कंपाइलर" सिस्टम को कभी भी किसी भी तरह से नेटवर्क से जोड़ा जा सकता है (एक नेटवर्क होस्ट पर वीएम के रूप में); आप कर्नेल सहित किसी भी नेटवर्क-सक्षम घटक के माध्यम से प्रवेश करने का जोखिम उठाते हैं। यदि आप एक थॉम्पसन संकलक हमले के बारे में चिंतित हैं , तो आपको यह उम्मीद करनी होगी कि किसी भी वीएम होस्ट से भी समझौता किया जा सकता है। जिस भौतिक होस्ट पर आप चीजों को संकलित कर रहे हैं उससे बायनेरिज़ को स्रोत कोड प्राप्त करने के लिए स्नीकरनेट का उपयोग करें। कम से कम आपके द्वारा उस बिंदु पर पहुंचने से पहले सिस्टम पर फ़ाइलों को प्राप्त करने में परेशानी की अपेक्षा करें जहां यूएसबी मास स्टोरेज सपोर्ट लागू किया गया था। क्या तुम सच में पागल, प्रिंट स्रोत कोड सूचियां दी गई हैं और उनको हाथ से टाइप करें (और उम्मीद है कि प्रिंटर ड्राइवर और प्रिंटर में इसी तरह के कोड नहीं है, तो उन्हें), या एक कंप्यूटर मॉनीटर पर कोड पढ़ें और इसे भौतिक रूप से अगले कंप्यूटर में टाइप करें लेकिन इससे जुड़ा नहीं है।
हां, इसमें बहुत समय लगेगा। लेकिन इस दृष्टिकोण का लाभ यह है कि प्रत्येक चरण वृद्धिशील है, जिसका अर्थ है कि दुर्भावनापूर्ण किसी चीज के लिए पर्ची करना बहुत कठिन होगा जब तक कि इसे बहुत धीरे-धीरे कई संस्करणों की अवधि में पेश नहीं किया जाता है; ऐसा इसलिए है क्योंकि प्रत्येक चरण में परिवर्तनों का सेट तुलनात्मक रूप से छोटा है और इस तरह से देखने में बहुत आसान है। चैंज के साथ पैचसेट की तुलना करें और सुनिश्चित करें कि आप यह निर्धारित कर सकते हैं कि चेंजलॉग प्रविष्टि स्रोत कोड में हर बदलाव से मेल खाती है। फिर, यह मान लेता है कि आपके पास यह क्षमता है (संभवत: किसी के माध्यम से जिस पर आप भरोसा करते हैं) यह सत्यापित करने के लिए कि इस तरह के बदलाव कोडबेस में चुपके से नहीं किए गए हैं, लेकिन यह आपको एक विश्वसनीय सिस्टम के करीब के रूप में मिलना चाहिए , केवल सॉफ्टवेयर के अलावा- फर्मवेयर दृष्टिकोण कर सकते हैं।