Ο πυρήνας Linux είναι η καρδιά κάθε διανομής. Αυτό το κεφάλαιο εξηγεί πως να ρυθμίσετε τον πυρήνα σας. 7.5 2010-07-17
Ζώνη Ώρας

Πρώτα πρέπει να επιλέξετε τη ζώνη ώρας σας ώστε το σύστημα να γνωρίζει πού είναι τοποθετημένο. Ψάξτε για τη ζώνη ώρας σας στο /usr/share/zoneinfo, μετά αντιγράψτε το στο /etc/localtime. Παρακαλώ αποφύγετε τις /usr/share/zoneinfo/Etc/GMT* ζώνες ώρας επειδή τα ονόματά τους δεν δείχνουν τις αναμενόμενες ζώνες. Για παράδειγμα, το GMT-8 είναι στην πραγματικότητα το GMT+8.

# ls /usr/share/zoneinfo
(Υποθέτουμε ότι θέλετε να χρησιμοποιήσετε GMT)
# cp /usr/share/zoneinfo/GMT /etc/localtime
Εγκατάσταση του Πυρήνα Επιλογή ενός Πυρήνα

Το κέντρο γύρω από το οποίο όλες οι διανομές είναι χτισμένες είναι ο πυρήνας Linux. Είναι η στρώση ανάμεσα στα προγράμματα των χρηστών και το υλικό του συστήματός σας. Το Gentoo παρέχει στους χρήστες του πολλούς πιθανούς πυρήνες. Μια πλήρης λίστα με περιγραφή είναι διαθέσιμη στον Οδηγό Πυρήνα του Gentoo.

Για συστήματα βασισμένα σε έχουμε το gentoo-sources (κώδικας πυρήνα με πρόσθετα αρχεία πηγαίου κώδικα για επιπλέον χαρακτηριστικά).

Επιλέξτε τον πυρήνα σας και εγκαταστήστε τον χρησιμοποιώντας το emerge.

# emerge gentoo-sources

Παρατηρώντας το /usr/src θα δείτε ένα συμβολικό σύνδεσμο με όνομα linux να δείχνει τον πυρήνα σας. Σε αυτή την περίπτωση, ο εγκατεστημένος πυρήνας δείχνει στο gentoo-sources-. Η έκδοσή σας μπορεί να είναι διαφορετική γι αυτό έχετέ το υπόψη.

# ls -l /usr/src/linux
lrwxrwxrwx    1 root   root    12 Oct 13 11:04 /usr/src/linux -> linux-

Τώρα είναι καιρός να ρυθμίσετε και να μεταγλωττίσετε τον πυρήνα σας. Μπορείτε να χρησιμοποιήσετε το genkernel για αυτό, το οποίο θα ετοιμάσει ένα γενικό πυρήνα όπως αυτός που χρησιμοποιείται στο CD της εγκατάστασης. Εξηγούμε όμως πρώτα την "χειροκίνητη" ρύθμιση, καθώς είναι ο καλύτερος τρόπος για να βελτιστοποιήσετε το περιβάλλον σας.

Αν θέλετε να ρυθμίσετε χειροκίνητα τον πυρήνα σας, συνεχίστε τώρα στο Προεπιλογή: Χειροκίνητη Ρύθμιση. Αν θέλετε να χρησιμοποιήσετε το genkernel θα πρέπει να διαβάσετε το Εναλλακτικά: Χρησιμοποιώντας το genkernel.

Προεπιλογή: Χειροκίνητη Ρύθμιση Εισαγωγή

Η χειροκίνητη ρύθμιση ενός πυρήνα συχνά θεωρείται ως η πιο δύσκολη διαδικασία που έχει να επιτελέσει ένας χρήστης Linux. Τίποτα δεν είναι λιγότερο σωστό -- μετά τη ρύθμιση κανα δυο πυρήνων δε θα θυμάστε καν ότι ήταν δύσκολο ;)

Παρ' όλα αυτά, ένα πράγμα είναι σωστό: πρέπει να ξέρετε το σύστημά σας όταν θα αρχίσετε να ρυθμίζετε τον πυρήνα σας χειροκίνητα. Οι περισσότερες πληροφορίες μπορούν να συγκεντρωθούν με την εγκατάσταση του pciutils (emerge pciutils) το οποίο περιέχει την lspci. Τότε θα είστε έτοιμοι να χρησιμοποιήσετε την lspci στο chrooted περιβάλλον. Μπορείτε να αγνοήσετε με ασφάλεια κάθε προειδοποίηση τύπου pcilib (όπως pcilib: cannot open /sys/bus/pci/devices) που η lspci πετάει. Εναλλακτικά, μπορείτε να τρέξετε την lspci από ένα μη-chrooted περιβάλλον. Τα αποτελέσματα είναι τα ίδια. Μπορείτε επίσης να τρέξετε την lsmod για να δείτε ποιες ενότητες του πυρήνα το CD Εγκατάστασης χρησιμοποιεί (ίσως σας παράσχει μια καλή λύση στο τι να ενεργοποιήσετε).

Τώρα πηγαίντε στον φάκελο του πυρήνα σας και εκτελέστε την make menuconfig. Αυτό θα εμφανίσει ένα μενού ρυθμίσεων βασισμένο σε ncurses.

# cd /usr/src/linux
# make menuconfig

Θα χαιρετηθείτε με αρκετούς τομείς ρυθμίσεων. Εμείς πρώτα θα δείξουμε μια λίστα με μερικές επιλογές που πρέπει να ενεργοποιήσετε (αλλιώς το Gentoo δε θα δουλέψει, ή δε θα δουλέψει σωστά χωρίς επιπρόσθετες παρεμβάσεις).

Ενεργοποίηση Απαιτούμενων Επιλογών

Σιγουρευτείτε ότι όλοι οι οδηγοί που είναι ζωτικής σημασίας για την εκκίνηση του συστήματός σας (όπως ο ελεγκτής SCSI, ...) έχει μεταγλωττιστεί μέσα στον πυρήνα και όχι ως ενότητα, διαφορετικά το σύστημά σας δεν θα είναι δυνατό να να εκκινήσει πλήρως.

Έπειτα θα επιλέξουμε τον ακριβή τύπο επεξεργαστή. Ο συντηρητής του x86_64 πυρήνα προτείνει στους χρήστες να ενεργοποιήσουν τα MCE χαρακτηριστικά ώστε να είναι δυνατό να ενημερωθούνε για τυχόν προβλήματα υλικού. Στο x86_64, αυτά τα σφάλματα δεν εκτυπώνονται στο dmesg όπως στις άλλες αρχιτεκτονικές, αλλά στο /dev/mcelog. Αυτό απαιτεί το πακέτο app-admin/mcelog. Σιγουρευτείτε ότι επιλέξατε εξομοίωση IA32 αν θέλετε να μπορείτε να εκτελείτε 32-bit προγράμματα. Το Gentoo θα εγκαταστήσει ένα multilib σύστημα (mixed 32-bit/64-bit computing) εξ ορισμού, οπότε αυτή η επιλογή απαιτείται.

Αν σχεδιάζετε να χρησιμοποιήσετε ένα προφίλ non-multilib (για ένα καθαρά 64-bit σύστημα), τότε δεν χρειάζεται να επιλέξετε υποστήριξη για εξομοίωση IA32. Ωστόσο, χρειάζεται να ακολουθήσετε τις οδηγίες για αλλαγή σε non-multilib προφίλ, καθώς και για την επιλογή του κατάλληλου bootloader.
Processor type and features  --->
   [ ] Machine Check / overheating reporting  
   [ ]   Intel MCE Features
   [ ]   AMD MCE Features
  Processor family (AMD-Opteron/Athlon64)  --->
    ( ) Opteron/Athlon64/Hammer/K8
    ( ) Intel P4 / older Netburst based Xeon
    ( ) Core 2/newer Xeon
    ( ) Intel Atom
    ( ) Generic-x86-64
Executable file formats / Emulations  --->
   [*] IA32 Emulation

Τώρα επιλέξτε τη σωστή οικογένεια επεξεργαστών:

Processor type and features --->
  (Change according to your system)
  (Athlon/Duron/K7) Processor family

Τώρα πηγαίνετε στο File Systems και επιλέξτε υποστήριξη για τα συστήματα αρχείων που χρησιμοποιείτε. Μην τα μεταγλωττίσετε ως μονάδες, διαφορετικά το Gentoo σύστημά σας δεν θα μπορεί να προσαρτήσει τις κατατμήσεις σας. Επίσης επιλέξτε Virtual memory και /proc file system.

File systems --->
  Pseudo Filesystems --->
    [*] /proc file system support
    [*] Virtual memory file system support (former shm fs)

(Επιλέξτε μια ή περισσότερες από τις ακόλουθες επιλογές ανάλογα με τις ανάγκες του συστήματός σας)
  <*> Reiserfs support
  <*> Ext3 journalling file system support
  <*> JFS filesystem support
  <*> Second extended fs support
  <*> XFS filesystem support

Αν χρησιμοποιείτε PPPoE για να συνδεθείτε στο Διαδίκτυο ή χρησιμοποιείτε ένα dial-up modem, θα χρειαστείτε τις παρακάτω επιλογές στον πυρήνα:

Device Drivers --->
  Networking Support --->
    <*> PPP (point-to-point protocol) support
    <*>   PPP support for async serial ports
    <*>   PPP support for sync tty ports

Οι δύο επιλογές συμπίεσης δεν θα κάνουν τίποτα κακό αλλά δεν είναι πάντα απαραίτητες, ούτε η επιλογή PPP over Ethernet, που μπορεί να χρησιμοποιηθεί από το ppp όταν ρυθμιστεί να κάνει kernel mode PPPoE.

Αν το χρειάζεστε, μην ξεχάσετε να συμπεριλάβετε στον πυρήνα υποστήριξη για την κάρτα δικτύου σας.

Αν έχετε μια Intel CPU που υποστηρίζει HyperThreading (tm), ή έχετε ένα multi-CPU σύστημα, θα πρέπει να ενεργοποιήσετε το "Symmetric multi-processing support":

Αν έχετε ενα multi-CPU Opteron ή ένα multi-core (π.χ. AMD64 X2) σύστημα, θα πρέπει να ενεργοποιήσετε το "Symmetric multi-processing support":

Processor type and features  --->
  [*] Symmetric multi-processing support
Σε multi-core συστήματα, κάθε πυρήνας μετράει ως ένας επεξεργαστής.

Αν έχετε περισσότερα από 4GB RAM, θα πρέπει να ενεργοποιήσετε το "High Memory Support (64G)".

Αν χρησιμοποιείτε USB Συσκευές Εισόδου (όπως Πληκτρολόγιο ή Ποντίκι) μην ξεχάσετε να ενεργοποιήσετε και αυτά επίσης:

Device Drivers --->
  [*] HID Devices  --->
    <*>   USB Human Interface Device (full HID) support

Αν θέλετε υποστήριξη για PCMCIA για τον φορητό σας, μην ξεχάσετε να ενεργοποιήσετε υποστήριξη για την γέφυρα καρτών PCMCIA που βρίσκεται στο σύστημά σας:

Bus options (PCI, PCMCIA, EISA, MCA, ISA)  --->
  PCCARD (PCMCIA/CardBus) support  --->
    <*> PCCard (PCMCIA/CardBus) support
(select 16 bit if you need support for older PCMCIA cards. Most people want this.)
    <*>   16-bit PCMCIA support
    [*]   32-bit CardBus support
(select the relevant bridges below)
    --- PC-card bridges
    <*> CardBus yenta-compatible bridge support (NEW)
    <*> Cirrus PD6729 compatible bridge support (NEW)
    <*> i82092 compatible bridge support (NEW)
    <*> i82365 compatible bridge support (NEW)
    <*> Databook TCIC host bridge support (NEW)

Όταν τελειώσετε με τη ρύθμιση του πυρήνα, συνεχίστε με τη Μεταγλώττιση και Εγκατάσταση.

Μεταγλώττιση και Εγκατάσταση

Τώρα που ο πυρήνας σας είναι ρυθμισμένος, είναι ώρα να τον μεταγλωττίσετε και να τον εγκαταστήσετε. Κλείστε τις ρυθμίσεις και αρχίστε τη διαδικασία μεταγλώττισης:

# make && make modules_install

Όταν η μεταγλώττιση του πυρήνα ολοκληρωθεί, αντιγράψτε την εικόνα του πυρήνα στο /boot. Χρησιμοποιήστε οποιοδήποτε όνομα νομίζετε πως είναι σωστό για τον πυρήνα της επιλογής σας και να το θυμάστε καθώς θα το χρειαστείτε αργότερα όταν θα ρυθμίσετε το bootloader. Θυμηθείτε να αντικαταστήσετε το με το όνομα και την έκδοση του πυρήνα σας.

# cp arch//boot/bzImage /boot/

Τώρα συνεχίστε με τις Ενότητες του Πυρήνα.

Εναλλακτική λύση: Χρησιμοποιώντας το genkernel

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

Τώρα που ο κώδικας του πυρήνα έχει εγκατασταθεί, έχει έρθει η ώρα να μεταγλωττίσουμε τον πυρήνα σας χρησιμοποιώντας το δικό μας σενάριο genkernel για να ετοιμάσει αυτόματα έναν πυρήνα για εσάς. Το genkernel λειτουργεί ρυθμίζοντας έναν πυρήνα σχεδόν πανομοιότυπο με τον πυρήνα του CD Εγκατάστασης. Αυτό σημαίνει ότι όταν χρησιμοποιείτε το genkernel για να ετοιμάσει τον πυρήνα σας, το σύστημά σας θα εντοπίζει γενικά όλο το υλικό σας κατά την διάρκεια της εκκίνησης του συστήματος, όπως ακριβώς κάνει και το CD Εγκατάστασης. Επειδή το genkernel δεν απαιτεί καμία χειροκίνητη ρύθμιση πυρήνα, είναι η ιδανική λύση για όλους εκείνους τους χρήστες που μπορεί να μην είναι άνετοι στο να μεταγλωττίσουν τον δικό τους πυρήνα.

Τώρα, ας δούμε πως χρησιμοποιούμε το genkernel. Πρώτα, εγκαταστήστε το genkernel:

# emerge genkernel

Έπειτα, αντιγράψτε την ρύθμιση του πυρήνα που χρησιμοποιείται από το CD Εγκατάστασης στην τοποθεσία όπου το genkernel κοιτάει για την εξ ορισμού ρύθμιση πυρήνα:

# zcat /proc/config.gz > /usr/share/genkernel/arch/x86/kernel-config
# zcat /proc/config.gz > /usr/share/genkernel/arch/x86_64/kernel-config

Τώρα, μεταγλωττίστε τον πυρήνα σας εκτελώντας genkernel all. Προσέξτε όμως, καθώς το genkernel μεταγλωττίζει έναν πυρήνα που υποστηρίζει σχεδόν οτιδήποτε υλικό, οπότε αυτή η μεταγλώττιση θα πάρει αρκετή ώρα να ολοκληρωθεί!

Σημειώστε ότι, αν η boot κατάτμηση δεν χρησιμοποιεί ext2 ή ext3 ως σύστημα αρχείων μπορεί να χρειαστεί να ρυθμίσετε χειροκίνητα τον πυρήνα σας χρησιμοποιώντας το genkernel --menuconfig all και να προσθέσετε υποστήριξη για το δικό σας σύστημα αρχείων μέσα στον πυρήνα (δηλ. όχι ως μονάδα). Χρήστες EVMS2 ή LVM2 θα θέλουν λογικά να προσθέσουν τα --evms2 ή --lvm2 ως ορίσματα επίσης.

# genkernel all

Μόλις το genkernel τελειώσει, ένας πυρήνας, ένα πλήρες σετ μονάδων και ένας αρχικός δίσκος root (initrd) θα έχουν δημιουργηθεί. Θα χρησιμοποιήσουμε τον πυρήνα και το initrd όταν θα ρυθμίζουμε τον boot loader αργότερα σε αυτό το κείμενοl. Γράψτε τα ονόματα του πυρήνα και του initrd καθώς θα τα χρειαστείτε όταν θα γράφετε το αρχείο ρυθμίσεων του bootloader. Το initrd θα ξεκινήσει αυτόματα μετά την εκκίνηση για να κάνει αυτόματη εύρεση του υλικού (όπως ακριβώς στο CD Εγκατάστασης) πριν το "πραγματικό" σας σύστημα εκκινήσει.

# ls /boot/kernel* /boot/initramfs*
Ενότητες του Πυρήνα