Site Navigation:
 
 

8. Πυρήνας Linux

Αυτή η ενότητα καλύπτει αλλαγές και σημαντικές πληροφορίες σχετικά με τον πυρήνα 2.6.18 στο Fedora Core 6. Ο πυρήνας 2.6.18 περιλαμβάνει:

  • Υποστήριξη lightweight user space priority inheritance (http://lwn.net/Articles/178253/)

  • Εργαλείο αποσφαλμάτωσης που υποστηρίζει ελεγκτή κλειδώματος (http://lwn.net/Articles/185666/)

  • Νέα πολιτική εξοικονόμησης ενέργειας για multicore συστήματα, SMPnice (http://lwn.net/Articles/186438/)

  • Ένα αρκετά βελτιωμένο SATA layer (http://lwn.net/Articles/183734/)

  • Swapless page migration (http://lwn.net/Articles/160201/)

  • Per-zone VM counters

  • Per-task delay accounting

  • Ένας νέος έλεγχος πρόσβασης per-packet για το SELinux ονομαζόμενος secmark (http://james-morris.livejournal.com/11010.html)

  • Randomized i386 vDSO

  • Νέοι οδηγοί και επιπρόσθετη υποστήριξη συσκευών για πολλούς ήδη υπάρχοντες οδηγούς

  • Πολλές διορθώσεις σφαλμάτων και άλλες μικρές βελτιώσεις

8.1. Έκδοση

Αυτή η διανομή βασίζεται στη σειρά 2.6 του πυρήνα του Linux. Το Fedora Core μπορεί να περιέχει επιπλέον patch για βελτιώσεις, διορθώσεις σφαλμάτων ή επιπλέον χαρακτηριστικά. Για αυτόν το λόγο, ο πυρήνας του Fedora Core μπορεί να μην είναι γραμμή-προς-γραμμή ίδιος με τον αποκαλούμενο πυρήνα vanilla από τον ιστοχώρο kernel.org:

http://www.kernel.org/

Για να πάρετε μια λίστα από αυτά τα patch, κατεβάστε το πηγαίο πακέτο RPM και εκτελέστε την παρακάτω εντολή σε αυτό:

rpm -qpl kernel-<έκδοση>.src.rpm

8.2. Αρχείο αλλαγών

Για να πάρετε ένα αρχείο καταγραφής των αλλαγών στο πακέτο, εκτελέστε την παρακάτω εντολή:

rpm -q --changelog kernel-<έκδοση>

Αν χρειάζεστε ένα αρχείο καταγραφής αλλαγών πιο φιλικό προς το χρήστη, ανατρέξτε στο http://wiki.kernelnewbies.org/LinuxChanges. Μια σύντομη αλλά πλήρης καταγραφή αλλαγών (diff) του πυρήνα είναι διαθέσιμη από το http://kernel.org/git. Ο πυρήνας του Fedora είναι βασισμένος στο δέντρο του Linus.

Οι προσαρμογές που έγιναν για την έκδοση που υπάρχει στο Fedora είναι διαθέσιμες στο http://cvs.fedora.redhat.com.

8.3. Μορφές ανάπτυξης πυρήνα

Το Fedora Core 6 περιέχει τις ακόλουθες μορφές ανάπτυξης του πυρήνα:

  • Αρχικός πυρήνας για χρήση στα περισσότερα συστήματα. Ρυθμισμένες πηγές είναι διαθέσιμες στο πακέτο kernel-devel-<έκδοση>.<αρχιτεκτονική>.rpm.

  • kernel-PAE, για χρήση σε 32-bit x86 συστήματα με > 4GB RAM, ή με επεξεργαστές (CPUs) που έχουν 'NX (No eXecute)' χαρακτηριστικά. Αυτός ο πυρήνας υποστηρίζει uniprocessor αλλά και multi-processor συστήματα.

  • Ιδεατός πυρήνας για χρήση με το πακέτο Xen emulator. Ρυθμισμένες πηγές είναι διαθέσιμες στο πακέτο kernel-xen-devel-<έκδοση>.<αρχιτεκτονική>.rpm.

  • Kdump πυρήνας για χρήση με δυνατότητες kexec/kdump. Ρυθμισμένες πηγές είναι διαθέσιμες στο πακέτο ename>kernel-kdump-devel-<έκδοση>.<αρχιτεκτονική>.rpm

Μπορείτε να έχετε εγκατεστημένες τις κεφαλίδες πυρήνα για όλες τις μορφές πυρήνα ταυτόχρονα. Τα αρχεία εγκαθιστώνται στο δέντρο /usr/src/kernels/<έκδοση>-[xen|kdump]-<αρχιτεκτονική>/. Χρησιμοποιήστε την παρακάτω εντολή:

su -c 'yum install kernel-{PAE,xen,kdump}-devel'

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

[Σημείωση]Ο προεπιλεγμένος πυρήνας παρέχει SMP

Δεν υπάρχει ξεχωριστός πυρήνας SMP διαθέσιμος για την αρχιτεκτονική x86_64 στο Fedora Core 6. Υποστήριξη για multiprocessor είναι διαθέσιμη από τον ιδεατό πυρήνα.

[Σημείωση]Υποστήριξη πυρήνα για PowerPC

Δεν υπάρχει υποστήριξη του Xen ή του kdump για την αρχιτεκτονική PowerPC στο Fedora Core 6.Για την 32-bit PowerPC αρχιτεκτονική υπάρχει ακόμη ξεχωριστός SMP πυρήνας.

8.4. Αναφορά σφαλμάτων

Ανατρέξτε στο http://kernel.org/pub/linux/docs/lkml/reporting-bugs.html για πληροφορίες για την αναφορά σφαλμάτων στον πυρήνα του Linux. Μπορείτε επίσης να χρησιμοποιήσετε το http://bugzilla.redhat.com για αναφορά σφαλμάτων που είναι ειδικά για το Fedora.

8.5. Συμβατότητα με γενικά textbooks

Πολλά από τα βοηθήματα, παραδείγματα και βιβλία κειμένου σχετικά με την ανάπτυξη των πυρήνων του Linux υποθέτουν πως ο πηγαίος κώδικας του πυρήνα είναι εγκατεστημένος κάτω από τον κατάλογο /usr/src/linux/. Αν δημιουργήσετε ένα συμβολικό σύνδεσμο, όπως φαίνεται παρακάτω, θα μπορείτε να χρησιμοποιήσετε αυτό το υλικό εκμάθησης με τα πακέτα του Fedora Core. Εγκαταστήστε τον κατάλληλο πηγαίο κώδικα, όπως αναφέρθηκε παραπάνω, και κατόπιν εκτελέστε την παρακάτω εντολή:

su -c 'ln -s /usr/src/kernels/<έκδοση>.<έκδοση>-<αρχιτεκτονική> /usr/src/linux'

Εισάγετε το συνθηματικό του root όταν αυτό ζητηθεί.

8.6. Προετοιμασία για χτίσιμο πυρήνα

Το Fedora Core 6 δεν περιέχει το πακέτο kernel-source το οποίο περιλαμβανόταν σε παλιότερες εκδόσεις, αφού μόνο το πακέτο kernel-devel απαιτείται πλέον για να χτιστούν εξωτερικά αρθρώματα. Ρυθμισμένες εκ των προτέρων πηγές είναι διαθέσιμες, όπως περιγράφεται στην ενότητα για τις μορφές πυρήνα.

[Σημείωση]Οι οδηγίες αφορούν τον τρέχον πυρήνα

Για την απλοποίηση των παρακάτω κατευθύνσεων, έχει γίνει η παραδοχή ότι θέλετε να ρυθμίσετε τον πηγαίο κώδικα πυρήνα έτσι ώστε να ταιριάζει με τον τρέχον πυρήνα του συστήματός σας. Στα παρακάτω βήματα, η έκφραση <έκδοση> αναφέρεται στην έκδοση του πυρήνα που μπορεί να ληφθεί χρησιμοποιώντας την εντολή: uname -r.

Οι χρήστες που χρειάζονται πρόσβαση στον πηγαίο, αυθεντικό πυρήνα του Fedora Core μπορούν να τον βρουν στο πακέτο .src.rpm. Για να δημιουργήσετε ένα αναλυτικό πηγαίο δέντρο από αυτό το αρχείο, ακολουθήστε τα παρακάτω βήματα:

[Σημείωση]Μη χτίζετε πακέτα σαν υπερχρήστης (root)

Η εγκατάσταση και το χτίσιμο πακέτων ως υπερχρήστης είναι γενικώς επικίνδυνη και δεν χρειάζεται ούτε καν στην περίπτωση που χτίζετε τον πυρήνα. Αυτές οι οδηγίες σας επιτρέπουν να εγκαταστήσετε τον πυρήνα ως απλός χρήστης. Πολλοί ιστοχώροι που περιέχουν γενικές πληροφορίες αναφέρονται στο/usr/src/linux στις οδηγίες που αφορούν στον πυρήνα. Αν χρησιμοποιείτε αυτές τις οδηγίες, απλώς κάνετε αντικατάσταση ~/rpmbuild/BUILD/kernel-<έκδοση>/linux-<έκδοση>.<αρχιτεκτονική>."]]

  1. Προετοιμάστε ένα περιβάλλον ανάπτυξης πακέτων RPM στον αρχικό σας κατάλογο. Εκτελέστε τις ακόλουθες εντολές:

    su -c 'yum install rpmdevtools yum-utils' 
    rpmdev-setuptree
  2. Εισάγετε το συνθηματικό του root όταν αυτό ζητηθεί.

  3. Κάνετε λήψη του αρχείου kernel-<έκδοση>.src.rpm . Ενεργοποιήστε όλα τα κατάλληλα αποθετήρια όπως τα Core, Updates, ή Testing, με την παράμετρο -e:

     yumdownloader -e core-source -e updates-source --source kernel
  4. Εισάγετε το συνθηματικό του root όταν αυτό ζητηθεί.

  5. Εγκαταστείστε το αρχείο kernel-<έκδοση>.src.rpm χρησιμοποιώντας την εντολή:

     rpm -Uvh kernel-<έκδοση>.src.rpm
  6. Η εντολή αυτή γράφει τα περιεχόμενα του RPM στο ${HOME}/rpmbuild/SOURCES και στο ${HOME}/rpmbuild/SPECS, όπου ${HOME} είναι ο αρχικός σας κατάλογος.

    [Σημείωση]Απαιτούμενος χώρος

    Η διαδικασία χτισίματος του πυρήνα μπορεί να απαιτεί αρκετά gigabytes επιπλέον χώρου στο σύστημα αρχείου σας που περιέχει τον αρχικό σας κατάλογο.

  7. Προετοιμάστε τις πηγές του πυρήνα χρησιμοποιώντας τις παρακάτω εντολές:

    cd ~/rpmbuild/SPECS 
    rpmbuild -bp --target $(uname -m) kernel-2.6.spec
  8. Το δέντρο του πηγαίου κώδικα του πυρήνα βρίσκεται στον κατάλογο ~/rpmbuild/BUILD/kernel-<έκδοση>/linux-<έκδοση>.<αρχιτεκτονική>.

    Οι ρυθμίσεις για τους ειδικούς πυρήνες που συμπεριλαμβάνονται στο Fedora Core 6 βρίσκονται στον κατάλογο ~/rpmbuild/BUILD/kernel-<έκδοση>/linux-<έκδοση>.<αρχιτεκτονική>/configs . Για παράδειγμα, το αρχείο για τη ρύθμιση του πυρήνα για i686 ονομάζεται ~/rpmbuild/BUILD/kernel-<έκδοση>/linux-<έκδοση>.<αρχιτεκτονική>/configs/kernel-<έκδοση>-i686.config. Εκτελέστε την παρακάτω εντολή για να βάλετε το επιθυμητό αρχείο ρύθμισης στο σωστό σημείο:

     cp configs/ <desired-config-file> .config
  9. Κάθε πυρήνας παίρνει ένα όνομα που βασίζεται στην έκδοσή του. Το όνομα του πυρήνα είναι εκείνο που επιστρέφει η εντολή uname -r. Το όνομα του πυρήνα ορίζεται από τις τέσσερις πρώτες γραμμές του Makefile του πυρήνα. Το Makefile παράγει ένα όνομα για τον πυρήνα το οποίο είναι διαφορετικό από εκείνο του πυρήνα που εκτελείται. Για να είναι αποδεκτό το όνομα από τον πυρήνα που εκτελείται, ένα άρθρωμα πρέπει να γίνει compile για έναν πυρήνα με το σωστό όνομα. Για να γίνει αυτό πρέπει να επεξεργαστείτε το Makefile του πυρήνα.

    Για παράδειγμα, αν η εντολή uname -r επιστρέφει 2.6.17-1.2345_FC6, αλλάξτε τον ορισμό του EXTRAVERSION από αυτό:

    EXTRAVERSION = -prep 

    σε αυτό:

    EXTRAVERSION = -1.2345_FC6

    Δηλαδή, αντικαταστήσετε τα πάντα από την τελευταία παύλα και μετά.

  10. Εκτελέστε την παρακάτω εντολή:

    make oldconfig

    Μπορείτε τώρα να συνεχίσετε όπως συνήθως.

[Σημείωση]Χτίσιμο εκτελέσιμων RPM πυρήνα

Συνήθως οι πυρήνες για το Fedora χτίζονται χρησιμοποιώντας το rpmbuild εργαλείο και ένα specfile.Τα αποτελέσματά σας μπορεί να διαφοροποιηθούν αν χρησιμοποιήσετε την ενσωματωμένη εντολή make rpm του πυρήνα.

8.7. Χτίσιμο μόνο αρθρωμάτων του πυρήνα

Ένα ανεπτυγμένο δέντρο πηγαίου κώδικα δεν είναι απαραίτητο για το χτίσιμο ενός αρθρώματος του πυρήνα, όπως για παράδειγμα ο δικός σας οδηγός μίας συσκευής έναντι του ήδη χρησιμοποιούμενου από τον πυρήνα. Μόνο το πακέτο kernel-devel χρειάζεται για το χτίσιμο ενός εξωτερικού αρθρώματος. Εάν δεν το έχετε επιλέξει κατά τη διάρκεια της εγκατάστασης, χρησιμοποιήστε την εφαρμογή Pirut για να το εγκαταστήσετε, πηγαίνοντας στοΕφαρμογέςΠροσθαφαίρεση λογισμικού ή χρησιμοποιήστε την εντολή yum για την εγκατάσταση. Εκτελέστε την παρακάτω εντολή για να εγκαταστήσετε το πακέτο kernel-devel χρησιμοποιώντας το yum.

su -c 'yum install kernel-devel' 

Για να δημιουργήσετε για παράδειγμα το άρθρωμα foo.ko, φτιάξτε το ακόλουθο Makefile μέσα στον κατάλογο που περιέχει το αρχείο foo.c:

obj-m := foo.o 

KDIR  := /lib/modules/$(shell uname -r)/build
PWD   := $(shell pwd)

default:
    $(MAKE) -C $(KDIR) M=$(PWD) modules

Δώστε την εντολή make για να δημιουργηθεί το άρθρωμα foo.ko.