Τα modules του πυρήνα που φορτώνονται (loadable), συνήθως κάνουν οικονομία στη μνήμη και διευκολύνουν τις ρυθμίσεις. Το πεδίο των modules έχει μεγαλώσει, ώστε σήμερα περιλαμβάνει filesystems, drivers καρτών δικτύου, drivers μονάδων μαγνητικής ταινίας, drivers εκτυπωτών, και άλλα.
Οι utilities γιά τα modules είναι διαθέσιμες (ως αρχείο
modutils-x.y.z.tar.gz
) από εκεί, όπου πήρατε τον source κώδικα του
πυρήνα. Διαλέξτε την πλέον πρόσφατη έκδοση x.y.z
του σχετικού patch,
η οποία είναι ίση με (ή αμέσως παρακάτω από) την έκδοση του πυρήνα σας.
Ανοίξτε το με tar zxvf modutils-x.y.z.tar.gz
, πάτε με cd
στο directory που δημιουργήθηκε (modutils-x.y.z
), διαβάστε το
README
, και ακολουθήστε τις οδηγίες εγκατάστασης (που συνήθως είναι
απλές, πχ κάτι σαν make install
). Τώρα, κανονικά πρέπει να έχετε τα
προγράμματα insmod
, rmmod
, ksyms
, lsmod
,
genksyms
, modprobe
, και depmod
στο dir
/sbin
. Αν θέλετε, κάντε μιά δοκιμή στις utilities αυτές με τον
driver "hw", που περιλαμβάνεται στην insmod
ως
παράδειγμα. Γιά λεπτομέρειες, ψάξτε το αρχείο INSTALL
στο σχετικό
subdir.
Η insmod
βάζει ένα module στον ενεργό πυρήνα. Τα modules
συνήθως έχουνε επέκταση .o
. Ο driver δοκιμών που προαναφέραμε,
ονομάζεται drv_hello.o
. Επομένως, γιά να τον βάλουμε στον πυρήνα,
θα δώσουμε insmod drv_hello.o
. Γιά να δούμε ποιά modules
χρησιμοποιεί αυτή τη στιγμή ο πυρήνας μας, δίνουμε lsmod
. Η έξοδος
είναι κάπως έτσι :
blah# lsmod Module: #pages: Used by: drv_hello 1
Το drv_hello
είναι το όνομα του module, καταλαμβάνει μιά σελίδα των
4k μνήμης, και προς το παρόν δεν υπάρχουν άλλα modules που εξαρτώνται απ'
αυτό. Γιά να το αφαιρέσουμε, δίνουμε rmmod drv_hello
. Σημειώστε ότι
η rmmod
χρειάζεται όνομα module ως όρισμα, όχι όνομα
αρχείου. Το όνομα του module το παίρνετε από τη λίστα του lsmod
. Ο
σκοπός των υπολοίπων utilities γιά τα modules αναφέρεται στις αντίστοιχες
σελίδες man.
Από την έκδοση 2.0.30, τα περισσότερα πακέτα είναι διαθέσιμα ως loadable
modules. Γιά να τα χρησιμοποιήσετε, πρώτα βεβαιωθείτε ότι δεν τα έχετε
στήσει μαζί με τον πυρήνα. Δηλαδή, μην απαντάτε y
γι' αυτά, κατά τη
διάρκεια της make config
. Κάντε compile έναν νέο πυρήνα, και
επανεκκινήστε μ' αυτόν. Μετά, ξαναπάτε με cd
στο
/usr/src/linux
, και δώστε make modules
. Αυτό κάνει compile
όλα τα modules που δεν βάλατε στο στήσιμο του πυρήνα, και τοποθετεί links
προς αυτά στο /usr/src/linux/modules
. Μπορείτε να τα
χρησιμοποιήσετε κατευθείαν από το dir αυτό, ή να δώσετε make modules_install
, που θα τα εγκαταστήσει στο dir
/lib/modules/x.y.z
(όπου x.y.z
είναι η έκδοση του πυρήνα).
Αυτό είναι πολύ εύκολο ειδικά με τα filesystems. Πχ, πιθανότατα δεν θα
χρησιμοποιήσετε συχνά τα filesystems minix και msdos, και, αν προσωπικά
εύρισκα μιά δισκέτα msdos (μπρρρρ!!!), θα έδινα insmod /usr/src/linux/modules/msdos.o
, και μετά rmmod msdos
. Αυτή η
διαδικασία εξοικονομεί περίπου 50k RAM στον πυρήνα κατά την υπόλοιπη
λειτουργία του. Εδώ επιβάλλεται μιά μικρή σημείωση γιά το filesystem minix :
Πάντα να το στήνετε κατευθείαν μέσα στον πυρήνα, όταν πρόκειται γιά
χρήση σε δισκέτες "διάσωσης".