क्या लिनक्स कर्नेल को अकेले स्थापित करना संभव है?


45

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

ओह और मैंने देखा कि बहुत सारे उत्तर कुछ न्यूनतम लिनक्स के एक निश्चित वितरण का सुझाव देते हैं। मुझे शायद कहना चाहिए था कि मैं एक न्यूनतम या नंगे हड्डियों लिनक्स स्थापित करने के लिए नहीं देख रहा हूँ। यह प्रश्न विशुद्ध रूप से सैद्धांतिक है। फिर भी, मैं वास्तव में सभी उत्तरों की सराहना करता हूं, और उन्हें तुरंत संदर्भित करूंगा, अगर कभी मैं वास्तव में व्यक्तिगत लिनक्स स्थापित करना चाहता हूं।


3
"अकेले" और "जायके" से आपका क्या मतलब है? लिनक्स एक ओएस नहीं है यह एक कर्नेल है, ओएस के बिना एक कर्नेल क्या अच्छा होगा? क्या आप इसके बजाय बूट लोडर अनुक्रम का पता लगाने की कोशिश कर रहे हैं?
कालेब

3
यदि आप यह समझना चाहते हैं कि कंप्यूटर में एक कर्नेल / ओएस कैसे हो रहा है, तो यहां शुरू करने का स्थान है। बस यह सुनिश्चित करें कि वहां "नौसिखिया" सवाल न करें, वे आपको काट लेंगे, इसके बजाय एसओ से पूछें ।
फिलोमथ

3
अकेले से मेरा मतलब है कि यूजर कर्नेल, माइनस इंटरफेस और माइनस ओपनऑफिस जैसे प्रोग्राम शामिल हैं। Of जायके ’से मेरा अभिप्राय है, लिनक्स के अलग-अलग वितरण, जैसे ubuntu, redhat, debian और mandriva। मुझे लगभग पता नहीं है कि मैं किस बारे में बात कर रहा हूं। मैं कल्पना कर रहा था कि लिनक्स कर्नेल में DOS जैसी कुछ बुनियादी बैश क्षमताएं थीं। मुझे लगता है कि मेरे पास गुठली और ऑपरेटिंग सिस्टम के बारे में मेरे विचार हो सकते हैं।
सीजर

4
हाँ, आप उन्हें वास्तव में उलझाए हुए हैं :) बैश सिर्फ एक उपयोगकर्ता-भूमि कार्यक्रम है जो कर्नेल द्वारा प्रबंधित प्रक्रिया के रूप में चलता है। अपने आप में एक कर्नेल आपको अन्य चीजों को चलाने के लिए एक मंच के अलावा कुछ भी नहीं देता है। शादुर के जवाब में LFS (लिनक्स फ्रैच स्क्रैच) का सुझाव सही है। आप इस बारे में बहुत कुछ जानेंगे कि सभी अलग-अलग टुकड़े क्या हैं और क्या एक डिस्ट्रो को डिस्ट्रो बनाता है और जहां कर्नेल समाप्त होता है और उपयोगकर्ता-भूमि एक स्क्रैच सिस्टम के निर्माण से शुरू होती है।
कालेब

2
वास्तव में, डॉस के kernelपास कोई बुनियादी bashक्षमता नहीं थी। मानक उपयोगकर्ता इंटरफ़ेस शेल प्रोग्राम द्वारा प्रदान किया गया था COMMAND.COM। निकटतम आप एक नंगे कर्नेल के लिए कुछ भी उपयोगी हो सकता है कर्नेल पैरामीटर का उपयोग कर बूट करने के लिए होगा init=/bin/bash(एक न्यूनतम लिनक्स डिस्क पर है)। जैसा कि उत्तर दिया गया है, यदि आपके पास केवल बूटलोडर और कर्नेल है, तो यह बहुत जल्दी बंद हो जाएगा जब यह नहीं मिलेगा init
StarNamer

जवाबों:


51

आप तकनीकी रूप से सिर्फ एक बूटलोडर और कर्नेल को अकेले स्थापित कर सकते हैं, लेकिन जैसे ही कर्नेल बूट करता है, यह "इनिट" शुरू नहीं कर पाने के बारे में शिकायत करेगा, तो यह बस वहां बैठ जाएगा और आप इसके साथ कुछ भी नहीं कर सकते।

BTW, यह बूटलोडर का एक हिस्सा है जो MBR में है। कर्नेल एक डिस्क के नियमित क्षेत्र पर कहीं बैठता है। बूटलोडर को यह जानने के लिए कॉन्फ़िगर किया गया है कि वह कहां है, इसलिए यह कर्नेल को लोड कर सकता है और इसे निष्पादित कर सकता है।


आप इसे एमबीआर में कैसे डालेंगे?
Cesar

प्रत्येक बूटलोडर एमबीआर में खुद को स्थापित करने के लिए एक उपकरण के साथ आता है। बूट-रिपेयर ( help.ubuntu.com/community/Boot-Repair ) जैसे मित्र उपकरण भी हैं ।
शॉन जे। गोफ

वैसे आप एक इनट्रामाफ़्स बना सकते हैं और इसे कर्नेल इमेज में एम्बेड कर सकते हैं, और फिर आपके पास एक कर्नेल इमेज फ़ाइल से पूरी तरह से काम करने की प्रणाली होगी :-)
पैट्रिक

@ ShawnJ.Goff कर्नेल initramfs प्रदान करने में सक्षम नहीं होने की शिकायत क्यों करेगा?
प्रतीक सिंघल

4
@ ps06756 यदि आपके पास इनट्रामाफ़्स हैं, तो यह कर्नेल "अकेला" नहीं है जैसा कि प्रश्न पूछा गया है। यदि initramfs में init है, तो कर्नेल शिकायत नहीं करेगा।
शॉन जे। गोफ

18

मुझे नहीं लगता कि आप वास्तव में वही समझ रहे हैं जो आप पूछ रहे हैं, लेकिन आप लिनक्स स्क्रैच प्रोजेक्ट से लिनक्स पर एक नज़र डालना चाहते हैं ।


LFS यह पता लगाने के लिए एक अच्छा विचार होगा कि न्यूनतम प्रणाली कैसे बनाई जाए। या आप MINIX को देख सकते हैं (और पुस्तक पढ़ें )। या, एक अलग परिचय (कम काम, लेकिन कम जानकारीपूर्ण) के लिए, aptitude search '?essential'डेबियन या उबंटू पर "आवश्यक" ( ) टैग किए गए पैकेज देखें और समझें कि प्रत्येक क्या करता है (नंगे न्यूनतम से थोड़ा अधिक है)।
गाइल्स का SO- बुराई से रोकना '

12

यदि आप पूछ रहे हैं कि क्या आप अन्य प्रोग्रामों का एक गुच्छा स्थापित किए बिना एक मौजूदा सिस्टम पर "कर्नेल" को बस स्थापित या अपग्रेड कर सकते हैं?

लिनक्स कर्नेल एक द्विआधारी फ़ाइल है जिसे आमतौर पर निर्देशिका vmlinuz-x.x.x-x-nameमें नाम दिया गया है boot(जो आमतौर पर हार्ड ड्राइव की शुरुआत में एक अलग छोटा विभाजन है) जहां x एक संस्करण संख्या है। "नाम" कर्नेल के लिए सिर्फ एक चुना हुआ नाम है जिसे संकलन समय पर सेट किया जा सकता है, आप इसका उपयोग यह पहचानने के लिए कर सकते हैं कि कर्नेल किस प्रकार की मशीन या वास्तुकला के लिए है।

इसे बूटलोडर द्वारा बूटटाइम पर लोड किया जाता है, GRUBजो आमतौर पर एमबीआर में बूट कोड द्वारा लगाया जाता है जो कि BIOS रोम द्वारा लगाया जाता है। एक बार लोड होने के बाद यह "खुला नहीं" या विशेष रूप से संरक्षित होता है। तो आप उस फाइल को दूसरे काम करने वाले कर्नेल से बदल सकते हैं। लेकिन, GRUBएक शांत सुविधा है जो आपको बूट करने के लिए कई कर्नेल का चयन करने देती है। तो उस सूची में अपने अतिरिक्त कर्नेल को जोड़ने के लिए यह बहुत ही स्मार्ट है, लेकिन मूल ज्ञात कार्य कर्नेल को केवल तभी रखें जब चीजें गलत हो जाएं।

लगभग सभी वितरण मेरा मानना ​​है कि एक "मॉड्यूलर" कर्नेल बनाते हैं जहां डिवाइस ड्राइवर अलग-अलग फाइलों में होते हैं। इसलिए अधिकांश कर्नेल को एक फाइल सिस्टम की आवश्यकता होती है जिसमें बूट समय पर ड्राइवर उपलब्ध होते हैं और जो कि एक "initrd" (प्रारंभिक रैम डिस्क) या "initramfs" के लिए है। GRUBस्मृति में एक स्थान पर कर्नेल को लोड करेगा, और एक अलग स्थान पर initrd, और कर्नेल पर जा कर बताएगा कि यह initrd कहां है, लिनक्स शुरू कर रहा है।

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

Initrds को संशोधित करने और बनाने के लिए उपकरण हैं। डेबियन के पास अच्छे उपकरण हैं और मुझे लगता है कि अन्य वितरण भी करते हैं।

इसलिए, यदि आप kernel.org से हाल ही में कर्नेल डाउनलोड करते हैं और इसे एक नई कर्नेल बाइनरी इमेज बनाने के लिए संकलित करते हैं, तो आपको उस कर्नेल के साथ काम करने वाले ड्राइवर्स के साथ इनरिट बनाने या अपडेट करने की आवश्यकता है। पुराने initrd काम नहीं करेगा क्योंकि ड्राइवरों को चलने वाले कर्नेल के संस्करण के साथ मेल खाना है।

Initrd फ़ाइल को initrd.img-x.x.x.x-nameकर्नेल के समान नाम दिया गया है, और कर्नेल की तरह बूट के बाद प्रतिस्थापित किया जा सकता है, और सबसे अच्छा अभ्यास आपको इंगित करता है कि आप एक ज्ञात कामकाजी initrd को तब तक नहीं हटाते हैं जब तक कि आप नहीं जानते कि आप अपने नए कर्नेल + initrd को सफलतापूर्वक बूट कर सकते हैं।

मुझे उम्मीद है कि कुछ संदर्भ प्रदान करता है।

यदि आप एक "बेयरबोंस" लिनक्स इंस्टॉल की तलाश में हैं जिसके पास कोई अतिरिक्त प्रोग्राम स्थापित नहीं है, तो मेरा पसंदीदा विकल्प हमेशा डेबियन netinstछवि को स्थापित करना रहा है । बहुत ज्यादा आपके पास कमांड लाइन टेक्स्ट कंसोल और nanoटेक्स्ट एडिटर के रूप में चलाने के लिए केवल सबसे बुनियादी उपकरण हैं ।


5

एकल निष्पादन योग्य रूटफ़ुट

पूर्ण न्यूनतम सिस्टम एक /initप्रोग्राम चलाता है जैसा कि मैंने सिंगल एप्लीकेशन लिनक्स में बताया है सुपर यूजर

मिनिमल लिनक्स लाइव

https://github.com/ivandavidov/minimal

अधिक दिलचस्प इंटरेक्टिव सिस्टम के लिए, यह एक (ज्यादातर शैक्षिक) छोटी स्क्रिप्ट है:

  • कर्नेल और बिजीबॉक्स के लिए स्रोत डाउनलोड करता है
  • उन्हें संकलित करता है
  • उनके साथ एक बूट करने योग्य 8Mb आईएसओ उत्पन्न करता है

आईएसओ तब आपको एक न्यूनतम शेल में बिजीबॉक्स के साथ छोड़ देता है।

QEMU से आप सिस्टम में आसानी से बूट कर सकते हैं।

मैंने इसे कर्नेल स्रोत निर्देशिका से चलाने की अनुमति देने के लिए इसे संशोधित किया है: https://github.com/cirosantilli/runlinux

उपयोग:

git clone https://github.com/ivandavidov/minimal
cd minimal/src
./build_minimal_linux_live.sh
# Wait.
# Install QEMU.
# minimal_linux_live.iso was generated
./qemu64.sh

और आपको नई न्यूनतम प्रणाली के साथ एक QEMU विंडो के अंदर छोड़ दिया जाएगा। बहुत बढ़िया।

चूंकि यह छोटा है, इसलिए स्रोत को पढ़ने और समझने के लिए यह एक अच्छा विकल्प है।

उबंटू 16.04 पर परीक्षण किया गया।

Buildroot

https://buildroot.org/

Makefile स्क्रिप्ट का बड़ा सेट जो प्रबंधित करता है:

  • जीसीसी क्रॉस संकलन टूलचिन
  • गिरी संकलन
  • बूटलोडर संकलन
  • रूटफुट की पीढ़ी
  • स्रोत ट्री में पैकेज डाउनलोड / बिल्ड व्यंजनों के टन हैं, जिसमें जीटीके जैसे जटिल सामान शामिल हैं। एक निर्भरता प्रणाली है।

न्यूनतम उदाहरण:

git clone git://git.buildroot.net/buildroot
cd buildroot
git checkout 2016.05
make qemu_x86_defconfig
# Can't use -jN, use `BR2_JLEVEL=2` instead.
BR2_JLEVEL=2 make
# Wait.
# cat board/qemu/x86_64/readme.txt
qemu-system-x86_64 -M pc -kernel output/images/bzImage -drive file=output/images/rootfs.ext2,if=virtio,format=raw -append root=/dev/vda -net nic,model=virtio -net user
# You are now in a shell with BusyBox utilities.

यह भी खरोंच से X11 के निर्माण के लिए व्यंजनों है: मेरे अपने लिनक्स बिल्डरोट सिस्टम पर X11 कैसे स्थापित करें?

पेशेवर सामान।

अल्पाइन लिनक्स

https://github.com/gliderlabs/docker-alpine

पैकेज मैनेजर के साथ एंबेडेड डिस्ट्रीब्यूशन जो किसी वेबसाइट से प्रीक्लेम्ड बायनेरिज़ प्रदान करता है।

यह सभी देखें


3

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

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


2
हालांकि ध्यान दें कि किसी भी प्रकार के महत्वपूर्ण उत्पादन कार्य के लिए उनके दाहिने दिमाग में कोई भी / / LFS या पॉकेटलिंक्स की सिफारिश नहीं करता है - वे सीखने के लिए अच्छे हैं कि सामान कैसे काम करता है, लेकिन एक कारण यह है कि अधिकांश वितरण टूल और फ्रंटेंड के पूर्ण सेट के साथ आते हैं। अधिकांश सामान के लिए।
शादुर

3

सामान्य उपयोगकर्ता-अंतरिक्ष टूल के बिना लिनक्स कर्नेल को स्थापित करना संभव है। यह आमतौर पर एम्बेडेड सिस्टम जैसे कि राउटर में किया जाता है। आमतौर पर, कर्नेल को रोम या फ्लैश मेमोरी से लोड किया जाता है, और इसे प्रश्न में डिवाइस के लिए अनुकूलित किया जाता है (आमतौर पर आवश्यक ड्राइवरों के साथ मॉड्यूल के रूप में लोड किए जाने के बजाय कर्नेल में संकलित किया जाता है)।

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

यह निश्चित रूप से आवश्यक नहीं है कि एक कार्यशील लिनक्स-आधारित डिवाइस होने के लिए एक शेल उपलब्ध हो, हालांकि यह विकास को बहुत आसान बना सकता है!


2

कई डिस्ट्रोस "कोर" इंस्टॉल प्रदान करते हैं। ये वो है जो तुम चाहते हो। उबंटू-न्यूनतम, डेबियन नेट-इंस्टॉल, आर्च्लिनक्स (डिफ़ॉल्ट बस कोर है) देखें।

यदि आप सीखना चाहते हैं तो अन्य उत्तर उपयोगी हैं, लेकिन ऐसा नहीं हो सकता है = p

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.