Saltar al contenido

Όλα για το Linux / Unix Command depmod

22 de abril de 2021

Σε αυτό το άρθρο

Το Depmod χειρίζεται περιγραφές εξάρτησης για μονάδες πυρήνα με δυνατότητα φόρτωσης.

Σύνοψη

depmod [-aA] [-ehnqrsuvV] [-C configfile] [-F kernelsyms] [-b basedirectory] [forced_version] depmod [-enqrsuv] [-F kernelsyms] module1.o module2.o …

Περιγραφή

ο depmod και modprobe Τα βοηθητικά προγράμματα προορίζονται να κάνουν έναν Linux modular πυρήνα διαχειρίσιμο για όλους τους χρήστες, διαχειριστές και συντηρητές διανομής.

Depmod δημιουργεί ένα αρχείο εξάρτησης τύπου «Makefile», με βάση τα σύμβολα που βρίσκει στο σύνολο των ενοτήτων που αναφέρονται στη γραμμή εντολών ή από τους καταλόγους που καθορίζονται στο αρχείο διαμόρφωσης. Αυτό το αρχείο εξάρτησης χρησιμοποιείται αργότερα από modprobe για αυτόματη φόρτωση της σωστής μονάδας ή στοίβας μονάδων.

Η κανονική χρήση του depmod είναι να συμπεριλάβετε τη γραμμή / sbin / depmod -a

κάπου στα αρχεία rc μέσα /etc/rc.d, έτσι ώστε οι σωστές εξαρτήσεις λειτουργικής μονάδας να είναι διαθέσιμες αμέσως μετά την εκκίνηση του συστήματος. Εάν εργάζεστε με μια πιο ολοκληρωμένη διανομή χαρακτηριστικών, όπως το Ubuntu, το Debian ή το Fedora, αυτό θα γίνει για εσάς. Σημειώστε ότι η επιλογή -ένα είναι τώρα προαιρετικό. Για σκοπούς εκκίνησης, η επιλογή -q μπορεί να είναι καταλληλότερη δεδομένου ότι αυτό κάνει το depmod σιωπηλό για τα άλυτα σύμβολα. Εάν θέλετε να δείτε ακριβώς τι προστίθεται, χρησιμοποιήστε το μεταβείτε για να εκτελέσετε την εντολή λεκτικά. Είναι επίσης δυνατό να δημιουργήσετε το αρχείο εξάρτησης αμέσως μετά τη σύνταξη ενός νέου πυρήνα. Αν το κάνετε «depmod -α 2.2.99«όταν έχετε καταρτίσει τον πυρήνα 2.2.99 και τις ενότητες του για πρώτη φορά, ενώ εξακολουθείτε να εκτελείτε π.χ. 2.2.98, το αρχείο θα δημιουργηθεί στη σωστή θέση. Σε αυτήν την περίπτωση, ωστόσο, δεν θα είναι εγγυημένη η εξάρτηση από τον πυρήνα να είναι σωστή. Δείτε τις επιλογές -ΦΑ, -ΝΤΟ και -σι παραπάνω για περισσότερες πληροφορίες σχετικά με τον χειρισμό αυτού. Κατά την οικοδόμηση της σχέσης μεταξύ των ενοτήτων και των συμβόλων που εξάγονται από άλλες ενότητες,depmod δεν λαμβάνει υπόψη την κατάσταση GPL των ενοτήτων ούτε των εξαγόμενων συμβόλων. Δηλαδή, το depmod δεν θα επισημάνει σφάλμα εάν μια μονάδα χωρίς άδεια συμβατή με GPL αναφέρεται σε σύμβολο μόνο GPL (EXPORT_SYMBOL_GPL στον πυρήνα). Ωστόσο, το insmod θα αρνηθεί να επιλύσει μόνο σύμβολα GPL για μονάδες εκτός GPL, οπότε το πραγματικό φορτίο θα αποτύχει.

Επιλογές

-ένα, –όλα

Αναζητήστε λειτουργικές μονάδες σε όλους τους καταλόγους που καθορίζονται στο (προαιρετικό) αρχείο διαμόρφωσης/etc/modules.conf.

-ΕΝΑ, –γρήγορα

Συγκρίνετε τις χρονικές σημάνσεις αρχείων και, εάν είναι απαραίτητο, ενεργήστε όπως depmod -α. Αυτή η επιλογή ενημερώνει το αρχείο εξάρτησης μόνο αν έχει αλλάξει κάτι.

-μι, – ορίσματα

Εμφάνιση όλων των άλυτων συμβόλων για κάθε ενότητα.

, –βοήθεια

Εμφανίστε μια περίληψη των επιλογών και βγείτε αμέσως.

, –προβολή

Γράψτε το αρχείο εξάρτησης στο stdout αντί στο / lib / modules δέντρο.

-q, –ησυχια

Πείτε στον depmod να μείνει σιωπηλός και να μην παραπονεθεί για τα σύμβολα που λείπουν.

, –ρίζα

Ορισμένοι χρήστες μεταγλωττίζουν λειτουργικές μονάδες κάτω από ένα user-root root και, στη συνέχεια, εγκαθιστούν τις ενότητες ως root. Αυτή η διαδικασία μπορεί να αφήσει τα modules που ανήκουν στο user-root, παρόλο που ο κατάλογος modules ανήκει στο root. Εάν το μη ριζικό userid έχει παραβιαστεί, ένας εισβολέας μπορεί να αντικαταστήσει υπάρχουσες λειτουργικές μονάδες που ανήκουν σε αυτό το userid και να χρησιμοποιήσει αυτήν την έκθεση στο bootstrap μέχρι την πρόσβαση root. Από προεπιλογή, τα modutils θα απορρίψουν τις προσπάθειες χρήσης μιας λειτουργικής μονάδας που δεν ανήκει στο root. Καθορισμός θα καταστείλει το σφάλμα και θα επιτρέψει στο root να φορτώσει λειτουργικές μονάδες που δεν ανήκουν στο root.

Η χρήση του -r είναι μια σημαντική έκθεση ασφαλείας και δεν συνιστάται.

-μικρό, – ημερολόγιο

Γράψτε όλα τα μηνύματα σφάλματος μέσω του δαίμονα syslog αντί για stderr.

, – ανεπίλυτο σφάλμα

depmod 2.4 δεν ορίζει κωδικό επιστροφής όταν υπάρχουν άλυτα σύμβολα. Ορισμένες διανομές θέλουν μη μηδενικό κωδικό επιστροφής στα modutils 2.4, αλλά αυτή η αλλαγή μπορεί να προκαλέσει προβλήματα στους χρήστες που αναμένουν την παλιά συμπεριφορά. Εάν θέλετε έναν μη μηδενικό κωδικό επιστροφής στο depmod 2.4, προσδιορίστε . depmod 2.5 θα αγνοήσει σιωπηλά το επισημαίνει και θα δίνει πάντα μη μηδενικό κωδικό επιστροφής για άλυτα σύμβολα.

, –πολύλογος

Εμφάνιση του ονόματος κάθε λειτουργικής μονάδας κατά την επεξεργασία.

, –εκδοχή

Εμφάνιση της έκδοσης του depmod.

Διαχείριση διανομών

Οι ακόλουθες επιλογές είναι χρήσιμες για άτομα που διαχειρίζονται διανομές:

-σι βασικός κατάλογος, – βασεδίρ βασικός κατάλογος

Εάν το δέντρο καταλόγου / lib / modules Το να περιέχει τα υποδέντρα των ενοτήτων μετακινείται κάπου αλλού για να χειριστεί τις ενότητες για ένα διαφορετικό περιβάλλον, το -σι Η επιλογή λέει στο depmod πού να βρει την μετακινημένη εικόνα του / lib / modules δέντρο. Οι αναφορές αρχείων στο αρχείο εξόδου depmod που είναι κατασκευασμένο, modules.dep, δεν θα περιέχει το βασικός κατάλογος μονοπάτι. Αυτό σημαίνει ότι όταν το δέντρο αρχείων μετακινείται πίσω από basedirectory / lib / modules σε / lib / modules στην τελική διανομή, όλες οι αναφορές θα είναι σωστές.

-ΝΤΟ configfile, – διαμόρφωση configfile

Χρησιμοποιήστε το αρχείο configfile αντί /etc/modules.conf. Η μεταβλητή περιβάλλοντος MODULECONF μπορεί επίσης να χρησιμοποιηθεί για να επιλέξετε ένα διαφορετικό αρχείο διαμόρφωσης από την προεπιλογή /etc/modules.conf/etc/conf.modules (καταργήθηκε)). Όταν μεταβλητή περιβάλλοντος UNAME_MACHINE έχει ρυθμιστεί, τα modutils θα χρησιμοποιήσουν την τιμή τους αντί για το πεδίο του μηχανήματος από το uname () syscall. Αυτό είναι κυρίως χρήσιμο όταν συντάσσετε μονάδες 64 bit σε χώρο χρηστών 32 bit ή αντίστροφα, σετ UNAME_MACHINE στον τύπο των ενοτήτων που κατασκευάζονται. Τα τρέχοντα modutils δεν υποστηρίζουν τη λειτουργία πλήρους διασταύρωσης για λειτουργικές μονάδες, περιορίζεται στην επιλογή μεταξύ 32 και 64 bit εκδόσεων της κεντρικής αρχιτεκτονικής.

-F kernelsyms,– αρχεία πυρήνες

Κατά τη δημιουργία αρχείων εξάρτησης για διαφορετικό πυρήνα από τον τρέχοντα πυρήνα, είναι σημαντικό αυτό depmod χρησιμοποιεί το σωστό σύνολο συμβόλων πυρήνα για την επίλυση των αναφορών του πυρήνα σε κάθε λειτουργική μονάδα. Αυτά τα σύμβολα μπορούν είτε να είναι αντίγραφο του System.map από τον άλλο πυρήνα ή ένα αντίγραφο της εξόδου από / proc / ksyms. Εάν ο πυρήνας σας χρησιμοποιεί διαμορφωμένα σύμβολα, είναι καλύτερο να χρησιμοποιήσετε ένα αντίγραφο του / proc / ksyms έξοδος, δεδομένου ότι το αρχείο περιέχει τις εκδόσεις συμβόλων των συμβόλων του πυρήνα. Ωστόσο, μπορείτε να χρησιμοποιήσετε ένα System.map ακόμη και με διαμορφωμένα σύμβολα.

Διαμόρφωση

Η συμπεριφορά του depmod και modprobe μπορεί να προσαρμοστεί από το (προαιρετικό) αρχείο διαμόρφωσης/etc/modules.conf. Βλέπω modprobe(8) και modules.conf(5) για μια πλήρη περιγραφή.

Στρατηγική

Κάθε φορά που συντάσσετε έναν νέο πυρήνα, η εντολή «φτιάξτε modules_install«θα δημιουργήσει έναν νέο κατάλογο, αλλά δεν θα αλλάξει τον προεπιλεγμένο. Όταν λάβετε μια ενότητα που δεν σχετίζεται με τη διανομή του πυρήνα, θα πρέπει να την τοποθετήσετε σε έναν από τους ανεξάρτητους από τους καταλόγους / lib / modules. Αυτή είναι η προεπιλεγμένη στρατηγική, στην οποία μπορεί να παρακαμφθεί /etc/modules.conf. Χρησιμοποιήστε το άνδρας εντολή (% άνδρας) για να δείτε πώς χρησιμοποιείται μια εντολή στον συγκεκριμένο υπολογιστή σας.