बूट पर कर्नेल मॉड्यूल छोड़ें


12

एक टूटा हुआ कर्नेल मॉड्यूल है, जिसके कारण मैं ओएस को लोड भी नहीं कर सकता, इसलिए मैं इसे हटा या ठीक नहीं कर सकता। क्या कर्नेल के मापदंडों या कुछ का उपयोग करके बूट पर इस मॉड्यूल को छोड़ना संभव है?


जवाबों:


1

पिछले उत्तर में बताए अनुसार मॉड्यूल को ब्लैकलिस्ट करना एक कर्नेल मॉड्यूल से पूरी तरह से बचने का सबसे अच्छा तरीका है। ब्लैक लिस्ट करने के अलावा, किसी मॉड्यूल को निष्क्रिय करने का कोई सामान्य तरीका नहीं है।

कुछ लिनक्स वितरण इस तरह की चीजें करने के लिए कर्नेल बूट पैरामीटर प्रदान करते हैं।

  • आर्क लिनक्स में , load_modules=offudev को ऑटो-लोडिंग को छोड़ने के लिए मजबूर करता है। यह आपको लोडिंग मॉड्यूल के बिना बूट करने की अनुमति देता है, एक मॉड्यूल को ब्लैक लिस्ट करता है जो परेशानी पैदा कर रहा है, और परेशान मॉड्यूल लोडिंग के बिना सामान्य रूप से रिबूट करता है।
  • नोपोपिक्स के पास अतिरिक्त बूट मापदंडों की एक लंबी सूची है (उर्फ "चीटकोड") ; ये सामान्य कर्नेल बूट पैरामीटर और नोपेपिक्स-विशिष्ट एक्स्ट्रा का मिश्रण हैं।

अधिक जानकारी के लिए, कर्नेल पैरामीटर दस्तावेज देखें । विशिष्ट उप-प्रणालियों को अक्षम करने के लिए पैरामीटर हैं। उदाहरण के लिए:

  • nousb कर्नेल USB समर्थन अक्षम करता है
  • cgroup_disable=[name]एक विशेष नियंत्रक को निष्क्रिय करता है; हालाँकि, "मेमोरी" विशेष रूप से समर्थित एकमात्र उदाहरण है
  • libata.noacpilibata (SATA नियंत्रकों) में ACPI का उपयोग अक्षम करता है; यह कर्नेल के माध्यम से एक मॉड्यूल पैरामीटर पारित करने का एक उदाहरण है

7

बूट लोडर से विशिष्ट मॉड्यूल को निष्क्रिय करना संभव है, लेकिन वास्तव में डिस्ट्रो-डिपेंडेंट की तरह दिखता है।

एक तरफ, लिनक्स कर्नेल पैरामीटर दस्तावेज में कहा गया है, अगस्त 2016 तक:

module_blacklist= [KNL] मॉड्यूल के अल्पविराम से अलग की गई सूची को लोड न करें। डिबगिंग समस्या मॉड्यूल के लिए उपयोगी है।

दूसरी ओर, जो विकल्प OpenSUSE 42.1 (लिनक्स 4.1.31) के साथ मेरे लिए काम करता है, उसे आर्क कर्नेल फोन्स में वर्णित किया गया है  :

आप बूटलोडर से मॉड्यूल को ब्लैकलिस्ट भी कर सकते हैं। सीधे शब्दों में कहें

modprobe.blacklist=modname1,modname2,modname3

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

(इसे इंगित करने के लिए unix.SE पर @gertvdijk को धन्यवाद  ।)

इसके अलावा उल्लेख के लायक तरीका है :

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

$module_name.blacklist=yes

मुझे नहीं पता कि उन्हें वह कहां से मिला, लेकिन अगर किसी और तरीके से असफल नहीं हुआ तो किसी अन्य तरीके की कोशिश करने के लिए निश्चित रूप से चोट नहीं पहुंचेगी।


मेरा एक ही सवाल है कि "$ मॉड्यूल_name.blacklist
जॉन्सकफ

1

आपको इसे /etc/modprobe.d/blacklist में जोड़ने में सक्षम होना चाहिए, या 'modenename' को ब्लैकलिस्ट करना चाहिए


यह काम करेगा लेकिन अन्य कर्नेल (यदि उपलब्ध हो) या एक लाइवसीडी प्रणाली को बूट करने की आवश्यकता है।
क्विक
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.