कर्नेल मॉड्यूल को ब्लैकलिस्ट कैसे करें?


जवाबों:


44

नोट: ब्लैक लिस्ट करना उन मॉड्यूल्स के लिए काम नहीं करेगा, जो कर्नेल इमेज में बने होते हैं (अर्थात एक अलग .koफाइल के माध्यम से लोड नहीं किए जाते हैं। ऐसे मॉड्यूल्स को डिसेबल करने का एकमात्र तरीका कर्नेल पैरामीटर (यदि उपलब्ध हो) या कर्नेल को फिर से जमा करके होता है।

/etc/modprobe.d/blacklistसिंटैक्स का उपयोग करके अपनी फ़ाइल खोलें और ड्राइवर नाम जोड़ें:

blacklist driver-name

संपादित करें: 12.10 (12.04?) के बाद के संस्करणों में फ़ाइल है /etc/modprobe.d/blacklist.conf

अपने बॉक्स को रिबूट करें और लिनक्स कर्नेल में मॉड्यूल की स्थिति दिखाने के लिए lsmod कमांड का उपयोग करें

नोट : यहाँ driver-nameआपके इच्छित ब्लैकलिस्ट ड्राइवर का नाम है। उदाहरण के लिए, यदि आप एनआईसी कार्ड ड्राइवर को निष्क्रिय करना चाहते हैं, तो आप lspci -vटर्मिनल में कमांड कमांड का उपयोग करके अपने लैन कार्ड के लिए कर्नेल ड्राइवर का नाम पा सकते हैं ।
उदाहरण के लिए मेरा आउटपुट था:

........
........ 
6: 00.0 ईथरनेट कंट्रोलर: ब्रॉडकॉम कॉरपोरेशन नेटलिंक BCM5906M फास्ट ईथरनेट पीसीआई एक्सप्रेस (संशोधित 02)
    सबसिस्टम: लेनोवो डिवाइस 3861
    झंडे: बस मास्टर, तेजी से devsel, विलंबता 0, IRQ 46
    B8000000 पर मेमोरी (64-बिट, नॉन-प्रीफेटेबल) [आकार = 64K]
    [अक्षम] पर विस्तार रोम
    क्षमताओं: 
    उपयोग में कर्नेल चालक: tg3
    कर्नेल मॉड्यूल: tg3
........
........

यहाँ, मैं देख रहा हूँ कि ड्राइवर है tg3। इसलिए आपको tg3इसके स्थान पर (या आपके ड्राइवर को) लिखना होगा driver-name

बहुत सारी जानकारी यहाँ मिल सकती है


7
मेरे मामले में ( Lubuntu 12.10), कोई /etc/modprobe.d/blacklistफ़ाइल नहीं है । एक /etc/modprobe.d/blacklist.confफाइल है
अब्दुल

1
उन्नयन के दौरान संघर्ष से बचने के लिए एक अलग फ़ाइल में उपयोगकर्ता द्वारा मॉड्यूल को ब्लैकलिस्ट किया जाना बेहतर है ( सर्वरफॉल्ट पर यह टिप्पणी देखें )।
अलेक्जेंडर पॉज़्निव

1
blacklist.confफ़ाइल मौजूद की जरूरत नहीं है। आप एक फ़ाइल my-mom-is-awesomeवहाँ रख सकते हैं और यह काम करेगा। यदि आपको कोई विशिष्ट नाम बनाना है, तो किसी विशिष्ट चीज़ को ब्लैकलिस्ट करने के लिए, जैसे blacklist-nouveauभी हो , जो भी हो , उसे पसंद करें ।
doug65536

@ doug65536 यह सवाल 7 साल पहले पोस्ट किया गया था, निश्चित रूप से चीजें बदल जाएंगी। बस आपके पास उबंटू संस्करण के साथ एक नया प्रश्न बनाएं, ताकि लोग आपकी मदद कर
सकें

@LnxSlck मैं पिछली टिप्पणियों में व्यक्त भ्रम को संबोधित कर रहा था। मुझे मदद नहीं चाहिए थी। पुरानी सामग्री को पोस्ट न करने के जुनून के साथ क्या है? बस इसे सड़ने के लिए छोड़ दें? लोग अभी भी इसे ढूंढते हैं और अन्य लोगों के वही सवाल होंगे जो मैंने संबोधित किए थे।
doug65536

28

जब आप सिंटैक्स के साथ बूट करते हैं तो आप उन्हें ग्रब कमांड लाइन (लिनक्स लाइन) पर अस्थायी रूप से ब्लैकलिस्ट कर सकते हैं

module_to_blacklist.blacklist=yes

1
यह "अस्थायी" कब तक है? अगले बूट तक?
सेठ

1
सेठ, यह केवल एक बूट के लिए अस्थायी है यदि आपने बूट के दौरान संपादित किया है। यदि आप /etc/grub.d/ स्क्रिप्ट या / etc / default / grub का उपयोग करके संपादित करते हैं, तो यह स्थायी है।
पीटर

1
जाहिरा तौर पर यह i915 के लिए काम नहीं करता है i915: unknown parameter 'blacklist' ignored:।
राफेल सिलेक

5
इस और इसमें क्या अंतर है modprobe.blacklist=module_to_blacklist?
ज़ज़

4
या कर्नेल पैरामीटर का उपयोग करें modprobe.blacklist=module_to_blacklist( man modprobeविवरण के लिए देखें)
कार्ल रिक्टर

11

कम से कम Ubuntu 16.04 LTS में मॉड्यूल को ब्लैकलिस्ट करने का दूसरा तरीका कर्नेल कमांड लाइन में निम्न पंक्ति जोड़कर है:

modprobe.blacklist=MODULE_NAME

/ Etc / modprobe सिस्टम का उपयोग करना सबसे अच्छा तरीका है, लेकिन यह एक विकल्प है जिसका उपयोग चुटकी में अपनी GRUB कमांड लाइन को बूट में संपादित करके किया जा सकता है।

इसे संपादन / आदि / डिफ़ॉल्ट / ग्रब द्वारा और GRUB_CMDLINE_LINUX_DEFAULTवैरिएबल में जोड़कर भी स्थायी बनाया जा सकता है । उदाहरण के लिए, मेरे / etc / default / grub में मेरे पास है:

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash modprobe.blacklist=nouveau"

फिर मैं दौड़ता हूं update-grub2, फिर update-initramfs -u। रिबूट के बाद, आप मॉड्यूल से मुक्त हो जाएंगे, जब तक कि बूट के बाद कुछ भी इसे लोड न करे।

यह विधि ईएल वेरिएंट (RHEL, CentOS, SciLinux) में भी काम करती है, लेकिन आपको उस डिस्ट्रो के तरीकों का उपयोग ग्रब और इनिटर्ड को अपडेट करने के लिए करना होगा।

(नोव्यू को ब्लैकलिस्ट करने की कोशिश करने वालों पर ध्यान दें: सुनिश्चित करें कि एक्स को चालू करके लोड न करें systemctl set-default multi-user.target, अन्यथा जब एक्स शुरू होता है तो यह फिर से नोव्यू लोड करेगा!)


4

हाल के रिलीज में, आपको अपनी ब्लैक लिस्ट फ़ाइल में इंस्टॉलेशन निर्देश का उपयोग करने की आवश्यकता है

install modulename /bin/false

मॉड्यूल के नाम के साथ ऊपर "modulename" बदलें। यह जबरन इसकी लोडिंग को रोकेगा।

आप modprobe.conf के लिए मैनुअल में स्थापित निर्देश के बारे में अधिक जानकारी प्राप्त कर सकते हैं

man modprobe.conf

2
यह बहुत मददगार है। यह ब्लैक लिस्ट में प्रवेश के साथ भी बदल जाता है /etc/modprobe/blacklist.conf, मॉड्यूल को अभी भी मैन्युअल रूप से लोड किया जा सकता है modprobe <module_name>install <module_name> /bin/falseविधि का उपयोग करना इस विफलता को वांछित बनाता है।
रावरबैग

3

इनमें से कोई भी समाधान 16.04 LTS पर i915.ko के लिए काम नहीं किया।

मेरे द्वारा पाया गया (गंदा) समाधान नाम बदलने का था

/lib/modules/4.4.0-22-generic/kernel/drivers/gpu/drm/i915/i915.ko
/usr/lib/xorg/modules/drivers/modesetting_drv.so
/usr/lib/xorg/modules/drivers/intel_drv.so

दुर्भाग्य से, बाहरी वीजीए स्क्रीन को अब मान्यता नहीं मिली है: {


6
आप सभी की जरूरत sudo update-initramfs -u/etc/modeprobe.d/ फ़ाइलों को संशोधित करने के बाद है
इवान ब्लैक
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.