एक टूटा हुआ कर्नेल मॉड्यूल है, जिसके कारण मैं ओएस को लोड भी नहीं कर सकता, इसलिए मैं इसे हटा या ठीक नहीं कर सकता। क्या कर्नेल के मापदंडों या कुछ का उपयोग करके बूट पर इस मॉड्यूल को छोड़ना संभव है?
एक टूटा हुआ कर्नेल मॉड्यूल है, जिसके कारण मैं ओएस को लोड भी नहीं कर सकता, इसलिए मैं इसे हटा या ठीक नहीं कर सकता। क्या कर्नेल के मापदंडों या कुछ का उपयोग करके बूट पर इस मॉड्यूल को छोड़ना संभव है?
जवाबों:
पिछले उत्तर में बताए अनुसार मॉड्यूल को ब्लैकलिस्ट करना एक कर्नेल मॉड्यूल से पूरी तरह से बचने का सबसे अच्छा तरीका है। ब्लैक लिस्ट करने के अलावा, किसी मॉड्यूल को निष्क्रिय करने का कोई सामान्य तरीका नहीं है।
कुछ लिनक्स वितरण इस तरह की चीजें करने के लिए कर्नेल बूट पैरामीटर प्रदान करते हैं।
load_modules=off
udev को ऑटो-लोडिंग को छोड़ने के लिए मजबूर करता है। यह आपको लोडिंग मॉड्यूल के बिना बूट करने की अनुमति देता है, एक मॉड्यूल को ब्लैक लिस्ट करता है जो परेशानी पैदा कर रहा है, और परेशान मॉड्यूल लोडिंग के बिना सामान्य रूप से रिबूट करता है।अधिक जानकारी के लिए, कर्नेल पैरामीटर दस्तावेज देखें । विशिष्ट उप-प्रणालियों को अक्षम करने के लिए पैरामीटर हैं। उदाहरण के लिए:
nousb
कर्नेल USB समर्थन अक्षम करता हैcgroup_disable=[name]
एक विशेष नियंत्रक को निष्क्रिय करता है; हालाँकि, "मेमोरी" विशेष रूप से समर्थित एकमात्र उदाहरण हैlibata.noacpi
libata (SATA नियंत्रकों) में ACPI का उपयोग अक्षम करता है; यह कर्नेल के माध्यम से एक मॉड्यूल पैरामीटर पारित करने का एक उदाहरण हैबूट लोडर से विशिष्ट मॉड्यूल को निष्क्रिय करना संभव है, लेकिन वास्तव में डिस्ट्रो-डिपेंडेंट की तरह दिखता है।
एक तरफ, लिनक्स कर्नेल पैरामीटर दस्तावेज में कहा गया है, अगस्त 2016 तक:
module_blacklist=
[KNL] मॉड्यूल के अल्पविराम से अलग की गई सूची को लोड न करें। डिबगिंग समस्या मॉड्यूल के लिए उपयोगी है।
दूसरी ओर, जो विकल्प OpenSUSE 42.1 (लिनक्स 4.1.31) के साथ मेरे लिए काम करता है, उसे आर्क कर्नेल फोन्स में वर्णित किया गया है :
आप बूटलोडर से मॉड्यूल को ब्लैकलिस्ट भी कर सकते हैं। सीधे शब्दों में कहें
modprobe.blacklist=modname1,modname2,modname3
अपने बूटलोडर की कर्नेल लाइन, जैसा कि कर्नेल मापदंडों में वर्णित है। जब आप एक से अधिक मॉड्यूल को ब्लैकलिस्ट कर रहे हैं, तो ध्यान दें कि वे केवल कॉमा द्वारा अलग किए गए हैं। रिक्त स्थान या कुछ और संभवतः वाक्य रचना को तोड़ सकता है।
(इसे इंगित करने के लिए unix.SE पर @gertvdijk को धन्यवाद ।)
इसके अलावा उल्लेख के लायक तरीका है :
आदेश में कुछ मॉड्यूल को ग्रब कमांड लाइन का उपयोग करके कर्नेल द्वारा लोड होने से रोकने के लिए, आपको उन्हें नीचे के सिंटैक्स का उपयोग करके कर्नेल लाइन के पैरामीटर के रूप में पास करना होगा।
$module_name.blacklist=yes
मुझे नहीं पता कि उन्हें वह कहां से मिला, लेकिन अगर किसी और तरीके से असफल नहीं हुआ तो किसी अन्य तरीके की कोशिश करने के लिए निश्चित रूप से चोट नहीं पहुंचेगी।
आपको इसे /etc/modprobe.d/blacklist में जोड़ने में सक्षम होना चाहिए, या 'modenename' को ब्लैकलिस्ट करना चाहिए