Path-based kernel module blacklisting

George Notaras gnot at g-loaded.eu
Mon Sep 21 14:02:21 EEST 2009


Papaioannou Giannis wrote:
> Quoting George Notaras <gnot at g-loaded.eu>:
> 
> Για να μην σβήνεις στο ξεκάρφωτο
> find /lib/modules/$(uname -r)/kernel/drivers/usb/ -name \*.ko| sed
> 's%^.*/\(.*\)\.ko%blacklist \1%g' > /etc/modprobe.d/blacklist_all_usb

Με την ευκαιρία, να πω ότι καλό είναι, όταν θέλουμε να κάνουμε
πραγματικό blacklisting σε ένα module, δηλαδή αυτό να μην φορτώνεται όσο
πολύ κι αν το χρειάζεται κάποιο πρόγραμμα/service, καλό είναι να
χρησιμοποιούμε την εντολή "install" στο modprobe.conf, όπως παρακάτω:

  install my_module /bin/true

Με αυτόν τον τρόπο, αντί να φορτωθεί το module, θα εκτελεστεί η
/bin/true, η οποία στην ουσία δεν κάτι τίποτα.

Σημείωση: αν και η χρήση της /bin/false θα φάνταζε πιο λογική, καθώς θα
σήμαινε ότι το φόρτωμα του module απέτυχε, στην πράξη δεν δούλεψε όταν
το δοκίμασα (αν θυμάμαι καλά).

Αν και στο man page modprobe.conf(5) δεν το γράφει πολύ αναλυτικά, η
εντολή "blacklist" σημαίνει πιο πολύ "ignore" παρά "blacklist" και
υπάρχει κυρίως για να μπορούν να αγνοούνται modules ή aliases σε
περιπτώσεις όπου η ίδια συσκευή υποστηρίζεται από δύο ή περισσότερα
modules. Αν η συσκευή υποστηρίζεται μόνο από ένα module, τότε το αυτό θα
φορτωθεί, παρόλο που είναι blacklisted. Γι' αυτό και μερικές φορές το
"blacklist my_module" δείχνει να μην δουλεύει. Δουλεύει, αλλά όχι όπως
θα περίμενε κανείς.

Οπότε θα μου επιτρέψεις να κάνω μια αλλαγή στο μακρυνάρι (το οποίο btw
είναι άψογο):

find /lib/modules/$(uname -r)/kernel/drivers/usb/ -name \*.ko| sed
's%^.*/\(.*\)\.ko%install \1 /bin/true%g' >
/etc/modprobe.d/blacklist_all_usb



More information about the Linux-greek-users mailing list