Next Previous Contents

9. Modules

Τα modules του πυρήνα που φορτώνονται (loadable), συνήθως κάνουν οικονομία στη μνήμη και διευκολύνουν τις ρυθμίσεις. Το πεδίο των modules έχει μεγαλώσει, ώστε σήμερα περιλαμβάνει filesystems, drivers καρτών δικτύου, drivers μονάδων μαγνητικής ταινίας, drivers εκτυπωτών, και άλλα.

9.1 Εγκαθιστώντας τις utilities γιά τα modules

Οι 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.

9.2 Modules που διανέμονται μαζί με τον πυρήνα

Από την έκδοση 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 : Πάντα να το στήνετε κατευθείαν μέσα στον πυρήνα, όταν πρόκειται γιά χρήση σε δισκέτες "διάσωσης".


Next Previous Contents