8.5. Χτίσιμο ενός καινούριου πυρήνα

Γιατί θα ήθελε κάποιος να φτιάξει έναν καινούριο πυρήνα; Συνήθως δεν είναι απαραίτητο καθώς ο προκαθορισμένος πυρήνας που έρχεται με το Debian μπορεί να χειριστεί τις περισσότερες διαμορφώσεις συστημάτων. Επιπλέον το Debian προσφέρει έναν αριθμό εναλλακτικών πυρήνων. Ίσως να θέλετε λοιπόν να ελέγξετε πρώτα αν υπάρχει κάποιο εναλλακτικό πακέτο εικόνας ενός πυρήνα που να ταιριάζει καλλίτερα στο υλικό του συστήματός σας. Παρόλα αυτά ίως να είναι χρήσιμο να φτιάξετε έναν καινούριο πυρήνα για να:

8.5.1. Διαχείρισης της Εικόνας του Πυρήνα

Μην φοβηθείτε να προσπαθήσετε να χτίσετε τον πυρήνα. Είναι διασκεδαστικό και προσοδοφόρο!

Για να χτίσετε έναν πυρήνα με τον "τρόπο του Debian", χρειάζεστε μερικά πακέτα: fakeroot, kernel-package, kernel-source-2.6.8 (η πιο πρόσφατη έκδοση τη στιγμή που γράφονται αυτές οι γραμμές) και μερικά άλλα που πιθανόν είναι ήδη εγκατεστημένα (δείτε το /usr/share/doc/kernel-package/README.gz για την πλήρη λίστα).

Αυτή η μέθοδος θα φτιάξει ένα αρχείο .deb από τον κώδικα του πυρήνα και , αν έχετε μη-συνηθισμένα modules, θα φτιάξει ένα συγχρονισμένο .deb αρχείο και γι΄αυτά. Είναι ένας καλλίτερος τρόπος για να διαχειρίζεστε εικόνες του πυρήνα. Στον κατάλογο /boot θα τοποθετηθούν ο πυρήνας. το αρχείο System.map και ένα αρχείο καταγραφής του αρχείου config της δημιουργίας τους.

Σημειώστε ότι δεν είσαστε υποχρεωμένοι να χτίσετε τον πυρήνα σύμφωνα με την “μέθοδο του Debian”, αλλά πιστεύουμε ότι η χρήση του συστήματος πακέτων για τη διαχείριση του πυρήνα σας είναι στην ουσία ασφαλέστερη και ευκολότερη. Στην πραγματικότητα μπορείτε να πάρετε τον κώδικα του πυρήνα από τον ίδιο τον Linus αντί από το πακέτο kernel-source-2.6.8, και παρόλα αυτά να χρησιμοποιήσετε και πάλι την μέθοδο του χτισίματος του πυρήνα με το kernel-package.

Σημειώστε ότι θα βρείτε πλήρη τεκμηρίωση για την χρήση του kernel-package στον κατάλογο /usr/share/doc/kernel-package. Αυτή η ενότητα είναι απλά μια σύντομη παρουσίαση.

Στο εξής θεωρούμε ότι έχετε ελεύθερη πρόσβαση στο μηχάνημά σας και θα αποσυμπιέσετε τον κώδικα του πυρήνα κάπου στον προσωπικό σας κατάλογο[9]. Υποθέτουμε ακόμα ότι η έκδοση του πυρήνα σας είναι 2.6.8. Βεβαιωθείτε ότι είσαστε στον κατάλογο όπου θέλετε να ξεπακετάρετε τον κώδικα του πυρήνα, και κάντε το με την εντολή tar xjf /usr/src/kernel-source-2.6.8.tar.bz2 και πηγαίνετε στον κατάλογο kernel-source-2.6.8 που θα έχουν δημιουργηθεί.

Τώρα μπορείτε να διαμορφώσετε τον πυρήνα σας. Εκτελέστε την εντολή make xconfig αν έχετε ήδη εγκαταστήσει, ρυθμίσει και τρέξει το περιβάλλον Χ11 ή διαφορετικά την make menuconfig (θα πρέπει να έχετε εγκαταστήσει το πακέτο libncurses5-dev). Αφιερώστε χρόνο στο να διαβάσετε την επιτόπου βοήθεια και διαλέξτε με προσοχή. Αν έχετε αμφιβολίες είναι συνήθως καλλίτερο να περιλαμβάνετε τους οδηγούς των συσκευών για τους οποίους (το λογισμικό που χειρίζεται τις περιφερειακές συσκευές όπως κάρτες Ethernet, ελεγκτές SCSI κτλ). για τους οποίους δεν είστε βέβαιοι. Προσέξτε: άλλες επιλογές που δεν σχετίζονται με ένα συγκεκριμένο υλικό θα πρέπει να αφήνονται στις προεπιλεγμένες τιμές τους αν δεν τις καταλαβαίνετε επαρκώς. Μην ξεχάσετε να επιλέξετε “Kernel module loader” στο “Loadable module support” (δεν είναι προεπιλεγμένο). Αν δεν το κάνετε η εγκατάσταση του Debian θα αντιμετωπίσει προβλήματα.

Καθαρίστε το δέντρο με τον πηγαίο κώδικα και επανρυθμίστε τις παραμέτρους του kernel-package. Για να το κάνετε αυτό εκτελέστε make-kpkg clean.

Τώρα χτίστε τον πυρήνα: fakeroot make-kpkg --revision=custom.1.0 kernel_image. Ο αριθμός έκδοσης “1.0”μπορεί να αλλάξει όπως θέλετε. Είναι απλά ένας αριθμός έκδοσης που μπορείτε να χρησιμοποιείτε για να καταγράφετε τους πυρήνες που φτιάχνετε. Αντίστοιχα, μπορείτε να βάλετε οποιαδήποτε λέξη στη θέση του “custom” (πχ. το όνομα του μηχανήματός σας). Η μεταγλώττιση του πυρήνα μπορεί να πάρει αρκετή ώρα ανάλογα με την ισχύ του μηχανήματός σας.

Αν θέλετε υποστήριξη PCMCIA θα πρέπει επίσης να εγκαταστήσετε το πακέτο pcmcia-source. Αποσυμπιέστε το συμπιεσμένο αρχείο σαν χρήστης root στον κατάλογο /usr/src (είναι σημαντικό τα modules να βρίσκονται εκεί που αναμένεται να βρίσκονται, δηλαδή στον κατάλογο /usr/src/modules). Μετά, σαν root, εκτελέστε την εντολή make-kpkg modules_image.

Όταν η μεταγλώττιση έχει ολοκληρωθεί, μπορείτε να εγκαταστήσετε τον προσωπικό σας πυρήνα όπως ένα οποιοδήποτε πακέτο.Σαν root τρέξτε dpkg -i ../kernel-image-2.6.8-subarchitecture_custom.1.0_i386.deb. Το κομμάτι subarchitecture είναι προαιρετικά μια υπο-αρχιτεκτονική όπως “i586”, που εξαρτάται από τις επιλογές του πυρήνα που κάνετε. Η εντολή dpkg -i kernel-image... θα εγκαταστήσει τον πυρήνα μαζί με κάποια επιπλέον χρήσιμα αρχεία. Για παράδειγμα, το System.map θα εγκατασταθεί κανονικά (χρήσιμο για την εκσφαλμάτωση προβλημάτων του πυρήνα) 'οπως και το /boot/config-2.6.8 που περιέχει τις τρέχουσες ρυθμίσεις σας, Το καινούριο πακέτο σας kernel-image-2.6.8 είναι ακόμα αρκετά έξυπνο ώστε να χρησιμοποιήσει αυτόματα τον φορτωτή εκκίνησης της πλατφόρμας σας για να ενημερώσει τον μηχανισμό εκκίνησης επιτρέποντας σας έτσι να εκκινήσετε χωρίς να ξανατρέξετε τον φορτωτή εκκίνησης. Αν έχετε δημιουργήσει ένα πακέτο των modules, πχ. αν έχετε PCMCIA, θα πρέπει επίσης να εγκαταστήσετε το πακέτο αυτό.

Είναι στιγμή να επανεκκινήσετε το σύστημα: διαβάστε προσεκτικά οποιοδήποτε προειδοποιητικό μήνυμα πιθανόν παρουσιάστηκε στο προηγούμενο βήμα και μετά εκτελέστε shutdown -r now.

. Για περισσότερες πληροφορίες για το πακέτο kernel-package,διαβάστε την εξαιρετική τεκμηρίωση στο /usr/share/doc/kernel-package.



[9] Υπάρχουν και άλλες τοποθεσίες όπου μπορείτε να αποσυμπιέσετε τον κώδικα του πυρήνα και να χτίσετε τον δικό σας πυρήνα, αλλά αυτή είναι η ευκολότερη καθώς δεν απαιτεί οποιαδήποτε ειδική άδεια πρόσβασης.