Η εντολή Linux / Unix insmod εγκαθιστά μια φορτιζόμενη ενότητα στον τρέχοντα πυρήνα.insmod προσπαθεί να συνδέσει μια ενότητα στον τρέχοντα πυρήνα με την επίλυση όλων των συμβόλων από τον εξαγόμενο πίνακα συμβόλων του πυρήνα.
Εάν το όνομα του αρχείου μονάδας δίνεται χωρίς καταλόγους ή επέκταση,insmod θα αναζητήσει την ενότητα σε κάποιους κοινούς προεπιλεγμένους καταλόγους. Η μεταβλητή περιβάλλοντοςMODPATH μπορεί να χρησιμοποιηθεί για την αντικατάσταση αυτής της προεπιλογής. Εάν ένα αρχείο διαμόρφωσης μονάδας, όπως/etc/modules.conf υπάρχει, θα παρακάμψει τις διαδρομές που ορίζονται στοMODPATH.
Η μεταβλητή περιβάλλοντοςMODULECONF μπορεί επίσης να χρησιμοποιηθεί για να επιλέξετε ένα διαφορετικό αρχείο ρυθμίσεων από την προεπιλογή/etc/modules.conf (ή/etc/conf.modules (απόρριψη)). Αυτή η μεταβλητή περιβάλλοντος θα αντικαταστήσει όλους τους παραπάνω ορισμούς.
Όταν η μεταβλητή περιβάλλοντοςUNAME_MACHINE , το modutils θα χρησιμοποιήσει την τιμή του αντί του πεδίου του μηχανήματος από το σύμβολο uname (). Αυτό είναι κυρίως χρήσιμο όταν καταρτίζετε μονάδες 64 bit σε περιβάλλον χρήστη 32 bit ή αντίστροφαUNAME_MACHINE με τον τύπο των μονάδων. Τα τρέχοντα modutils δεν υποστηρίζουν τον πλήρη τρόπο cross-build για τα modules, αλλά περιορίζονται στην επιλογή ανάμεσα σε εκδόσεις 32 και 64 bit της αρχιτεκτονικής host.
Επιλογές
-μι persist_name , --επιμένω= persist_name
Καθορίζει πού διαβάζονται από το φορτίο τυχόν επίμονα δεδομένα για την ενότητα και γράφονται όταν εκφορτώνεται αυτή η παράσταση της μονάδας. Αυτή η επιλογή αγνοείται σιωπηλά εάν η ενότητα δεν διαθέτει δεδομένα επίμονα. Τα επίμονα δεδομένα διαβάζονται μόνο απόinsmod αν υπάρχει αυτή η επιλογή, από προεπιλογήinsmod δεν επεξεργάζεται τα επίμονα δεδομένα.
Ως μορφή στενογραφίας,-ε "" (μια κενή συμβολοσειρά) ερμηνεύεται απόinsmod ως αξία τουpersistdir όπως ορίζεται στοmodules.conf, ακολουθούμενη από το όνομα αρχείου της ενότητας σε σχέση με τη διαδρομή αναζήτησης ενότητας στην οποία βρέθηκε, μείον κάθε ".gz", ".o" ή ".mod". Ανmodules.conf καθορίζει "persistdir ="(δηλ.persistdir είναι ένα κενό πεδίο) τότε αυτή η μορφή στενογραφίας σιωπηλά αγνοείται. (Βλέπωmodules.conf (5).)
-φά, --δύναμη
Προσπαθήστε να φορτώσετε τη μονάδα ακόμα και αν η έκδοση του πυρήνα που εκτελείται και η έκδοση του πυρήνα για την οποία έχει συνταχθεί η ενότητα δεν ταιριάζουν. Αυτό παρακάμπτει μόνο τον έλεγχο της έκδοσης του πυρήνα, δεν έχει καμία επίδραση στους ελέγχους των συμβόλων. Εάν τα ονόματα των συμβόλων στην ενότητα δεν ταιριάζουν με τον πυρήνα τότε δεν υπάρχει τρόπος να εξαναγκαστούνinsmod για να φορτώσετε τη μονάδα.
-h, --βοήθεια
Εμφανίστε μια σύνοψη των επιλογών και αμέσως βγείτε.
-κ, --αυτοκαθαρισμός
Ορίστε τη σημαία αυτόματου καθαρισμού στη μονάδα. Αυτή η σημαία θα χρησιμοποιηθεί απόkerneld(8) για να αφαιρέσετε τις μονάδες που δεν έχουν χρησιμοποιηθεί σε κάποια χρονική περίοδο - συνήθως ένα λεπτό.
-ΜΕΓΑΛΟ, --κλειδαριά
Χρήσησμήνος(2) για να αποτρέψετε ταυτόχρονα φορτία της ίδιας μονάδας.
-m, --χάρτης
Εκτελέστε έναν χάρτη φόρτωσης στο stdout, διευκολύνοντας τον εντοπισμό σφαλμάτων της μονάδας σε περίπτωση πανικού πυρήνα.
-η, --nolaad
Ομοίωμα, εκτελέστε τα πάντα εκτός από τη φόρτωση της μονάδας στον πυρήνα. Εάν ζητηθεί από ένα-m ή-Ο, η εκτέλεση θα δημιουργήσει ένα αρχείο χάρτη ή μπλοκ. Δεδομένου ότι η ενότητα δεν είναι φορτωμένη, η πραγματική διεύθυνση φόρτωσης πυρήνα είναι άγνωστη, έτσι ώστε το αρχείο map και το blob βασίζονται σε μια αυθαίρετη διεύθυνση φορτίου 0x12340000.
-ό όνομα_μονάδας , --όνομα= όνομα_μονάδας
Αναφέρετε ρητώς τη λειτουργική μονάδα, αντί να εξάγετε το όνομα από το όνομα βάσης του αρχείου αντικειμένου προέλευσης.
-Ο blob_name , --άμορφη μάζα= blob_name
Αποθηκεύστε το δυαδικό αντικείμενο μέσα blob_name . Το αποτέλεσμα είναι ένα δυαδικό blob (χωρίς κεφαλίδες ELF) που δείχνει ακριβώς τι φορτώνεται στον πυρήνα μετά από χειρισμό και μετεγκατάσταση τμήματος. Επιλογή-m συνιστάται να λάβετε ένα χάρτη του αντικειμένου.
-Π, --καθετήρας
Δοκιμάστε την ενότητα για να δείτε εάν θα μπορούσε να φορτωθεί με επιτυχία. Αυτό περιλαμβάνει τον εντοπισμό του αρχείου αντικειμένου στη διαδρομή μονάδας, τον έλεγχο των αριθμών έκδοσης και την επίλυση συμβόλων. Δεν ελέγχει τις μετεγκαταστάσεις ούτε παράγει ένα χάρτη ή ένα αρχείο blob.
-Π πρόθεμα , --πρόθεμα= πρόθεμα
Αυτή η επιλογή μπορεί να χρησιμοποιηθεί με εκδομένες μονάδες για έναν πυρήνα SMP ή bigmem, αφού αυτά τα στοιχεία έχουν ένα πρόσθετο πρόθεμα που προστίθεται στα ονόματα συμβόλων τους. Εάν ο πυρήνας χτίστηκε με εκδόσεις συμβόλων τότεinsmod θα εξαγάγει αυτόματα το πρόθεμα από τον ορισμό του "get_module_symbol" ή "inter_module_get", ένας από τους οποίους πρέπει να υπάρχει σε οποιοδήποτε πυρήνα που υποστηρίζει ενότητες. Εάν ο πυρήνας δεν έχει εκδόσεις συμβόλων, αλλά η ενότητα κατασκευάστηκε με εκδόσεις συμβόλων, τότε ο χρήστης πρέπει να παρέχει-Π.
-q, --ησυχια
Μην εκτυπώνετε μια λίστα με τυχόν ανεπίλυτα σύμβολα. Μην διαμαρτύρονται για την αναντιστοιχία των εκδόσεων. Το πρόβλημα θα αντικατοπτρίζεται μόνο στην κατάσταση εξόδου τουinsmod.
-r, --ρίζα
Ορισμένοι χρήστες καταρτίζουν λειτουργικές μονάδες κάτω από μη χρήστη root και στη συνέχεια εγκαθιστούν τις ενότητες ως root. Αυτή η διαδικασία μπορεί να αφήσει τις λειτουργικές μονάδες που ανήκουν στο userid μη-ρίζας, παρόλο που ο κατάλογος των ενοτήτων ανήκει στη ρίζα. Εάν το userid που δεν είναι root, ένας εισβολέας μπορεί να αντικαταστήσει τις υπάρχουσες μονάδες που ανήκουν σε αυτό το userid και να χρησιμοποιήσει αυτήν την έκθεση για να ξεκινήσει την πρόσβαση σε root.
Από προεπιλογή, το modutils θα απορρίψει τις προσπάθειες χρήσης μιας ενότητας που δεν ανήκει στη ρίζα. Καθορισμός -r θα αλλάξει τον έλεγχο και θα επιτρέψει στη ρίζα να φορτώσει μονάδες που δεν ανήκουν στη ρίζα.
Σημείωση: Η προεπιλεγμένη τιμή για τον έλεγχο ριζών μπορεί να αλλάξει όταν διαμορφωθεί το modutils.Η χρήση του -r για να απενεργοποιήσετε τον έλεγχο ρίζας ή για να ορίσετε την προεπιλογή σε "χωρίς έλεγχο ρίζας" κατά τη διάρκεια της διαμόρφωσης είναι μια σημαντική έκθεση ασφαλείας και δεν συνιστάται.
-μικρό, --syslog
Εξάγετε τα πάντα στοsyslog(3) αντί του τερματικού σταθμού.
-ΜΙΚΡΟ, - kallsyms
Αναγκάστε τη φορτισμένη μονάδα να έχειkallsyms δεδομένων, ακόμη και αν ο πυρήνας δεν το υποστηρίζει. Αυτή η επιλογή είναι για μικρά συστήματα όπου ο πυρήνας είναι φορτωμένος χωρίςkallsyms αλλά χρειάζονται επιλεγμένες ενότητεςkallsyms για τον εντοπισμό σφαλμάτων. Αυτή η επιλογή είναι η προεπιλογή για το Red Hat Linux.
-v, --πολύλογος
Να είναι verbose.
-V, --εκδοχή
Εμφάνιση της έκδοσης τουinsmod.
-Χ, --εξαγωγή; -Χ, --exexport
Κάνετε και μην εξάγετε όλα τα εξωτερικά σύμβολα της μονάδας, αντίστοιχα. Η προεπιλογή είναι για τα σύμβολα που πρόκειται να εξαχθούν. Αυτή η επιλογή είναι αποτελεσματική μόνο εάν η ενότητα δεν εξάγει ρητώς τον δικό της ελεγχόμενο πίνακα συμβόλων και, ως εκ τούτου, έχει καταργηθεί.
-Y, -; -y, - noksymoops
Κάνετε και μην προσθέτετεksymoops σύμβολα σε ksyms. Αυτά τα σύμβολα χρησιμοποιούνται απόksymoops για την παροχή καλύτερου εντοπισμού σφαλμάτων αν υπάρχει ένα στοιχείο "Ωχ" σε αυτήν την ενότητα. Η προεπιλογή είναι για τοksymoopsσύμβολα που θα καθοριστούν. Αυτή η επιλογή είναι ανεξάρτητη από το-Χ/-Χ επιλογές.
ksymoops τα σύμβολα προσθέτουν περίπου 260 bytes ανά φορτωμένη μονάδα. Εάν δεν είστε πολύ κοντά στον χώρο του πυρήνα και προσπαθείτε να μειώσετε το ksyms στο ελάχιστο μέγεθος, πάρτε την προεπιλογή και λάβετε πιο ακριβείς σφαλμάτων Oops debugging.ksymoops απαιτούνται σύμβολα για την αποθήκευση των επίμονων δεδομένων μονάδας.
-Ν, - μόνο αριθμητική
Ελέγξτε μόνο το αριθμητικό τμήμα της έκδοσης της μονάδας έναντι της έκδοσης του πυρήνα, δηλαδή αγνοήστε το EXTRAVERSION όταν αποφασίσετε αν μια ενότητα ανήκει σε έναν πυρήνα. Αυτή η σημαία ρυθμίζεται αυτόματα για τον πυρήνα 2.5 και μετά, είναι προαιρετική για προηγούμενους πυρήνες.
Παράμετροι μονάδας
Ορισμένες ενότητες δέχονται παραμέτρους χρόνου φόρτωσης για να προσαρμόσουν τη λειτουργία τους. Αυτές οι παράμετροι είναι συχνά αριθμοί εισόδου / εξόδου και IRQ που διαφέρουν από μηχάνημα σε μηχανή και δεν μπορούν να προσδιοριστούν από το υλικό.
Σε μονάδες που έχουν κατασκευαστεί για πυρήνες σειρών 2.0, οποιοδήποτε σύμβολο ακέραιου ή χαρακτήρα δείκτη μπορεί να αντιμετωπιστεί ως παράμετρος και να τροποποιηθεί. Αρχίζοντας στους πυρήνες των σειρών 2.1, τα σύμβολα επισημαίνονται ρητά ως παράμετροι, ώστε να μπορούν να αλλάξουν μόνο συγκεκριμένες τιμές. Επιπλέον, παρέχονται πληροφορίες τύπου για τον έλεγχο των τιμών που παρέχονται κατά το χρόνο φόρτωσης.
Στην περίπτωση ακέραιων αριθμών, όλες οι τιμές μπορεί να είναι δεκαδικά, οκταδικά ή δεκαεξαδικά a la C: 17, 021 ή 0x11. Τα στοιχεία συστοιχίας καθορίζονται ακολουθία διαχωρισμένη με κόμματα. Τα στοιχεία μπορούν να παραληφθούν παραλείποντας την τιμή.
Σε δομοστοιχεία σειράς 2.0, αξίες που δεν ξεκινούν με έναν αριθμό θεωρούνται συμβολοσειρές. Αρχίζοντας από το 2.1, οι πληροφορίες τύπου της παραμέτρου δείχνουν αν θα ερμηνεύσει την τιμή ως συμβολοσειρά. Αν η τιμή αρχίζει με διπλά εισαγωγικά ('), η συμβολοσειρά ερμηνεύεται όπως στο C, ακολουθίες διαφυγής και όλα. Σημειώστε ότι από την προτροπή κελύφους, οι ίδιες οι προσφορές ίσως χρειαστεί να προστατευτούν από την ερμηνεία του κελύφους.
GPL Αδειοδοτημένες Ενότητες και Σύμβολα
Ξεκινώντας με τον πυρήνα 2.4.10, οι ενότητες θα πρέπει να έχουν μια συμβολοσειρά αδειών χρήσης, η οποία ορίζεται με τη χρήσηMODULE_LICENSE (). Πολλές χορδές αναγνωρίζονται ως συμβατές με GPL. οποιαδήποτε άλλη συμβολοσειρά άδειας χρήσης ή καμία άδεια δεν σημαίνει ότι η ενότητα θεωρείται ιδιόκτητη.
Αν ο πυρήνας υποστηρίζει το/ proc / sys / kernel / μολυσμένο τότε σημαίαinsmod θα OR ή τη σημαία που έχει μολυνθεί με "1" κατά τη φόρτωση μιας ενότητας χωρίς άδεια GPL. Εμφανίζεται μια προειδοποίηση εάν ο πυρήνας υποστηρίζει τη φθορά και μια μονάδα φορτώνεται χωρίς άδεια. Μια προειδοποίηση εκδίδεται πάντοτε για ενότητες που έχουν έναMODULE_LICENSE () που δεν είναι συμβατό με GPL, ακόμη και σε παλαιότερους πυρήνες που δεν υποστηρίζουν αλλοιώσεις. Αυτό ελαχιστοποιεί τις προειδοποιήσεις όταν χρησιμοποιείται ένα νέο modutils σε παλαιότερους πυρήνες.
insmod -f (δύναμη) θα OR ή τη σημαία που έχει μολυνθεί με το '2' στους πυρήνες που υποστηρίζουν την φθορά. Εκδίδει πάντα μια προειδοποίηση.
Ορισμένοι προγραμματιστές του πυρήνα απαιτούν τα σύμβολα που εξάγονται από τον κώδικα τους να χρησιμοποιούνται μόνο από ενότητες με άδεια συμβατή με GPL. Αυτά τα σύμβολα εξάγονται απόEXPORT_SYMBOL_GPL αντί για το κανονικόEXPORT_SYMBOL. Τα σύμβολα που εξάγονται μόνο από το GPL από τον πυρήνα και από άλλες ενότητες είναι ορατά μόνο σε ενότητες με άδεια συμβατή με GPL, τα οποία εμφανίζονται σε/ proc / ksyms με πρόθεμα 'GPLONLY_'. insmod αγνοεί τοGPLONLY_ πρόθεμα στα σύμβολα κατά τη φόρτωση μιας ενότητας με άδεια GPL, έτσι ώστε η ενότητα να αναφέρεται απλώς στο κανονικό όνομα συμβόλου, χωρίς το πρόθεμα. Τα σύμβολα αποκλειστικά για GPL δεν διατίθενται σε ενότητες χωρίς άδεια GPL συμβατή, αλλά περιλαμβάνουν και ενότητες χωρίς άδεια.
Ksymoops Βοήθεια
Για να βοηθήσετε με το σβήσιμο του πυρήνα Oops όταν χρησιμοποιείτε μονάδες,insmod προεπιλογή για την προσθήκη ορισμένων συμβόλων στα ksyms, δείτε το-Y επιλογή. Αυτά τα σύμβολα αρχίζουν με__insmod_ modulename_ . ο modulename απαιτείται για να καταστούν τα σύμβολα μοναδικά. Είναι νόμιμο να φορτώνετε το ίδιο αντικείμενο περισσότερες από μία φορές κάτω από διαφορετικά ονόματα μονάδων. Επί του παρόντος, τα καθορισμένα σύμβολα είναι:
__insmod_ modulename _ Oobjectfile _ Μέρα _ Vversion
φακέλου αντικειμένων είναι το όνομα του αρχείου από το οποίο φορτώθηκε το αντικείμενο. Αυτό εξασφαλίζει ότι οι ksymoops μπορούν να αντιστοιχίσουν τον κώδικα στο σωστό αντικείμενο. mtime είναι η τελευταία τροποποιημένη χρονική σφραγίδα σε αυτό το αρχείο σε hex, μηδέν αν το stat απέτυχε. εκδοχή είναι η έκδοση του πυρήνα για την οποία έχει συνταχθεί η ενότητα, -1 αν δεν υπάρχει διαθέσιμη έκδοση. ο_O Το σύμβολο έχει την ίδια διεύθυνση έναρξης με την κεφαλίδα της μονάδας.
__insmod_ modulename _ Ssectionname _ Llength
Αυτό το σύμβολο εμφανίζεται στην αρχή των επιλεγμένων ενοτήτων ELF, επί του παρόντος .text, .rodata, .data, .bss και .sbss. Εμφανίζεται μόνο αν η ενότητα έχει μη μηδενικό μέγεθος. όνομα τομέα είναι το όνομα του τμήματος ELF, μήκος είναι το μήκος του τμήματος στο δεκαδικό. Αυτά τα σύμβολα βοηθούν το ksymoops να διευθύνει τις διευθύνσεις σε τμήματα όταν δεν υπάρχουν σύμβολα.
__insmod_ modulename _Ppersistent_ όνομα αρχείου
Δημιουργήθηκε μόνο απόinsmod εάν η ενότητα διαθέτει μία ή περισσότερες παραμέτρους που χαρακτηρίζονται ως επίμονα δεδομένα και ένα όνομα αρχείου για την αποθήκευση επίμονων δεδομένων (βλ-μι, παραπάνω).
Το άλλο πρόβλημα με τον εντοπισμό σφαλμάτων στον πυρήνα. Ωχ στην ενότητα είναι ότι το περιεχόμενο του / proc / ksyms και / proc / modules μπορεί να αλλάξει μεταξύ του Oops και κατά την επεξεργασία του αρχείου καταγραφής. Για να ξεπεραστεί αυτό το πρόβλημα, εάν υπάρχει τότε ο κατάλογος / var / log / ksymoopsinsmod καιrmmod θα αντιγράψει αυτόματα τις εντολές / proc / ksyms και / proc / modules στο / var / log / ksymoops με πρόθεμα 'date +% Y% m% d% H% M% S'. Ο διαχειριστής του συστήματος μπορεί να πει στο ksymoops ποια αρχεία στιγμιότυπων πρέπει να χρησιμοποιήσουν κατά το σφάλμα ενός Oops. Δεν υπάρχει διακόπτης για να απενεργοποιήσετε αυτό το αυτόματο αντίγραφο. Αν δεν θέλετε να συμβεί, μην δημιουργείτε / var / log / ksymoops. Αν αυτός ο κατάλογος υπάρχει, πρέπει να ανήκει σε root και να είναι 644 ή 600 και θα πρέπει να τρέχετε αυτό το σενάριο κάθε μέρα ή έτσι. Το παρακάτω σενάριο είναι εγκατεστημένο ως insmod_ksymoops_clean.
#! / bin / sh # Διαγράψτε τα αποθηκευμένα ksyms και τις ενότητες που δεν έχουν πρόσβαση σε 2 ημέρες εάν -d / var / log / ksymoops έπειτα set -e # Βεβαιωθείτε ότι υπάρχει πάντα τουλάχιστον μία έκδοση d = `ημερομηνία +% Y% m% d% H% M% S` cp -a / proc / ksyms /var/log/ksymoops/${d}.ksyms cp -a / proc / modules /var/log/ksymoops/${d}modules εντοπίστε / var / log / ksymoops - τύπος f -atime +2 -exec rm {} ; fi ΟΝΟΜΑ insmod - Εγκαταστήστε το module του πυρήνα με δυνατότητα φόρτωσης ΣΥΝΟΨΗ insmod -fhkLmnpqrsSvVxXyYN -ε persist_name -ο όνομα_μονάδας -Ο blob_name -Π πρόθεμα μονάδα μέτρησης σύμβολο= αξία … Βασικές πληροφορίες που πρέπει να γνωρίζετε