2010-05-10 10 views
25

मैं x86 पीसी कंप्यूटर के लिए एक नया ऑपरेटिंग सिस्टम बनाना चाहता हूं। मैं इसे 64-बिट होना चाहता हूं लेकिन संभवतः 32-बिट के रूप में भी चलाता हूं।आधुनिक पीसी कंप्यूटर के लिए अपनी खुद की x86 ऑपरेटिंग सिस्टम कैसे बनाएं

बातें किस प्रकार आप पहली बार पर काम शुरू करते हैं:

मैं सवाल इस प्रकार की है? मुझे लगता है कि अपना खुद का ऑपरेटिंग सिस्टम लिखने में कहां से शुरू करना है, मुझे एक मुश्किल विषय लगता है, इसलिए मुझे आपके इनपुट में दिलचस्पी है।

आम तौर पर अपने 32-बिट/64-बिट ऑपरेटिंग सिस्टम, या अच्छे संसाधन बनाने के बारे में कैसे जाना है जो x86 कंप्यूटरों के लिए अपना स्वयं का ऑपरेटिंग सिस्टम लिखने के बारे में उपयोगी जानकारी का उल्लेख करते हैं। मुझे परवाह नहीं है कि पुराने स्रोत तब तक हैं जब तक कि वे अभी भी प्रासंगिक और उपयोगी हैं जो मैं कर रहा हूं।

मुझे पता है कि मैं चाहता हूं कि यह कर्नेल ड्राइवरों को सीधे परिधीय हार्डवेयर तक पहुंच सके। ऑपरेटिंग सिस्टम के साथ संवाद करने वाले परिधीय हार्डवेयर को इंटरफ़ेस प्रोग्रामिंग और समझने के लिए मुझे सलाह और दस्तावेज़ीकरण कहां देखना चाहिए? मुझे यह समझने की आवश्यकता होगी कि ऑपरेटिंग सिस्टम इनपुट कैसे प्राप्त करेगा और कीबोर्ड, चूहों, कंप्यूटर मॉनीटर, हार्ड ड्राइव, यूएसबी इत्यादि के साथ बातचीत करेगा। यह शायद वह क्षेत्र है जो मुझे कम से कम पता है।

मेरे पास इंटेल निर्देश सेट मैनुअल हैं और असेंबली प्रोग्रामिंग से अधिक परिचित हो रहे हैं, इसलिए चीजों का सीपीयू पक्ष मैं सबसे ज्यादा जानता हूं।

इस बिंदु पर मैं सोच रहा हूं कि मैं अपने ऑपरेटिंग सिस्टम के भीतर लिनक्स सिस्टम कॉल को कार्यान्वित करना चाहता हूं ताकि लिनक्स पर चलने वाले प्रोग्राम मेरे ऑपरेटिंग सिस्टम पर चल सकें। मैं अपने ऑपरेटिंग सिस्टम को ईएलएफ बाइनरी प्रारूप का उपयोग करना चाहता हूं। मुझे आश्चर्य है कि इस लिनक्स संगतता को प्राप्त करने के लिए मुझे किस बाधाओं को दूर करना है। क्या सिस्टम चीजों को लागू करने वाली मुख्य चीजें हैं जो लिनक्स प्रदान करती हैं, और ईएलएफ प्रारूप का उपयोग कर रही हैं? और क्या?

मुझे लोगों के विचारों में भी रूचि है कि क्यों अपना खुद का ऑपरेटिंग सिस्टम बनाना अच्छा नहीं हो सकता है, और क्यों अपना खुद का ऑपरेटिंग सिस्टम बनाना एक अच्छा विचार है।

किसी भी इनपुट के लिए धन्यवाद।

+2

http://stackoverflow.com/questions/1224617/how-can-i-build-a-small-operating-system-on-an-old-desktop-computer –

+7

के समान नहीं है यह देखना अच्छा नहीं है "डॉन" यह भी कोशिश नहीं है कि यह बहुत मुश्किल है! " जवाब। –

+2

यदि आप प्रारंभ करने के लिए कुछ कोड ढूंढ रहे हैं, तो [यह न्यूनतम ओएस] देखें (http://stackoverflow.com/a/6143888/309483)। –

उत्तर

13

आप शायद इसे शुरू करने के लिए वर्चुअल मशीन के अंदर चलाना चाहते हैं। यह एक पिटा है जो वास्तविक हार्डवेयर पर एक ओएस विकसित करने की कोशिश कर रहा है (निरंतर रिबूटिंग और डिबगिंग-ओवर-सीरियल-केबल के साथ)।

एक वीएम के अंदर आपको आमतौर पर हार्डवेयर का एक सरल (और अपेक्षाकृत मानकीकृत) सेट मिला है जो समर्थन के लिए भी प्रारंभिक विकास को कम कर सकता है। विशेष रूप से, यदि आप किसी और को अपना ओएस दिखाना चाहते हैं तो आप उन्हें एक .vhd फ़ाइल दें और उचित रूप से आत्मविश्वास रखें कि यदि यह आपके लिए काम करता है तो यह उनके लिए भी काम करेगा।

आप कुछ ऐसा शुरू करना भी चाहेंगे जो पहले से ही & चल रहा है (उदाहरण के लिए, माइक्रोसॉफ्ट के Singularity बहुत साफ है)। इससे आपको सभी उबाऊ बूट लोडर और मूल डिवाइस ड्राइवरों को रास्ते से बाहर करने दिया जाएगा और आप "मांसपेशियों" सामानों को और अधिक तेज़ी से प्राप्त कर सकते हैं।

+1

बहुत बढ़िया।एक emulator जैसे bochs http://bochs.sourceforge.net/? – mudge

+1

बोच ओएस देवताओं के बीच काफी लोकप्रिय है, हाँ। वीएमवेयर, वर्चुअल पीसी और वर्चुअलबॉक्स भी पर्याप्त होंगे (हालांकि बोच को ओएस डिबगिंग के लिए बहुत अच्छा समर्थन है) –

+0

मुझे क्यूमु को बोच के लिए तेज़ और अधिक आसानी से लिखित विकल्प मिल गया है। Bochs या तो रन टाइम पर कॉन्फ़िगर किया गया है (परेशान अगर आप इसे बहुत अधिक चलाते हैं, जैसे प्रत्येक अपडेट के बाद) या कॉन्फ़िगरेशन फ़ाइल के साथ। व्यक्तिगत रूप से, मुझे कॉन्फ़िगरेशन फ़ाइलों का उपयोग करना पसंद नहीं है। आपको अधिक डीबग जानकारी मिलती है, खासकर यदि आप इसे अतिरिक्त डिबगिंग सक्षम के साथ स्वयं बनाते हैं। दूसरी ओर, क्यूमू को कॉमांड लाइन से कॉन्फ़िगर किया जा सकता है। इसके अलावा बोच एक एमुलेटर है, जबकि क्यूमु एक जेआईटी-आधारित आभासी मशीन है। यह किसी भी तरह का ट्रेडऑफ है। – Tyler

8

आप इस पुस्तक के लिए इच्छुक हो जाएगा:

alt text http://ecx.images-amazon.com/images/I/5169V5J687L._SL500_AA300_.jpg

+0

मैं सहमत हूं। मैं लिनक्स के लिए कुछ कर्नेल ड्राइवरों (नेट पर ट्यूटोरियल, नेट-कोड) के लिए कुछ कर्नेल ड्राइवर लिखने की भी सिफारिश करता हूं, ताकि आप बड़ी संख्या में प्रयासों का स्वाद प्राप्त कर सकें ... – tucuxi

+0

तीसरे संस्करण को बेहतर प्राप्त करें। ऑपरेटिंग सिस्टम डिजाइन और कार्यान्वयन (3 संस्करण) – limitcracker

4

आप वर्णनकर्ता तालिकाओं के कई प्रकार 32-बिट मोड सक्षम करने के लिए लागू करने के लिए होगा। बहु-थ्रेडिंग को सक्षम करना एक आसान काम नहीं है और लगभग निश्चित रूप से एक शर्त होगी। आप फ्लॉपी छवि या जो भी आप वर्तमान में उपयोग कर रहे हैं, उसे पाने के लिए जल्दी ही फ़ाइल सिस्टम समर्थन विकसित करना चाहते हैं।

मुझे यकीन है कि आप पिछले http://wiki.osdev.org/Main_Page में इस वेबसाइट पर आएंगे लेकिन इसमें बहुत सारे लेख हैं।

आप इस पुस्तक को विकास के चरण के लिए उपयोगी भी पा सकते हैं: The Indispensable PC Hardware Book यह बहुत विस्तार से है और इसमें बहुत सारे आरेख हैं, साथ ही साथ कुछ कोड स्निपेट भी हैं।

6

मैं पहले एक छोटे ओएस जैसे Minix1 का अध्ययन करने की सिफारिश करता हूं जो शैक्षणिक उद्देश्य या Minix3 के लिए बनाया गया था जो POSIX अनुपालन है।

20

यह बेहतर है कि आप Linux 0.01 स्रोत कोड पर नज़र डालें। यह ओएस का पहला संस्करण है। यह बहुत ही सरल और जानकारीपूर्ण है। यह

1

बूट लोडर से प्रारंभ करें, पीसीआई बस स्कैनिंग, एपीआईसी जैसे विभिन्न चिप्स शुरू करने और संरक्षित मोड में स्विच करने के बारे में जानें, मेमोरी मैप प्राप्त करने के बारे में जानें।

एक आपके पास कर्नेल लोड होने की शुरुआत है, स्क्रीन पर आउटपुट करने के लिए दिनचर्या लिखने का प्रयास करें, कीबोर्ड से पढ़ें, एक साधारण डीबगर जा रहा है, उसके बाद एक भौतिक मेमोरी मैनेजर और फिर वर्चुअल मेमोरी मैनेजर। बाद वाले दो को लंबे समय तक नहीं छोड़ा जा सकता है, क्योंकि ऑपरेटिंग सिस्टम समेत हर कार्यक्रम को व्यवस्थित तरीके से स्मृति आवंटित करने और रिलीज करने के तरीके की आवश्यकता होती है।

1

बस एक उपन्यास सुझाव दृष्टिकोण प्रदान करने के लिए ... कोई बूट लोडर को यूएसबी या आरडब्ल्यू सीडी में चित्रित कर सकता है, फिर अपने कंप्यूटर को प्राथमिक डिवाइस के रूप में उपयोग करने के लिए निर्देशित कर सकता है। मेरे पास Vista स्थापित है और मैं बस अपने खिलौने ओएस का परीक्षण करने के लिए बस बूट लोडर और kernel.bin फ़ाइल के साथ एक यूएसबी में प्लग। अतिरिक्त फ़ाइलों या किसी भी अतिरिक्त बचत के लिए उसी डिवाइस का उपयोग करने के लिए निश्चित रहें ताकि आप अपनी हार्ड ड्राइव को भ्रष्ट न करें। जब आपके ओएस में सभी मूलभूत बातें हों तो एक जंक कंप्यूटर खरीदें, अपना ओएस इंस्टॉल करें और वहां से विस्तार करें।

1

https://github.com/rajneshrat/ratos

यह समर्थन नेटवर्किंग निम्नलिखित के साथ कम से कम ओएस है, वीएम समर्थन, बाधा समर्थन, पीसीआईघड़ी समर्थन करते हैं।

+0

मैंने उस ओएस को आजमाया नहीं। क्या आप उन लोगों के लिए मानक फ्लॉपी छवि प्रदान कर सकते हैं जो अपना स्वयं का संस्करण बनाने की कोशिश करने से पहले इसे देखना चाहते हैं? – ssh

2

यदि आप अपना खुद का ऑपरेटिंग सिस्टम विकसित करना चाहते हैं तो आपका सबसे अच्छा पहला कदम osdev फोरम (http://forum.osdev.org/) में loiter है, और उनके विकी का अच्छा पठन है: http://wiki.osdev.org/Main_Page

मैंने लोगों को केवल ज्ञानवान नहीं बल्कि अविश्वसनीय रूप से सहायक होने के लिए पाया है, वे आपके कोड स्निपेट में गलतियों को भी इंगित करेंगे!

मैंने जेम्स मोलॉय द्वारा x86 ट्यूटोरियल के साथ शुरुआत की (Google इसे मुझे इस लिंक को पोस्ट करने की अनुमति नहीं है)। आप उसके कोड से शुरू कर सकते हैं और फिर हैक, हैक, हैक :-)।

+0

ध्यान दें कि जेम्स मोलॉय का ट्यूटोरियल छोटी है। अधिक जानकारी के लिए कृपया http://wiki.osdev.org/James_Molloy's_Tutorial_Known_Bugs देखें। – glauxosdever

संबंधित मुद्दे