कस्टम लिनक्स कर्नेल को कॉन्फ़िगर करना, संकलित करना और इंस्टॉल करना


38

मैं अपने डिस्ट्रो द्वारा प्रदान किए गए एक के अलावा अन्य कर्नेल का उपयोग करने की कोशिश करना चाहता हूं - या तो कहीं और से या मेरे द्वारा अनुकूलित के रूप में। क्या यह मुश्किल या खतरनाक है?

मैं कहाँ से प्रारम्भ करूँ?

जवाबों:


51

एक कस्टम कर्नेल का निर्माण समय लेने वाला हो सकता है - ज्यादातर कॉन्फ़िगरेशन में, चूंकि आधुनिक कंप्यूटर मिनटों के मामले में बिल्ड कर सकते हैं - लेकिन यह विशेष रूप से खतरनाक नहीं है यदि आप अपने वर्तमान, काम करने वाले कर्नेल को रखते हैं, और इसे छोड़ना सुनिश्चित करते हैं अपने बूटलोडर के माध्यम से एक विकल्प के रूप में (नीचे चरण # 6 देखें)। इस तरह, यदि आपका नया काम नहीं करता है, तो आप पुराने को रीबूट कर सकते हैं।

निम्नलिखित निर्देशों में, स्रोत पेड़ के अंदर के रास्ते फॉर्म लेते हैं [src]/whatever, जहां [src]निर्देशिका है जहां आपने स्रोत को स्थापित किया है, जैसे /usr/src/linux-3.13.3। आप शायद यह सामान करना चाहते हैं su rootक्योंकि स्रोत पेड़ को लिखने की अनुमति के मामले में सुरक्षित रहना चाहिए (इसे रूट के स्वामित्व में होना चाहिए)।

जबकि कुछ चरण वैकल्पिक हैं, आपको उन्हें वैसे भी पढ़ना चाहिए क्योंकि उनमें बाकी प्रक्रिया को समझने के लिए आवश्यक जानकारी होती है।

  1. स्रोत टारबॉल को डाउनलोड और अनपैक करें।

    ये kern.org से उपलब्ध हैं । नवीनतम पृष्ठ फ्रंट पेज पर सूचीबद्ध हैं, लेकिन यदि आप /pub/डायरेक्टरी के अंदर देखते हैं , तो आपको एक संग्रह मिलेगा जो कि संस्करण 1.0 में वापस जाएगा। जब तक आपके पास अन्यथा करने के लिए विशेष कारण नहीं है, तो आप "नवीनतम स्थिर" चुनने के लिए सबसे अच्छा है। इस लेखन के समय, यह 74 एमबी की tar.xzफ़ाइल है।

    एक बार टारबॉल डाउनलोड होने के बाद, आपको इसे कहीं अनपैक करने की आवश्यकता है। सामान्य जगह में है /usr/src। फ़ाइल को वहां रखें और:

    tar -xJf linux-X.X.X.tar.xz
    

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

    कस्टम कर्नेल के निर्माण (ज्यादातर फेडोरा / Debian / Ubuntu पर) 15+ वर्षों में, मैं वेनिला का उपयोग कर एक समस्या थी कभी नहीं किया है 1 स्रोत। ऐसा करने से वास्तव में बहुत फर्क नहीं पड़ता है, हालांकि, इस तथ्य से परे कि यदि आप पूर्ण नवीनतम कर्नेल चाहते हैं, तो आपके डिस्ट्रो ने शायद इसे अभी तक पैक नहीं किया है। तो सबसे सुरक्षित मार्ग अभी भी डिस्ट्रो पैकेज का उपयोग करना है, जिसे स्थापित करना चाहिए /usr/src मैं नवीनतम स्थिर पसंद करता हूं ताकि मैं गिनी पिग के रूप में कार्य कर पाऊं, इससे पहले कि वह डिस्ट्रोस में लुढ़क जाए :)

  2. एक बुनियादी विन्यास [वैकल्पिक] से शुरू करें।

    आपको ऐसा करने की ज़रूरत नहीं है - आप सिर्फ सही में गोता लगा सकते हैं और खरोंच से एक कॉन्फ़िगरेशन बना सकते हैं। हालाँकि, यदि आपने पहले कभी ऐसा नहीं किया है, तो बहुत परीक्षण और त्रुटि की अपेक्षा करें । इसका मतलब यह भी है कि अधिकांश विकल्पों के माध्यम से पढ़ना (सैकड़ों हैं)। एक बेहतर शर्त यह है कि यदि उपलब्ध हो तो अपने मौजूदा कॉन्फ़िगरेशन का उपयोग करें। यदि आपने एक डिस्ट्रो सोर्स पैकेज का उपयोग किया है [src]/.config, तो इसमें पहले से ही एक फ़ाइल है, इसलिए आप इसका उपयोग कर सकते हैं। अन्यथा, के लिए जाँच करें /proc/config.gz। यह 2.6 कर्नेल में जोड़ा गया एक वैकल्पिक फीचर है। यदि यह मौजूद है, तो स्रोत पेड़ के शीर्ष स्तर पर प्रतिलिपि बनाएँ और gunzip -c config.gz > .config

यदि यह मौजूद नहीं है, तो शायद यह विकल्प मॉड्यूल के रूप में कॉन्फ़िगर किया गया था। कोशिश करें sudo modprobe configs, फिर /procनिर्देशिका को config.gzफिर से जांचें ।

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

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

  1. एक .configature बनाएँ ।

    [src]/.configएक पाठ फ़ाइल है जिसका उपयोग कर्नेल को कॉन्फ़िगर करने के लिए किया जाता है। इस फ़ाइल को सीधे संपादित न करें । विकल्प बदलना अक्सर Yएक N, आदि के साथ बदलने का एक साधारण मामला नहीं है ; आमतौर पर अन्योन्याश्रितताओं और शाखाओं में बंटी संभावनाओं का एक समूह है। इसके बजाय, आप कर्नेल मेकफाइल से एक कॉन्फिग टारगेट का उपयोग करना चाहते हैं (मतलब, make _____टॉप लेवल डायरेक्टरी डायरेक्टरी से कमांड लाइन पर एंटर करें ):

    • make configसबसे बुनियादी है, लेकिन शायद अधिकांश लोगों के स्वाद के लिए नहीं। यह सवालों का एक क्रम है - बहुत सारे सवाल - और यदि आप अपना दिमाग बदलते हैं तो आपको फिर से शुरू करना होगा।

    • make oldconfigको make configछोड़कर, यदि आप पहले .configसे ही एक पिछले संस्करण से है, तो नए विकल्पों से संबंधित प्रश्नों को छोड़कर सवाल छोड़ देंगे। अभी भी उनमें से बहुत सारे हो सकते हैं और उनमें से ज्यादातर आपके लिए फिर से अप्रासंगिक होंगे, मैं इसकी सिफारिश नहीं करता हूं।

    • make menuconfigमेरी (और मुझे लगता है कि अधिकांश अन्य) पसंदीदा तरीका है। यह एक TUI इंटरफ़ेस (रंगीन मेनू जो टर्मिनल पर काम करेगा) का निर्माण और निष्पादन करता है। इसके लिए आपके पास -devस्थापित ncurses के लिए पैकेज होना चाहिए । यह काफी आत्म-व्याख्यात्मक है, सिच के अलावा जो के माध्यम से सुलभ है /; एफ 1 "मदद" वर्तमान विकल्प के लिए एक स्पष्टीकरण प्रदान करता है। make nconfigकुछ अतिरिक्त विशेषताओं के साथ एक वैकल्पिक संस्करण है, जिसमें F2 "सिमिनोफो" मेन्यूकोफिग्स एफ 1 के बराबर है।

    • make xconfigएक पूर्ण GUI इंटरफ़ेस है। इसके लिए आवश्यकता होती है qmakeऔर -devक्यूटी के लिए पैकेज को स्थापित किया जाता है, फिर से, यह एक प्रोग्राम है जिसे संकलित और बनाया गया है। यदि आप पहले इन का उपयोग नहीं कर रहे थे, तो यह एक पर्याप्त डाउनलोड हो सकता है। menuconfigजीयूआई संस्करण को पसंद करने का कारण यह है कि विकल्प पदानुक्रम पूर्व में क्रमिक स्क्रीन का उपयोग कर प्रस्तुत किए जाते हैं, लेकिन बाद में खुले समझौते जैसे होते हैं।

    पहली चीजों में से एक जो आपको (लेकिन नहीं करना है) एक "स्थानीय संस्करण" स्ट्रिंग ( सामान्य सेटअप के तहत ) को जोड़ना है । इसका कारण नीचे # 5 में उल्लिखित है।

    "भूलभुलैया" विकल्प पदानुक्रम का वर्णन करने का एक अच्छा तरीका है, और इसके साथ विस्तार से प्राप्त करना इस तरह से क्यू एंड ए के दायरे से परे है। यदि आप बैठना चाहते हैं और सब कुछ के माध्यम से जाना चाहते हैं, तो अलग घंटे सेट करें । ग्रेग क्रोहा-हार्टमैन (लिनक्स कर्नेल के लिए लंबे समय तक लीड देव) के पास कर्नेल के बारे में एक मुफ्त ऑनलाइन पुस्तक है (नीचे संदर्भ देखें) जिसमें कॉन्फ़िगरेशन के बारे में एक अध्याय है , हालांकि यह 2006 में लिखा गया था। मेरी सलाह है कि एक उचित आधार के साथ शुरू करें अपने वर्तमान डिस्ट्रो कर्नेल से (# 2 के अनुसार) और फिर इसके माध्यम से जाएं और उन सभी चीजों को अनचेक करें जिन्हें आप जानते हैं कि आपको इसकी आवश्यकता नहीं है। आप शायद "मॉड्यूल" विकल्पों में से कुछ को "अंतर्निहित" में बदलना चाहते हैं, जो हमें मेरे अगले बिंदु पर लाता है ...

  2. initramfs[वैकल्पिक] के बारे में

    एक "initramfs" एक संपीड़ित फाइलसिस्टम है जिसे कर्नेल में बनाया गया है और / या बूट समय पर लोड किया गया है। इसका प्राथमिक उद्देश्य उन मॉड्यूल को शामिल करना है जो कर्नेल को /lib/modulesरूट फाइल सिस्टम पर उन तक पहुंचने से पहले आवश्यकता होगी - उदाहरण के लिए, उस फाइल सिस्टम वाले डिवाइस के लिए ड्राइवर। डिस्ट्रोस हमेशा इन आंशिक रूप से उपयोग करते हैं क्योंकि ड्राइवर पारस्परिक रूप से असंगत हैं, और इसलिए सभी को कर्नेल में नहीं बनाया जा सकता है। इसके बजाय, वर्तमान प्रणाली के लिए उपयुक्त लोगों को अंदर से चुना जाता है initramfs

    यह अच्छी तरह से काम करता है और किसी भी तरह के नुकसान का प्रतिनिधित्व नहीं करता है, लेकिन अपने कर्नेल का निर्माण करते समय यह संभवतः एक अनावश्यक जटिलता है। 2 कैच है, अगर आप इनट्राम्राम्स का उपयोग नहीं करते हैं, तो आपको यह सुनिश्चित करने की आवश्यकता है कि आपके रूट फाइलसिस्टम (और जिस डिवाइस पर है) के लिए ड्राइवर कर्नेल में बनाए गए हैं। में menuconfig, यह एक M(= मॉड्यूल) विकल्प और *(= अंतर्निहित ) विकल्प के बीच अंतर है । यदि आपको यह अधिकार नहीं मिलता है, तो सिस्टम बूट प्रक्रिया में जल्दी विफल हो जाएगा। इसलिए, उदाहरण के लिए, यदि आपके पास SATA हार्डडिस्क और एक ext4 रूट फाइल सिस्टम है, तो आपको उन अंतर्निहित ड्राइवरों के लिए ड्राइवरों की आवश्यकता है। [अगर कोई भी किसी और चीज़ के बारे में सोच सकता है, तो उसे एक टिप्पणी छोड़नी होगी और मैं इसे यहाँ शामिल करूँगा]।

    यदि आप एक का उपयोग करना चाहते हैं initramfs, तो आपको सामान्य सेटअप में उपयुक्त विकल्पों का चयन करना होगा । कर्नेल में निर्मित एक बनाने के लिए एक कंकाल गाइड है [src]/Documentation/filesystems/ramfs-rootfs-initramfs.txt, लेकिन ध्यान दें कि डिस्ट्रोस ऐसा नहीं करते हैं; वे बाह्य gzipped cpio फ़ाइल का उपयोग करते हैं। हालाँकि, उस डॉक्टर में क्या जाना चाहिए initramfs("अंतर्विरोधों की सामग्री" देखें) की चर्चा है ।

  3. कर्नेल बनाएं और इंस्टॉल करें।

    अगला कदम आसान है। कर्नेल बनाने के लिए, बस निर्देशिका makeमें चलाएँ [src]। यदि आप एक मल्टी-कोर सिस्टम पर हैं, तो आप -j Nचीजों को गति देने के लिए जोड़ सकते हैं , जहां Nकोर की संख्या आप समर्पित करना चाहते हैं + 1. कोई testया नहीं है check। एक बार जो हो गया, आप कर सकते हैं make modules। एक तेज बॉक्स पर, यह सब 10 मिनट लगना चाहिए।

    यदि सब कुछ ठीक हो जाता है, make INSTALL_MOD_STRIP=1 modules_install। यह /lib/modulesचरण 3 में उल्लिखित "स्थानीय संस्करण" स्ट्रिंग कर्नेल के संस्करण संख्या के मिलान में एक निर्देशिका बनाएगा , यदि कोई हो। यदि आपने "स्थानीय संस्करण" स्ट्रिंग का उपयोग नहीं किया है, तो सावधान रहें यदि आपके पास पहले से ही उसी संस्करण का कर्नेल है जो आप पर निर्भर करते हैं , क्योंकि ये मॉड्यूल उन की जगह लेंगे। 3 INSTALL_MOD_STRIP=1 वैकल्पिक है, महत्व के लिए यहां देखें

    फिर आप make installकर्नेल को डिफ़ॉल्ट स्थान पर स्थापित कर सकते हैं । मेरी सिफारिश, हालांकि, यह करने के लिए है कि यह सुनिश्चित करने के लिए कि कोई मौजूदा फाइल अधिलेखित न हो। एक नज़र डालें जो [src]/arch/[ARCH]/bootनाम की एक फ़ाइल के लिए bzImage4 , जहां [ARCH]है x86अगर आप एक x86 या x86-64 मशीन (और कुछ और आप कुछ और पर हैं) पर हैं। इसमें कॉपी करें /bootऔर इसे कुछ और विशिष्ट और सूचनात्मक नाम दें (यह कोई फर्क नहीं पड़ता)। उसी के साथ काम करें [src]/System.map, लेकिन निम्न योजना के अनुसार उसका नाम बदलें:

    System.map-[VERSION]
    

    यहाँ, [VERSION]है बिल्कुल के रूप में ही में निर्देशिका का नाम /lib/modulesके द्वारा बनाई गईmake modules_install है, जो "स्थानीय संस्करण" स्ट्रिंग, जैसे शामिल होंगे System.map-3.13.3-mykernel

  4. GRUB 2 बूटलोडर को कॉन्फ़िगर करें।

    यदि आप grub(लिनक्स डेस्कटॉप उपयोगकर्ताओं के बहुमत) का उपयोग नहीं कर रहे हैं, यह स्पष्ट रूप से आप पर लागू नहीं होता है। आपके पास एक /etc/grub.d/40_customफ़ाइल होनी चाहिए जिसमें बहुत कुछ न हो। यदि नहीं, तो इसे रूट के स्वामित्व में बनाएं और chmod 755(इसे निष्पादन योग्य होना चाहिए)। उस जोड़ने के लिए:

    menuentry 'My new kernel, or whatever' {
        set root='hd0,1'
        linux /boot/[name-of-kernel] root=/dev/sda1 [other kernel options]
    }
    

    यदि आप एक initramfs का उपयोग कर रहे हैं, तो आपके पास एक अंतिम पंक्ति भी होनी चाहिए initrd /path/to/initramfsset root=लाइन से सावधान रहें । उदाहरण का अनुमान है कि ग्रब पहली हार्ड ड्राइव (HD0,1) के पहले विभाजन पर स्थापित किया गया था। यदि आपके पास कई ड्राइव हैं, तो आप इसके बजाय विभाजन UUID का उपयोग करना चाहते हैं और उस लाइन को इसके साथ बदल सकते हैं:

        search --no-floppy --fs-uuid --set=root [the UUID of the partition]
    

    जब तक ग्रब आपके रूट फाइल सिस्टम पर नहीं होता है, यह भी लाइन root=पर निर्देश के अनुरूप होना चाहिए linux, जो आपके रूट फाइल सिस्टम (एक के साथ /sbin/initऔर /lib/modules) को इंगित करता है । उस का UUID संस्करण है root=UUID=[the UUID]

    आप /boot/grub2/grub.cfgडिवाइस नाम के बारे में एक सुराग के लिए अपने मौजूदा को देख सकते हैं । यहाँ इस तरह के grub के तहत एक संक्षिप्त गाइड 2 है। एक बार जब आप खुश होते हैं, तो दौड़ें grub2-mkconfig -o /boot/grub2/grub.cfg(लेकिन पहले अपना वर्तमान वापस करें grub.cfg)। फिर आप उस फ़ाइल को संपादित कर सकते हैं और अपनी प्रविष्टि को शीर्ष पर ले जा सकते हैं। इसमें अभी भी आपके पुराने (चल रहे) कर्नेल के लिए एक सूची होनी चाहिए, और आपके डिस्ट्रो में एक तंत्र हो सकता है जिसने नए कर्नेल के लिए एक प्रविष्टि स्वचालित रूप से दोहराई है (क्योंकि यह पाया गया था /boot; फेडोरा ऐसा करता है, इसलिए इसके साथ एक अलग शीर्षक का उपयोग करना आवश्यक menuentryहै; अच्छा विचार)। आप बाद में निकाल सकते हैं अगर सब ठीक हो जाए।

    आप बस सीधे menuentryमें भी सम्मिलित कर सकते grub.cfgहैं, लेकिन कुछ डिस्ट्रोस इसे तब अधिलेखित कर देंगे जब उनके कर्नेल को अपडेट किया जाएगा (जबकि उपयोग /etc/grub.d/इसे शामिल रखेगा)।

    बस। अब आपको केवल रिबूट करने की आवश्यकता है। अगर यह स्क्रीन आउटपुट से काम नहीं करता है, तो कोशिश करें और समस्या को कम करें, एक पुराने कर्नेल का चयन करके रिबूट करें, और चरण 3 पर वापस जाएं ( .configआपके पास पहले से उपयोग किए गए और उस को ट्विस्ट को छोड़कर )। यह प्रयासों के बीच make clean(या make mrproper) एक अच्छा विचार हो सकता है लेकिन सुनिश्चित करें कि आप [src]/.configपहले कुछ बैकअप की प्रतिलिपि बनाएँ , क्योंकि यह मिट जाएगा। यह सुनिश्चित करने में मदद करता है कि निर्माण प्रक्रिया में उपयोग की जाने वाली वस्तुएं बासी नहीं हैं।

  5. कर्नेल हेडर एट के बारे में। अल।

    एक चीज़ जो आपको करने की संभावना है, वह है सिम्लिंक ( ln -s -i) /lib/modules/X.X.X/sourceऔर /lib/modules/X.X.X/buildउस /usr/srcडायरेक्टरी में जहां स्रोत ट्री है (रखें)। यह आवश्यक है ताकि कुछ उपयोगकर्ता उपकरण (और तीसरे पक्ष के ड्राइवर इंस्टॉलर) चल रहे कर्नेल के लिए स्रोत तक पहुंच सकें।

    इससे संबंधित एक मुद्दा इन .hफ़ाइलों में है /usr/include, आदि ये बहुत धीरे-धीरे बदलते हैं, और पिछड़े संगत हैं । आपके पास दो विकल्प हैं:

    • अपने डिस्ट्रो द्वारा इस्तेमाल किए गए लोगों को छोड़ दें। यदि आप पूरे सिस्टम को नियमित रूप से अपडेट करते हैं, तो डिस्ट्रो समय-समय पर नए को स्थापित करेगा, इसलिए यह "कम से कम परेशानी" विकल्प है।

    • का उपयोग करें make headers_install

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

संदर्भ

यहाँ कुछ संसाधन हैं:

  • [src]/README भवन और स्थापित करने के लिए एक संक्षिप्त गाइड शामिल है।

  • [src]/Documentationनिर्देशिका कि विन्यास में सहायक हो सकता है जानकारी का एक बहुत कुछ शामिल है।

  • नटशेल में ग्रेग के की पुस्तक लिनक्स कर्नेल का बहुत कुछ (पीडीएफ की एक श्रृंखला के रूप में मुफ्त में उपलब्ध है) कर्नेल के निर्माण के चारों ओर घूमता है।

  • ग्रब 2 में एक ऑनलाइन मैनुअल है


1. "वेनिला" kern.org पर पाए गए मूल, अनधिकृत आधिकारिक स्रोत को संदर्भित करता है। अधिकांश डिस्ट्रोस इस वेनिला स्रोत को लेते हैं और कुछ मामूली अनुकूलन जोड़ते हैं।

2. ध्यान दें कि ऐसी परिस्थितियाँ होती हैं जिनके लिए एक इनट्रामेफ़्स की आवश्यकता होती है क्योंकि रूट फाइलसिस्टम को माउंट करने के लिए कुछ उपयोगकर्ताओं की आवश्यकता होती है - उदाहरण के लिए, यदि यह एन्क्रिप्ट किया गया है, या एक जटिल RAID सरणी में फैला है।

3. यह उन मॉड्यूल को नहीं हटाएगा जो पहले से ही हैं यदि आपने उन्हें नहीं बनाया है, हालांकि, जिसका अर्थ है कि आप बाद में अपने कॉन्फ़िगरेशन को संशोधित करके और make modules_installफिर से चलकर एक मॉड्यूल जोड़ सकते हैं । ध्यान दें कि कुछ मॉड्यूल के निर्माण के लिए कर्नेल में परिवर्तन की आवश्यकता हो सकती है, इस स्थिति में आपको कर्नेल को भी बदलना होगा। जब आप modprobeमॉड्यूल सम्मिलित करने के लिए उपयोग करने का प्रयास करेंगे तो आप बता पाएंगे ।

4. यदि आप एक गैर-मानक संपीड़न विकल्प का उपयोग करते हैं तो इस फ़ाइल को कुछ अलग नाम दिया जा सकता है। मुझे यकीन नहीं है कि सभी संभावनाएं क्या हैं।


3
Upvoted। आप स्क्रिप्ट की localmodconfigतरह और उपकरणों के उल्लेख में जोड़ना चाह सकते हैं streamline_config.pl; आपके मौजूदा सेटअप से काम करने के लिए एक उपयोगी तरीका ...
jasonwryan

1
यह संभवतः @ टेर्डन की पहल के प्रति एक विहित प्रकार के प्रश्न के लिए पर्याप्त विस्तृत है। मेटा पर उनके प्रश्न का उत्तर देने पर विचार करें। या अगर आप चाहें तो मैं कर सकता था। ऐसा लगता है कि यह इरादा हो सकता है, क्योंकि आपने वैसे भी सवाल पूछा था। बाइनरी पैकेज बनाने के लिए वितरण-विशिष्ट विधियाँ भी उपयोगी होंगी, मुझे लगता है।
फहीम मीठा

1
FYI करें: initramfsमाना जाता है कि इसका उपयोग लगभग हमेशा ही किया जाता है। उदाहरण के लिए, LVM + RAID पर रूटफुट सेट करने के लिए अक्सर एक की आवश्यकता होती है। एन्क्रिप्टेड रूट निश्चित रूप से करता है। यथोचित रूप से जटिल RAID सेटअप करते हैं। इन-गिरी भी तुच्छ सरणियों के विधानसभा ऑटो वास्तव में हटा दिया गया है ...
derobert

2
@derobert: यह सवाल है कि "लगभग हमेशा" लिनक्स एक एंटरप्राइज़ सर्वर को चलाने के लिए उपयोग किया जा रहा है। इसके बारे initramfsमें मेरा कहना है कि यदि आपको किसी एक का उपयोग करने की आवश्यकता नहीं है, तो आपको इसकी आवश्यकता नहीं है और यह प्रक्रिया को सरल करता है। वैसे भी, मैंने एन्क्रिप्टेड रूट fs, आदि के बारे में एक फुटनोट जोड़ा है
गोल्डीलॉक्स

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