Çekirdek modülleri nasıl kara listeye alınır?


Yanıtlar:


44

Not: kara liste çekirdek görüntüsünde yerleşik modüller için çalışmaz (yani ayrı bir .kodosya aracılığıyla yüklenmez . Bu tür modülleri devre dışı bırakmanın tek yolu bir çekirdek parametresi (varsa) veya çekirdeği yeniden derlemektir.

Sadece /etc/modprobe.d/blacklistdosyanızı açın ve aşağıdaki sözdizimini kullanarak drivername ekleyin:

blacklist driver-name

EDIT: 12.10 (12.04?) Tarihinden sonraki sürümlerde dosya /etc/modprobe.d/blacklist.conf

Kutunuzu yeniden başlatın ve Linux Çekirdeğindeki modüllerin durumunu göstermek için lsmod komutunu kullanın

Not : driver-nameİstediğiniz kara liste sürücüsünün adı. Örneğin, NIC kartı sürücüsünü devre dışı bırakmak istiyorsanız, LAN kartınızın çekirdek sürücüsünün adını lspci -vbir terminaldeki komut komutunu kullanarak bulabilirsiniz .
Örnek olarak çıktım şuydu:

........
........ 
6: 00.0 Ethernet denetleyicisi: Broadcom Corporation NetLink BCM5906M Hızlı Ethernet PCI Express (rev 02)
    Alt sistem: Lenovo Device 3861
    Bayraklar: bus master, hızlı devsel, gecikme süresi 0, IRQ 46
    B8000000’de bellek (64 bit, ön satın alınamaz) [size = 64K]
    Genişletme ROM'u [devre dışı]
    Yetenekleri: 
    Kullanılan çekirdek sürücüsü: tg3
    Çekirdek modülleri: tg3
........
........

Burada sürücüyü görüyorum tg3. bu yüzden yerine tg3(veya sürücünüzü) yazmanız gerekir driver-name.

Bilgi Bol bulunabilir burada .


7
benim durumumda ( Lubuntu 12.10), bir /etc/modprobe.d/blacklistdosya yok. Bir /etc/modprobe.d/blacklist.confdosya var
Abdull

1
Yükseltme sırasında uyuşmazlıktan kaçınmak için modülleri bir kullanıcı tarafından ayrı bir dosyada tutmak daha iyidir ( serverfault adresindeki bu yoruma bakınız ).
Alexander Pozdneev

1
blacklist.confDosya mevcut gerekmez. my-mom-is-awesomeOrada adı verilen bir dosya koyabilirsin ve işe yarayabilirdi. Belirli bir dosyayı sadece belirli bir şeyin kara listeye alınması gibi bir şey yapmak istiyorsanız, istediğiniz adı yapın blacklist-nouveau.
doug65536

@ doug65536 bu soru 7 yıl önce gönderildi, elbette işler değişecek. Sadece sahip olduğunuz Ubuntu sürümüyle yeni bir soru oluşturun, böylece insanlar size yardım edebilir
LnxSlck

@LnxSlck Önceki yorumlarda dile getirdiğim karışıklığı ele alıyordum. Yardım istemedim Eski içeriğe gönderim yapmama saplantısının sebebi nedir? Çürümeye bıraksın mı? İnsanlar hala bunu buluyorlar ve diğerleri de yönelttiğim sorularla aynı olacak.
doug65536

28

Ayrıca, sözdizimi ile önyükleme yaparken bunları geçici olarak grub komut satırında (linux satır) kara listeye alabilirsiniz.

module_to_blacklist.blacklist=yes

1
Bu "geçici" ne kadar sürecek? Bir sonraki açılışa kadar mı?
Seth,

1
Seth, önyükleme sırasında düzenlediyseniz sadece tek önyükleme için geçicidir. /Etc/grub.d/ scriptlerini veya / etc / default / grub komutunu kullanarak düzenlerseniz, kalıcı olur.
Peter,

1
Görünüşe göre bu i915 için çalışmaz: i915: unknown parameter 'blacklist' ignored.
Rafał Cieślak

5
Bu ve arasındaki fark nedir modprobe.blacklist=module_to_blacklist?
Zaz

4
ya da çekirdek parametresini kullanın modprobe.blacklist=module_to_blacklist( man modprobeayrıntılar için bakınız)
Karl Richter

11

Modülleri en az Ubuntu 16.04 LTS'de kara listeye almanın başka bir yolu da çekirdek komut satırına aşağıdaki satırı eklemektir:

modprobe.blacklist=MODULE_NAME

/ Etc / modprobe sistemini kullanmak en iyi yoldur, ancak GRUB komut satırınızı önyükleme sırasında düzenleyerek bir tutam içinde kullanılabilecek bir alternatiftir.

Bu, / etc / default / grub 'u düzenleyerek ve GRUB_CMDLINE_LINUX_DEFAULTdeğişkene ekleyerek de kalıcı hale getirilebilir . Mesela, / etc / default / grub içinde:

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash modprobe.blacklist=nouveau"

Sonra koşarım update-grub2o zaman update-initramfs -u. Bir yeniden başlatma işleminden sonra, önyüklemeden sonra hiçbir şey yüklenmediği sürece modülden kurtulacaksınız.

Bu yöntem aynı zamanda EL varyantlarında da çalışır (RHEL, CentOS, SciLinux), ancak grub ve initrd'i güncellemek için bu distro yöntemlerini kullanmanız gerekir.

(Nouveau'yu kara listeye almaya çalışanlara dikkat edin: X'i çalıştırarak yüklemediğinizden emin olun systemctl set-default multi-user.target, aksi takdirde X başladığında tekrar nouveau'yu yükler!)


4

Daha yeni sürümlerde, kara liste dosyanızdaki yükleme yönergesini kullanmanız gerekir.

install modulename /bin/false

Modülün adı ile yukarıda "modül adı" değiştirin. Bu zorla yüklenmesini önleyecektir.

Yükleme yönergesi hakkında daha fazla bilgiyi modprobe.conf kılavuzunda bulabilirsiniz.

man modprobe.conf

2
Bu çok yardımcı. Bir kara liste girişi olsa bile çıkıyor /etc/modprobe/blacklist.conf, modül hala manuel olarak yüklenebiliyor modprobe <module_name>. install <module_name> /bin/falseYöntemi kullanmak bu işlemi istenildiği şekilde başarısız kılar.
RawwrBag

3

Bu çözümlerin hiçbiri i915.ko için 16.04 LTS'de çalışmamıştır.

Bulduğum (kirli) çözüm yeniden adlandırmaktı

/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

Maalesef, harici VGA ekranı artık tanınmıyor: {


6
İhtiyacınız olan tek şey sudo update-initramfs -u/etc/modeprobe.d/ dosyalarını değiştirdikten sonra
Ivan Black
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.