[HOWTO] Μεταγλώττιση πυρήνα σε Debianοειδή συστήματα

HOWTO και TIP.
Άβαταρ μέλους
IrDA
Sr. Member
Sr. Member
Δημοσιεύσεις: 413
Εγγραφή: 15 Δεκ 2005, 21:11
Distro: Debian Testing
Επικοινωνία:

[HOWTO] Μεταγλώττιση πυρήνα σε Debianοειδή συστήματα

Δημοσίευση από IrDA » 08 Δεκ 2008, 17:52

Η παρούσα καταχώρηση έχει και τον χαρακτήρα των προσωπικών σημειώσεων ;)

\\BEGIN

Ο πυρήνας μπορεί να βρεθεί στην διεύθυνση www.kernel.org. Για τις απαιτήσεις της καταχώρησης υποθέτουμε πως έχουμε επιλέξει τον πυρήνα 2.6.27.8 (που είναι και ο τελευταίος ευσταθής την ώρα που γράφεται η καταχώρηση). Θα πρέπει να εργαζόμαστε ως root οπότε η δέουσα προσοχή είναι απαραίτητη.

Κώδικας: Επιλογή όλων

wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.27.8.tar.bz2
Το επόμενο βήμα είναι η αποσυμπίεση του πυρήνα και η τοποθέτησή του στον κατάλογο που θα εργαστούμε.

Κώδικας: Επιλογή όλων

cp linux-2.6.27.8.tar.bz2 /usr/src/
tar xvjf linux-2.6.27.8.tar.bz2
ln -s linux-2.6.27.8 linux
cd linux/
Τα repositories του debian παρέχουν και αυτά κάποιους πυρήνες

Κώδικας: Επιλογή όλων

mr@instron:/usr/src$ apt-cache search linux-source
linux-patch-debian-2.6.26 - Debian patches to version 2.6.26 of the Linux kernel
linux-source-2.6.26 - Linux kernel source for version 2.6.26 with Debian patches
linux-tree-2.6.26 - Linux kernel source tree for building Debian kernel images
μπορούνε να εγκαταστήσουμε το linux-source-2.6.26. Το μειονέκτημα που έχει αυτή η προσέγγιση είναι ότι συνήθως δεν έχουμε τον τελευταίο πυρήνα αλλά μία προηγούμενη έκδοσή του.

Τώρα είμαστε έτοιμοι να ξεκινήσουμε. Αρχικά δίνουμε:

Κώδικας: Επιλογή όλων

make clean && make mrproper
η εντολή αυτή διαγράφει τα objects που μπορεί να έχουν δημιουργηθεί και διαγράφει επίσης όλα τα αρχεία παραμετροποίησης (configuration files). Έπειτα από αυτό το βήμα αρχίζουμε την παραμετροποίηση. Είναι μία καλή πρακτική να χρησιμοποιούμε τις παλιές παραμέτρους του πυρήνα ώστε να έχουμε ένα αρχικό σημείο αναφοράς. Για να χρησιμοποιήσουμε το παλιό αρχείο παραμετροποίησης δίνουμε την εντολή

Κώδικας: Επιλογή όλων

cp /boot/config-'uname -r' ./.config
η οποία λέει να πάρει το αρχείο παραμετροποίησης του τρέχοντα πυρήνα από τον κατάλογο /boot και να το αντιγράψει στον κατάλογο που εργαζόμαστε τώρα με το όνομα .config . Στη συνέχεια χτίζουμε το μενού για την παραμετροποίηση:

Κώδικας: Επιλογή όλων

make xconfig
περιμένουμε (αν έχουμε παλιό υπολογιστή) και αρχίζουμε να επιλέγουμε τις επιλογές. Γενικότερα αυτό το σημείο θέλει κάποιο ψάξιμο αλλά παρέχετε κάποια μικρή βοήθεια μέσα στο παράθυρο της εφαρμογής. Μόλις κάνουμε τις αλλαγές που επιθυμούμε επιλέγουμε την αποθήκευση του αρχείου και είμαστε έτοιμοι να μεταγλωττίσουμε τον πυρήνα. Δίνουμε:

Κώδικας: Επιλογή όλων

make-kpkg clean
fakeroot make-kpkg --initrd --append-to-version=-ΕΔΩ-ΟΤΙ-ΘΕΛΟΥΜΕ kernel_image kernel_headers
στο -ΕΔΩ-ΟΤΙ-ΘΕΛΟΥΜΕ, το ότι θέλουμε σημαίνει alphanumeric χαρακτήρες, παύλες (-) και θα πρέπει πάντα να αρχίζει η επιλογής μας με -. Έπειτα περιμένουμε (είτε έχουμε γρήγορο είτε πιο παλιό μηχάνημα) ...

Μόλις τελειώσει η μεταγλώττιση θα έχουν δημιουργηθεί δύο πακέτα .deb στον κατάλογο /usr/src/. Το πρώτο είναι ο νέος πυρήνας και στο άλλο είναι τα headers του πυρήνα που είναι απαραίτητα εάν θέλουμε να μεταγλωττίσουμε κάποιο module αργότερα. Τα πακέτα μπορούμε να τα εγκαταστήσουμε στο σύστημά μας με τον πατροπαράδοτο τρόπο:

Κώδικας: Επιλογή όλων

dpkg -i linux-image-2.6.27.8-ΕΔΩ-ΟΤΙ-ΘΕΛΟΥΜΕ_2.6.27.8-ΕΔΩ-ΟΤΙ-ΘΕΛΟΥΜΕ-10.00.Custom_i386.deb
dpkg -i linux-headers-2.6.27.8-ΕΔΩ-ΟΤΙ-ΘΕΛΟΥΜΕ_2.6.27.8-ΕΔΩ-ΟΤΙ-ΘΕΛΟΥΜΕ-10.00.Custom_i386.deb
Με τον τρόπο αυτό διασφαλίζουμε και την σωστή ενημέρωση του grub ώστε ο πυρήνας να εμφανιστεί ως επιλογή στο μενού όταν φορτώνει ο υπολογιστής. Εάν για κάποιο λόγο θέλουμε να διαγράψουμε τους πυρήνες μπορούν να το κάνουμε από μέσω του dpkg, του apt-get ή του aptitude (για το τελευταίο δεν είμαι σίγουρος, τα 2 πρώτα δουλεύουν κανονικά). Καλό θα ήταν να δώσουμε purge και όχι απλό remove.

\\END

Καλή μεταγλώττιση ;)

ΥΓ - επειδή η μετάφραση κάποιων εννοιών στα ελληνικά μου είναι δύσκολη (δεν τα έχω δει στα ελληνικά ποτέ :Ρ) μερικές έννοιες έχουν μείνει αμετάφραστες και άλλες που έχουν μεταφραστεί ίσως είναι λάθος οπότε όποιος μπορεί να βοηθήσει σε αυτή την κατεύθυνση ας το κάνει (k thnx).

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 1 επισκέπτης