Όλα για την Εντολή Linux/Unix: modprobe
ο Πυρήνας Linux έχει εξελιχθεί σε ένα μεγάλο κομμάτι λογισμικού. Κατά κάποιο τρόπο, αυτό είναι καλό. Σε άλλα, το κάνει κάπως άκαμπτο. Η λύση είναι να σπάσουμε μέρη του πυρήνα σε modules. Αυτές οι μονάδες μπορούν να φορτωθούν ή όχι, δεδομένων της διαμόρφωσης του υπολογιστή και των αναγκών σας. Η εντολή modprobe φορτώνει νέες μονάδες πυρήνα σε ένα σύστημα Linux, επιτρέποντάς σας να ενεργοποιήσετε νέες δυνατότητες και υποστήριξη χωρίς επανεκκίνηση.

Χρήση Modprobe
Το Modprobe είναι συνήθως απλό στη χρήση. Μόλις μάθετε τη λειτουργική μονάδα πυρήνα που θέλετε να φορτώσετε, περάστε την στην εντολή modprobe.
sudo modprobe rtl8723de
Αυτό είναι το μόνο που υπάρχει σε αυτό. Η μονάδα φορτώνεται μέχρι να επανεκκινήσετε το σύστημά σας.
Εάν θέλετε να αφαιρέσετε μια λειτουργική μονάδα χωρίς επανεκκίνηση, εκτελέστε ξανά την εντολή με το -r σημαία.
sudo modprobe -r rtl8723de
Ως επί το πλείστον, έτσι θα εργαστείτε με το modprobe. Για να μάθετε περισσότερα, ανατρέξτε στην παρακάτω τεχνική τεκμηρίωση.
Τεχνική τεκμηρίωση Modprobe
Η εντολή modprobe εκτελεί χειρισμό υψηλού επιπέδου μονάδων με δυνατότητα φόρτωσης.
Σύνοψη
modprobe [-adnqv] [-C config] ενότητα [symbol=value ...] modprobe [-adnqv] [-C config] [-τ τύπος] πρότυπο modprobe -l [-C config] [-τ τύπος] πρότυπο modprobe -c [-C config] modprobe -r [-dnv] [-C config] [ενότητα ...] modprobe -Vh.
Επιλογές
-ένα, --όλα
Φορτώστε όλες τις αντίστοιχες μονάδες αντί να σταματήσετε μετά την πρώτη επιτυχημένη φόρτωση.
-ντο, --showconfig
Εμφάνιση της χρησιμοποιούμενης διαμόρφωσης.
-ΝΤΟ, --configconfig
Χρησιμοποιήστε το αρχείο config αντί για (το προαιρετικό) /etc/modules.conf για να καθορίσετε τη διαμόρφωση. Η μεταβλητή περιβάλλοντος MODULECONF μπορεί επίσης να χρησιμοποιηθεί για την επιλογή (και την παράκαμψη) ενός διαφορετικού αρχείου διαμόρφωσης από το προεπιλεγμένο /etc/modules.conf (ή /etc/conf.modules που έχει καταργηθεί).
Όταν μεταβλητή περιβάλλοντος UNAME_MACHINE έχει οριστεί, το modutils χρησιμοποιεί την τιμή του αντί για το πεδίο μηχανής από το syscall uname(). Αυτό είναι κυρίως χρήσιμο κατά τη μεταγλώττιση μονάδων 64-bit σε χώρο χρήστη 32-bit ή αντίστροφα, σετ UNAME_MACHINE στον τύπο των ενοτήτων. Τα τρέχοντα modutils δεν υποστηρίζουν τη λειτουργία πλήρους πολλαπλής κατασκευής για μονάδες, περιορίζεται στην επιλογή μεταξύ 32-bit και 64-bit εκδόσεις της αρχιτεκτονικής του κεντρικού υπολογιστή.
-ρε, --εντοπισμός σφαλμάτων
Εμφάνιση πληροφοριών σχετικά με την εσωτερική αναπαράσταση της στοίβας των μονάδων.
-η, --βοήθεια
Εμφανίστε μια σύνοψη των επιλογών και βγείτε αμέσως.
-κ, --αυτοκαθαρισμός
Ρυθμίστε τον αυτόματο καθαρισμό σε φορτωμένες μονάδες. Χρησιμοποιείται από τον πυρήνα όταν καλεί το modprobe για να ικανοποιήσει ένα χαρακτηριστικό που λείπει (παρέχεται ως λειτουργική μονάδα). ο -q επιλογή υπονοείται από -κ. Αυτές οι επιλογές αποστέλλονται αυτόματα στο insmod.
-n, --προβολή
Μην εκτελέσετε τη δράση, δείξτε μόνο τι θα γίνει.
-q, --ησυχια
Μην παραπονιέστε για την αποτυχία του insmod να εγκαταστήσει μια ενότητα. Συνεχίστε κανονικά, αλλά σιωπηλά, με άλλες δυνατότητες δοκιμής του modprobe. Αυτή η επιλογή αποστέλλεται αυτόματα στο insmod.
-r, --αφαιρώ
Αφαιρέστε τη μονάδα (στοίβες) ή κάντε αυτόματο καθαρισμό, ανάλογα με το αν υπάρχουν ενότητες που αναφέρονται στη γραμμή εντολών.
-μικρό, --syslog
Αναφορά μέσω syslog αντί για stderr. Αυτή η επιλογή αποστέλλεται αυτόματα στο insmod.
-ττύπος ενότητας; --τύποςτύπος ενότητας
Εξετάστε μόνο μονάδες αυτού του τύπου. Το modprobe εξετάζει μόνο μονάδες των οποίων η διαδρομή καταλόγου περιλαμβάνει ακριβώς /moduletype/. τύπος ενότητας μπορεί να περιλαμβάνει περισσότερα από ένα ονόματα καταλόγου, για παράδειγμα, -τπρογράμματα οδήγησης/δίκτυο παραθέτει ενότητες σε xxx/drivers/net/ και τους υποκαταλόγους του.
-v, --πολύλογος
Εκτυπώστε όλες τις εντολές καθώς εκτελούνται.
-V, --έκδοση
Εμφάνιση της έκδοσης του modprobe.
Τα ονόματα των μονάδων δεν πρέπει να περιέχουν διαδρομές (αρ /), ούτε το όνομα μπορεί να περιέχει το τέλος .ο. Για παράδειγμα, γλιστράω είναι ένα έγκυρο όνομα μονάδας για modprobe, /lib/modules/2.2.19/net/slip και ολίσθηση.ο είναι άκυρα. Αυτό ισχύει για τη γραμμή εντολών και για τις εγγραφές στη διαμόρφωση.
Περιγραφή της Εντολής
Τα βοηθητικά προγράμματα modprobe και depmod προορίζονται να κάνουν έναν αρθρωτό πυρήνα Linux πιο διαχειρίσιμο για χρήστες, διαχειριστές και συντηρητές διανομής.
Το Modprobe χρησιμοποιεί ένα αρχείο εξάρτησης που μοιάζει με Makefile, που δημιουργήθηκε από το depmod, για να φορτώσει αυτόματα τις σχετικές μονάδες από το σύνολο των λειτουργικών μονάδων που είναι διαθέσιμα σε προκαθορισμένα δέντρα καταλόγου.
Το Modprobe χρησιμοποιείται για τη φόρτωση μιας μεμονωμένης μονάδας, μιας στοίβας εξαρτημένων λειτουργικών μονάδων ή όλων των μονάδων που επισημαίνονται με μια καθορισμένη ετικέτα.
Το Modprobe φορτώνει αυτόματα όλες τις βασικές μονάδες που χρειάζονται σε μια στοίβα λειτουργιών, όπως περιγράφεται από το αρχείο εξάρτησης modules.dep. Εάν η φόρτωση μιας από αυτές τις λειτουργικές μονάδες αποτύχει, ολόκληρη η τρέχουσα στοίβα των λειτουργικών μονάδων που φορτώθηκαν στην τρέχουσα περίοδο λειτουργίας εκφορτώνεται αυτόματα.
Το Modprobe έχει δύο τρόπους φόρτωσης μονάδων. Ένας τρόπος (η λειτουργία ανίχνευσης) θα προσπαθήσει να φορτώσει μια ενότητα από μια λίστα (που ορίζεται από πρότυπο). Το Modprobe σταματά τη φόρτωση μόλις φορτωθεί επιτυχώς μία μονάδα. Αυτό θα μπορούσε να χρησιμοποιηθεί για την αυτόματη φόρτωση ενός προγράμματος οδήγησης Ethernet από μια λίστα. Ο άλλος τρόπος με τον οποίο μπορεί να χρησιμοποιηθεί το modprobe είναι να φορτώσει όλες τις μονάδες από μια λίστα.
Με την επιλογή -r, το modprobe ξεφορτώνει αυτόματα μια στοίβα μονάδων, παρόμοια με τον τρόπο rmmod -r κάνει. Χρησιμοποιώντας μόνο modprobe -r καθαρίζει τις αχρησιμοποίητες μονάδες που έχουν φορτωθεί αυτόματα και εκτελεί επίσης τις εντολές πριν και μετά την αφαίρεση στο αρχείο διαμόρφωσης /etc/modules.conf.
Συνδυάζοντας τις επιλογές -μεγάλο και -τ παραθέτει όλες τις διαθέσιμες ενότητες ενός συγκεκριμένου τύπου.
Επιλογή -ντο εκτυπώνει τη διαμόρφωση που χρησιμοποιείται αυτήν τη στιγμή (προεπιλογή + αρχείο διαμόρφωσης).
Διαμόρφωση
Η συμπεριφορά του modprobe (και του depmod) μπορεί να τροποποιηθεί από το (προαιρετικό) αρχείο διαμόρφωσης /etc/modules.conf. Για μια λεπτομερή περιγραφή του τι μπορεί να περιέχει αυτό το αρχείο, καθώς και της προεπιλεγμένης διαμόρφωσης που χρησιμοποιείται από το depmod και το modprobe, βλ. modules.conf(5).
Οι εντολές πριν και μετά την αφαίρεση δεν εκτελούνται εάν μια μονάδα καθαρίζεται αυτόματα από τον πυρήνα. Αναζητήστε την επερχόμενη υποστήριξη για μόνιμο χώρο αποθήκευσης μονάδων. Εάν θέλετε να χρησιμοποιήσετε τις λειτουργίες πριν και μετά την εγκατάσταση, απενεργοποιήστε το autoclean για τον πυρήνα και αντ' αυτού βάλτε κάτι σαν την παρακάτω γραμμή στο crontab (αυτό χρησιμοποιείται και για συστήματα kmod) για να κάνετε αυτόματο καθαρισμό κάθε 2 λεπτά:
*/2 * * * * δοκιμή -f /proc/modules && /sbin/modprobe -r
Στρατηγική
Η ιδέα είναι ότι το modprobe θα κοιτάξει πρώτα στον κατάλογο που περιέχει ενότητες που έχουν μεταγλωττιστεί για την τρέχουσα έκδοση του πυρήνα. Εάν η λειτουργική μονάδα δεν βρίσκεται εκεί, το modprobe αναζητά στον κατάλογο που είναι κοινός για την έκδοση του πυρήνα (για παράδειγμα, 2.0, 2.2). Εάν η λειτουργική μονάδα εξακολουθεί να μην έχει βρεθεί, το modprobe αναζητά στον κατάλογο που περιέχει λειτουργικές μονάδες για μια προεπιλεγμένη έκδοση και ούτω καθεξής.
Όταν εγκαθιστάτε ένα νέο Linux, οι λειτουργικές μονάδες θα πρέπει να μετακινούνται σε έναν κατάλογο που σχετίζεται με την έκδοση (και την έκδοση) του πυρήνα που εγκαθιστάτε. Στη συνέχεια, κάντε έναν συμβολικό σύνδεσμο από αυτόν τον κατάλογο στον προεπιλεγμένο κατάλογο.
Κάθε φορά που μεταγλωττίζετε έναν νέο πυρήνα, η εντολή make modules_install δημιουργεί έναν νέο κατάλογο, αλλά δεν θα αλλάξει τον προεπιλεγμένο σύνδεσμο.
Όταν λαμβάνετε μια λειτουργική μονάδα που δεν σχετίζεται με τη διανομή του πυρήνα, τοποθετήστε την σε έναν από τους ανεξάρτητους από την έκδοση καταλόγους κάτω από /lib/modules.
Αυτή είναι η προεπιλεγμένη στρατηγική, η οποία μπορεί να παρακαμφθεί /etc/modules.conf.
Παραδείγματα
modprobe -t δίχτυ
Φορτώστε μία από τις λειτουργικές μονάδες που είναι αποθηκευμένες στον κατάλογο με ετικέτα καθαρά. Κάθε ενότητα δοκιμάζεται μέχρι να πετύχει.
modprobe -a -t εκκίνηση
Όλες οι λειτουργικές μονάδες που είναι αποθηκευμένες σε καταλόγους με ετικέτα μπότα φορτώνονται.
ολίσθηση modprobe
Αυτό επιχειρεί να φορτώσει τη μονάδα slhc.o εάν δεν είχε φορτωθεί προηγουμένως, καθώς η μονάδα ολίσθησης χρειάζεται τη λειτουργικότητα στη μονάδα slhc. Αυτή η εξάρτηση περιγράφεται στο αρχείο modules.dep που δημιουργήθηκε αυτόματα από το depmod.
modprobe -r ολίσθηση
Αυτό ξεφορτώνει τη μονάδα ολίσθησης. Ξεφορτώνει επίσης τη μονάδα slhc αυτόματα, εκτός εάν χρησιμοποιείται και από κάποια άλλη μονάδα (για παράδειγμα, ppp).
Δείτε επίσης: depmod(8), lsmod (8), πυρήνας (8), ksyms (8), rmmod(8).
Λειτουργία ασφαλείας
Εάν το αποτελεσματικό uid δεν είναι ίσο με το πραγματικό uid, τότε το modprobe αντιμετωπίζει την εισαγωγή του με εξαιρετική καχυποψία. Η τελευταία παράμετρος αντιμετωπίζεται πάντα ως όνομα μονάδας, ακόμα κι αν ξεκινά με -. Μπορεί να υπάρχει μόνο ένα όνομα ενότητας και επιλογές της φόρμας μεταβλητή=τιμή απαγορεύονται. Το όνομα της μονάδας αντιμετωπίζεται πάντα ως συμβολοσειρά, δεν εκτελείται μετα-επέκταση σε ασφαλή λειτουργία. Ωστόσο, η μετα-επέκταση εφαρμόζεται στα δεδομένα που διαβάζονται από το αρχείο διαμόρφωσης.
Το euid μπορεί να μην είναι ίσο με το uid όταν το modprobe καλείται από τον πυρήνα, αυτό ισχύει για πυρήνες 2.4.0-test11 και μεταγενέστερες. Σε έναν ιδανικό κόσμο, το modprobe θα μπορούσε να εμπιστευτεί τον πυρήνα ότι θα μεταβιβάζει μόνο έγκυρες παραμέτρους στο modprobe. Ωστόσο, τουλάχιστον μία τοπική εκμετάλλευση ρίζας έχει συμβεί επειδή ο κώδικας πυρήνα υψηλού επιπέδου μεταβίβασε μη επαληθευμένες παραμέτρους απευθείας από το χρήστη στο modprobe. Έτσι, το modprobe δεν εμπιστεύεται πλέον την είσοδο του πυρήνα.
Το modprobe ορίζει αυτόματα την ασφαλή λειτουργία όταν το περιβάλλον αποτελείται μόνο από αυτές τις συμβολοσειρές.
ΑΡΧΙΚΗ =/
TERM=linux
PATH=/sbin:/usr/sbin:/bin:/usr/bin
Αυτό ανιχνεύει την εκτέλεση modprobe από τον πυρήνα στους πυρήνες 2.2 και 2.4.0-test11, ακόμα κι αν uid == euid, κάτι που κάνει στους προηγούμενους πυρήνες.
Εντολές καταγραφής
Εάν ο κατάλογος /var/log/ksymoops υπάρχει και το modprobe εκτελείται με μια επιλογή που θα μπορούσε να φορτώσει ή να διαγράψει ένα module, το modprobe καταγράφει την εντολή του και επιστρέφει την κατάσταση στο /var/log/ksymoops/'date +%Y%m%d.log'. Δεν υπάρχει διακόπτης για την απενεργοποίηση αυτής της αυτόματης καταγραφής, αν δεν θέλετε να συμβεί, μην δημιουργήσετε /var/log/ksymoops. Εάν υπάρχει αυτός ο κατάλογος, θα πρέπει να ανήκει στον root και να είναι ο τρόπος λειτουργίας 644 ή 600 και θα πρέπει να εκτελέσετε το σενάριο insmod_ksymoops_clean κάθε μέρα περίπου.
Απαιτούμενα βοηθητικά προγράμματα
depmod (8), insmod (8).
Χρησιμοποιήστε το άνδρας εντολή (% άνδρας) για να δείτε πώς χρησιμοποιείται μια εντολή στον υπολογιστή σας.