Next Previous Contents

3. Πώς να ρυθμίσετε πραγματικά τον πυρήνα

3.1 Παίρνουμε τον πηγαίο (source) κώδικα

Μπορούμε να βρούμε τον source κώδικα με anonymous ftp στο ftp.kernel.org, στο dir /pub/linux/kernel/vx.y, όπου x.y είναι ο αριθμός έκδοσης (πχ 2.2), και - όπως προείπαμε - οι μονοί αριθμοί στο τέλος δείχνουν εκδόσεις ανάπτυξης, που μπορεί να είναι ασταθείς. Το αρχείο τυπικά ονομάζεται linux-x.y.z.tar.gz, όπου x.y.z είναι ο αριθμός έκδοσης. Τα διάφορα παρόμοια sites συχνά έχουνε κι ένα αρχείο με κατάληξη .bz2, δηλ. που συμπιέστηκε με το πρόγραμμα bzip2. (Αυτά τα αρχεία είναι μικρότερα, και χρειάζονται λιγότερο χρόνο να κατεβούν.)

Καλύτερα είναι να χρησιμοποιούμε το ftp.xx.kernel.org, όπου xx είναι ο κώδικας της χώρας σας. Γιά παράδειγμα, το ftp.at.kernel.org είναι γιά την Αυστρία, και το ftp.us.kernel.org γιά τις ΗΠΑ.

3.2 Ανοίγουμε τον source κώδικα

Κάνουμε login ως (ή su προς) root, και κάνουμε cd στο directory /usr/src. Εάν εγκαταστήσατε τον source κώδικα του πυρήνα (όπως κάνουν οι περισσότεροι χρήστες), θα υπάρχει ήδη ένα dir που λέγεται linux, που περιέχει όλο το δέντρο του παλιού source. Αν διαθέτετε αρκετό χώρο στον δίσκο και θέλετε να ενεργήσετε εκ του ασφαλούς, κρατήστε αυτό το directory. Μιά καλή ιδέα είναι να βρείτε ποιά έκδοση χρησιμοποιεί ο Η/Υ σας τώρα, και ανάλογα ν' αλλάξετε το όνομα του dir. Η εντολή uname -r δείχνει την παρούσα έκδοση του πυρήνα. Επομένως, αν η uname -r λέει 1.0.9, θα αλλάξετε το όνομα (με την εντολή mv) linux σε linux-1.0.9. Αν αισθάνεστε μετρίως ανυπόμονοι, απλά σβήστε όλο το συγκεκριμένο directory. Σε κάθε περίπτωση, πάντως, και πριν αποσυμπιέσετε τον πλήρη source κώδικα, βεβαιωθείτε πως δεν υπάρχει directory linux στο /usr/src.

Τώρα, μέσα στο /usr/src, αποσυμπιέστε τον κώδικα με την εντολή tar zxpvf linux-x.y.z.tar.gz. (Αν έχετε αρχείο απλά .tar, χωρίς .gz στο τέλος, δώστε tar xpvf linux-x.y.z.tar.) Θα δείτε να περνάνε μπροστά σας γρήγορα τα περιεχόμενα του source κώδικα. Όταν τελειώσετε, θα υπάρχει ένα νέο linux directory μέσα στο /usr/src. Γυρίστε με cd στο linux, και ψάξτε προσεκτικά το αρχείο README. Θα βρείτε μιά ενότητα με την ταμπέλα INSTALLING the kernel ( = εγκαθιστώντας τον πυρήνα). Εφαρμόστε τις σχετικές οδηγίες όταν πρέπει - συμβολικοί δεσμοί (symbolic links) που πρέπει να παραμείνουν στη θέση τους, αφαίρεση παλιών αρχείων .o, κλπ.

Αν έχετε αρχείο .bz2 και το πρόγραμμα bzip2 (διαβάστε σχετικά μ' αυτό στο http://www.muraroa.demon.co.uk/), δώστε :

     bz2cat linux-x.y.z.tar.bz2 | tar xvf -

3.3 Ρυθμίζουμε τον πυρήνα

Σημείωση : Μερικά από τα παρακάτω αποτελούν επανάληψη / διευκρίνηση μιας παρόμοιας ενότητας στο αρχείο README του Linus.

Η εντολή make config, όσο βρισκόμαστε στο /usr/src/linux, ξεκινάει ένα script ρυθμίσεων, που σας κάνει πολλές ερωτήσεις. Το script αυτό απαιτεί το bash, επομένως επαληθεύστε ότι το bash βρίσκεται στο /bin/bash, στο /bin/sh, ή στο $BASH.

Ωστόσο, υπάρχουν μερικές πιο ευχάριστες εναλλακτικές λύσεις στο make config, και πιθανόν να τις βρείτε ευκολότερες και πιο άνετες στη χρήση τους. Το make menuconfig είναι πιθανότατα το ευρύτερα χρησιμοποιούμενο. Ο,τι και να διαλέξετε, πάντως, είναι καλύτερο να εξοικειωθείτε με το συγκεκριμένο, επειδή θα επιστρέψετε σ' αυτό συντομότερα απ' όσο φανταζόσαστε. Όσοι τρέχετε τα X-Windows, μπορείτε να δοκιμάσετε το make xconfig, ε, να έχετε εγκαταστήσει το Tk ("click-o-rama" - Nat). Το make menuconfig είναι γιά όσους διαθέτουν το (n)curses και θα προτιμούσανε ένα text μενού. Αυτά τα περιβάλλοντα διαθέτουν ένα καθαρό πλεονέκτημα : Αν κάνεις λάθος επιλογή κατά τη διάρκεια των ρυθμίσεων, είναι απλή δουλειά το να επιστρέψεις και να τη διορθώσεις.

Με τα make menuconfig και make xconfig, οι επιλογές ρυθμίσεων εμφανίζονται ιεραρχικά.

Τώρα, είσαστε έτοιμοι ν' απαντήσετε στις ερωτήσεις, συνήθως με y (yes, ναι), ή n (no, όχι). Οι drivers των συσκευών συνήθως έχουνε μιά παράμετρο m. Αυτή σημαίνει "module", δηλαδή ο Η/Υ θα την κάνει compile, όχι όμως κατευθείαν μέσα στον πυρήνα, αλλά σαν module που φορτώνεται. Ενας κωμικότερος τρόπος να πεις τί σημαίνει το m, είναι "maybe". ( = Ίσως.) Οι παράμετροι με προφανέστερη χρήση και που δεν είναι τόσο βασικές, δεν θα συζητηθούν εδώ. Γιά σύντομη περιγραφή μερικών ακόμη, διαβάστε την ενότητα "Άλλες επιλογές ρυθμίσεων". Στο make menuconfig, το πλήκτρο του κενού διαστήματος εναλλάσσει την επιλογή.

Στους πυρήνες 2.0.x (και σε μεταγενέστερους) υπάρχει και επιλογή "?", η οποία δίνει σύντομη περιγραφή των παραμέτρων ρύθμισης. Αυτές οι πληροφορίες πιθανότατα είναι και οι πλέον πρόσφατα ενημερωμένες. Ορίστε και μιά λίστα μερικών σημαντικών χαρακτηριστικών, σε ποιό ιεραρχικό μενού βρίσκονται, καθώς και μιά σύντομη περιγραφή τους.

Απομίμηση του μαθηματικού συνεπεξεργαστή (Τύπος και χαρακτηριστικά του μPr)

Αν δεν έχετε μαθηματικό συνεπεξεργαστή (δηλ. έχετε σκέτο 386 ή 486SX Η/Υ), πρέπει ν' απαντήσετε y στη σχετική ερώτηση. Αν έχετε συνεπεξεργαστή, και παρ' όλ' αυτά απαντήσετε y, μην ανησυχείτε ιδιαίτερα - ο συνεπεξεργαστής θα χρησιμοποιηθεί, και το πρόγραμμα απομίμησής του θ' αγνοηθεί. Γιά οποιοδήποτε σχεδόν μοντέρνο μηχάνημα η απάντηση πρέπει να είναι no, αλλά μην ανησυχείτε αν απαντήσετε yes κατά λάθος. Αν δεν χρειαστεί, δεν θα χρησιμοποιηθεί.

Προχωρημένη υποστήριξη δίσκων MFM/RLL, IDE, cdrom (Block Devices)

Πιθανότατα θα την χρειαστείτε. Σημαίνει ότι ο πυρήνας θα υποστηρίξει στάνταρ σκληρούς δίσκους γιά PC, τους οποίους διαθέτουν οι περισσότεροι χρήστες. Ο συγκεκριμένος driver δεν υποστηρίζει μονάδες SCSI. Μ' αυτές θ' ασχοληθούμε πιο κάτω.

Μετά θα ερωτηθείτε σχετικά με drivers "old (παλιούς) disk-only" και "new (νέους) IDE". Σίγουρα πρέπει να διαλέξετε τον έναν απ' τους δυο. Η κύρια διαφορά τους είναι πως ο παλιός driver υποστηρίζει μόνο δύο δίσκους σε μονή διασύνδεση (δηλ. ένα μοναδικό διπλό καλώδιο δίσκων), και ο νέος υποστηρίζει δευτερεύουσα διασύνδεση (δηλ. δύο διπλά καλώδια) και μονάδες cd-rom IDE/ATAPI. Ο νέος driver is 4k μεγαλύτερος από τον παλιό, και θεωρητικά είναι και "βελτιωμένος", που σημαίνει ότι (εκτός από το να περιέχει διαφορετικό αριθμό bugs) μάλλον θα βελτιώσει την απόδοση του δίσκου σας, ειδικά αν διαθέτετε νεώτερο hardware (τύπου EIDE).

Υποστήριξη δικτύωσης (Γενικές ρυθμίσεις)

Στη θεωρία, πρέπει ν' απαντήσετε y μόνον αν ο Η/Υ σας βρίσκεται συνδεδεμένος σ' ένα δίκτυο (όπως πχ το Internet), ή θέλετε να χρησιμοποιήσετε τα SLIP, PPP, term, κλπ, γιά να συνδεθείτε μέσω τηλεφώνου στο Internet. Ωστόσο, επειδή που αρκετά πακέτα (όπως τα X Windows) απαιτούν δικτυακή υποστήριξη, ακόμη κι αν ο Η/Υ σας δεν βρίσκεται σε κάποιο δίκτυο, πρέπει ν' απαντήσετε y. Αργότερα, θα ερωτηθείτε αν θέλετε υποστήριξη δικτύωσης τύπου TCP/IP. Ξαναδώστε y και εδώ, αν δεν είσαστε απόλυτα βέβαιοι.

System V IPC (Γενικές ρυθμίσεις)

Ενας από τους καλύτερους ορισμούς της IPC (Interprocess Communication, επικοινωνία διαδικασιών) βρίσκεται στο γλωσσάριο, στο βιβλίο της Perl. Κάτι που δεν εκπλήσσει, επειδή αρκετοί προγραμματιστές σε Perl χρησιμοποιούν την IPC γιά να βάλουν τις processes να μιλήσουν η μιά στην άλλη, και παρόμοια γιά μερικά άλλα προγράμματα (με γνωστότερο παράδειγμα το DOOM), άρα δεν είναι καλή ιδέα ν' απαντήσετε n, εκτός αν γνωρίζετε ακριβώς τί κάνετε.

Οικογένεια του processor (Τύπος και χαρακτηριστικά του processor)

(Σε παλιότερους πυρήνες : Δώστε την παράμετρο -m486 γιά βελτιστοποίηση ειδικά γιά τον 486.)

Παραδοσιακά, εδώ κάνουμε compile με βελτιστοποίηση γιά συγκεκριμένο προσέσσορα. Παλιότερα, οι πυρήνες τρέχανε μιά χαρά σε διαφορετικούς προσέσσορες, αλλά ήσαν μεγαλύτεροι. Στους νεώτερους πυρήνες αυτό δεν ισχύει, επομένως πρέπει να πείτε γιά ποιόν προσέσσορα κάνετε compile τον πυρήνα. Ενας πυρήνας γιά "386" θα δουλέψει μ' αυτόν και κάθε νεώτερο τύπο ix86 Η/Υ.

Υποστήριξη SCSI

Αν έχετε συσκευές SCSI devices, απαντήστε y. Θα ερωτηθείτε γιά τις υπόλοιπες πληροφορίες, πχ υποστήριξη cd-rom, δίσκων, και τί είδους SCSI κάρτα διαθέτετε. Γιά περισσότερες λεπτομέρειες, διαβάστε το SCSI-HOWTO.

Υποστήριξη καρτών δικτύου

Αν έχετε κάρτα δικτύου, ή θέλετε να χρησιμοποιήσετε τα SLIP και PPP, ή μιά παράλληλη θύρα γιά σύνδεση με το Internet, δώστε y. Το script ρυθμίσεων θα σας ρωτήσει τί είδος κάρτας έχετε, και ποιό πρωτόκολλο να χρησιμοποιήσει.

Συστήματα αρχείων (Filesystems)

Μετά, το script ρυθμίσεων ρωτάει αν θέλετε υποστήριξη γιά τα εξής filesystems :

Το στάνταρ (minix) - Οι νεώτερες διανομές δεν δημιουργούν minix filesystems, και πολλοί χρήστες δεν το χρησιμοποιούν, αλλά ίσως να εξακολουθεί να χρειάζεται τούτο εδώ. Το χρησιμοποιούν μερικά προγράμματα σε "δισκέτα διάσωσης", αλλά κι άλλου είδους δισκέτες μπορεί να έχουν minix filesystem, μιά που είναι εύκολο να το χρησιμοποιούμε σε δισκέτες.

Το second extended - Αυτό είναι το στάνταρ filesystem του Linux. Εσείς μάλλον σίγουρα έχετε ένα τέτοιο, και πρέπει να απαντήσετε y.

Το msdos - Αν θέλετε να χρησιμοποιήσετε και τις MS-DOS partitions του σκληρού σας δίσκου, ή να κάνετε mount σε MS-DOS δισκέτες, δώστε y.

Υπάρχουν διαθέσιμοι και τύποι filesystems από διάφορα άλλα ΛΣ.

Το /proc - (Αυτό ήταν ιδέα των Bell Labs, υποθέτω.) Δεν φτιάχνουμε proc filesystem επάνω σ' έναν δίσκο : Αυτό είναι η διασύνδεση του filesystem γιά τον πυρήνα και τις διαδικασίες (processes). Το χρησιμοποιούν πολλά προγράμματα λίστας διαδικασιών (process listers), όπως πχ το ps. Δοκιμάστε πχ να δώσετε cat /proc/meminfo, ή cat /proc/devices. Μερικά κελύφη (shells), ειδικά το rc, χρησιμοποιούν το /proc/self/fd (γνωστό ως /dev/fd σε άλλα ΛΣ) γιά είσοδο - έξοδο (I/O). Σχεδόν με βεβαιότητα πρέπει να πείτε y εδώ. Πολλά σημαντικά εργαλεία του Linux βασίζονται σ' αυτό.

Το NFS - Αν ο Η/Υ σας είναι συνδεδεμένος σ' ένα δίκτυο, και θέλετε να χρησιμοποιείτε τα filesystems των άλλων Η/Υ που επίσης έχουν NFS, δώστε y.

Το ISO9660 - Βρίσκεται στα περισσότερα CD-ROMs. Αν έχετε μονάδα CD-ROM, και θέλετε να τη βλέπει το Linux, απαντήστε y.

Μα, δεν ξέρω ποιά filesystems χρειάζομαι!

Εντάξει, δώστε mount. Η έξοδος της εντολής θα είναι κάπως έτσι :

    blah# mount
    /dev/hda1 on / type ext2 (defaults)
    /dev/hda3 on /usr type ext2 (defaults)
    none on /proc type proc (defaults)
    /dev/fd0 on /mnt type msdos (defaults)

Κοιτάξτε σε κάθε γραμμή : Η λέξη δίπλα στην type δείχνει τον τύπο του filesystem. Στο παράδειγμά μας τα filesystems / και /usr είναι second extended, χρησιμοποιώ το /proc, και υπάρχει και μιά δισκέτα που έκανα mount, η οποία είναι του msdos (μπλιάχ!) filesystem.

Δοκιμάστε να δώσετε cat /proc/filesystems, αν έχετε ενεργοποιήσει το /proc : Θα δώσει μιά λίστα των filesystems που έχει ο πυρήνας σας.

Η ρύθμιση σπανίων, μη σημαντικών filesystems παραφουσκώνει τον πυρήνα. Διαβάστε στην ενότητα γιά τα modules πώς το αποφεύγουμε αυτό, και την ενότητα "Παγίδες" γιά το γιατί ένας παραφουσκωμένος πυρήνας είναι ανεπιθύμητος.

Συσκευές χαρακτήρων (Character devices)

Εδώ ενεργοποιείτε τους drivers γιά τον εκτυπωτή σας (δηλ. τον παράλληλο εκτυπωτή), γιά το ποντίκι τύπου busmouse ή PS/2 (πολλοί φορητοί Η/Υ χρησιμοποιούν το πρωτόκολλο PS/2 γιά τις trackballs που έχουνε), γιά μερικές μονάδες μαγνητικής ταινίας, και γιά άλλες παρόμοιες συσκευές "χαρακτήρων". Δώστε y γιά όποια συσκευή έχετε.

Σημείωση : το gpm είναι ένα πρόγραμμα, που ενεργοποιεί το ποντίκι (έξω από το περιβάλλον των X-Windows) γιά cut και paste ανάμεσα σε (virtual) κονσόλες. Πάει μιά χαρά με τα σειριακά ποντίκια, επειδή μπορεί να συνυπάρχει καλά με τα X, αλλά χρειάζονται ειδικά κόλπα γιά τους άλλους τύπους ποντικιών.

Ηχος

Αν έχετε ιδιαίτερη επιθυμία ν' ακούσετε το biff να γαβγίζει, δώστε y, και μετά θα πείτε στο πρόγραμμα ρυθμίσεων ό,τι έχει σχέση με την κάρτα ήχου σας. (Μιά σημείωση γιά τις ρυθμίσεις της κάρτας ήχου : Όταν σας ρωτήσει αν θέλετε να εγκαταστήσετε την πλήρη έκδοση του driver, μπορείτε ν' απαντήσετε n και να εξοικονομήσετε κάμποση μνήμη στον πυρήνα, διαλέγοντας μόνο τα χαρακτηριστικά που θεωρείτε απαραίτητα.)

Αν θέλετε να κάνετε σοβαρή υποστήριξη στην κάρτα ήχου, κοιτάξτε και τους δωρεάν drivers στο http://www.linux.org.uk/OSS/, και τους εμπορικούς του Open Sound System (OSS), στο http://www.opensound.com/.

Άλλες παράμετροι ρυθμίσεων

Εδώ δεν παρατίθενται όλες οι επιλογές ρυθμίσεων, επειδή αλλάζουν αρκετά συχνά, ή επειδή είναι σχετικά αυτονόητες (πχ η υποστήριξη γιά 3Com 3C509 σημαίνει να κάνουμε compile τον driver της συγκεκριμένης κάρτας ethernet.) Υπάρχει μιά αρκετά περιεκτική λίστα όλων των επιλογών (συν ένας τρόπος να τις εισάγουμε στο script Configure), από μιά προσπάθεια που άρχισε και συντηρείται από τον Axel Boldt (boldt@math.ucsb.edu), και πρόκειται γιά την online βοήθεια. Αυτή η λίστα είναι επίσης διαθέσιμη σε μορφή ενός τεράστιου αρχείου (που βρίσκεται στην έκδοση 2.0), του Documentation/Configure.help στο δέντρο των dirs του source κώδικα του πυρήνα του Linux σας.

Χάκεμα του πυρήνα

>Από το README του Linus :

Οι λεπτομέρειες της ρύθμισης γιά "χάκεμα του πυρήνα (kernel hacking)" συνήθως δημιουργούν έναν μεγαλύτερο ή αργότερο πυρήνα (ή και τα δύο), και μπορούν ακόμη να κάνουν τον πυρήνα λιγότερο σταθερό, όταν ρυθμίζουμε ρουτίνες, που πάντα ψάχνουν στον κακογραμμένο κώδικα γιά να βρουν τα προβλήματα του πυρήνα (η kmalloc() ). Επομένως, πιθανότατα να πρέπει ν' απαντήσετε "n" σε σχετικές ερωτήσεις γιά πυρήνα "παραγωγής".

3.4 Και τώρα, τί; (Το αρχείο Makefile)

Αφού τελειώσετε τις ρυθμίσεις, ένα μήνυμα σας λέει ότι ο πυρήνας σας είναι ρυθμισμένος, και να "ελέγξετε το επάνω-επάνω επίπεδο του Makefile γιά επιπλέον ρυθμίσεις (check the top-level Makefile for additional configuration)", κλπ.

Αρα, κοιτάζουμε το Makefile. Πιθανότατα να μη χρειαστεί να το αλλάξουμε, αλλά ποτέ δεν βλάπτει μιά ματιά. Μπορούμε επίσης ν' αλλάξουμε τις επιλογές του όταν ετοιμαστεί ο νέος πυρήνας, με την εντολή rdev. Εάν αισθάνεστε στα χαμένα κοιτάζοντας το αρχείο αυτό, τότε μην ασχοληθείτε.


Next Previous Contents