Linux Kernel Installation
Mini How To
Contents
Kernel Download
Κατεβάζουμε την τελευταία "σταθερή" έκδοση του πυρήνα που θέλουμε να εγκαταστήσουμε.
π.χ. http://kernel.org/pub/linux/ke[..]nux-2.6.19.2.tar.bz2
Εάν έχουμε ήδη κατεβάσει προηγούμενη έκδοση του ίδιου release δεν χρειάζεται να ξανακατεβάσουμε
όλο τον πυρήνα αλλά μόνο το patch που έχει βγει.
π.χ. http://kernel.org/pub/linux/ke[..]6/patch-2.6.19.2.bz2
Kernel Extract
Αφού κατεβάσουμε τα αρχεία μας τα μεταφέρουμε στον κατάλογο /usr/src/ του συστήματός μας.
# wget -c http://kernel.org/pub/linux/kernel/v2.6/linux-2.6.19.2.tar.bz2 # mv linux-2.6.19.2.tar.bz2 /usr/src
Αποσυμπιέζουμε και απο-πακετάρουμε το αρχείο μας
# tar jxvf linux-2.6.19.2.tar.bz2 # ln -s linux-2.6.17.9.2 linux # cd linux
Εάν έχουμε κάποιο patch το οποίο θέλουμε να περάσουμε ("πατσάρουμε")
τότε πληκτρολογούμε την παρακάτω εντολή (αφού πρώτα έχουμε μεταβεί στο
συγκεκριμένο κατάλογο)
# patch -Np1 < ../patch-2.6.17.8
Kernel Prepare
Για να προχωρήσουμε με την εγκατάστασή μας πληκτρολογούμε την εξής εντολή:
# make mrproper
Με αυτήν την εντολή "καθαρίζουμε" τους καταλόγους καθώς και τα .config αρχεία
και όλα τα object που έχουν δημιουργηθεί από προηγούμενη εγκατάσταση.
Kernel Configuration
Το σημαντικότερο βήμα είναι η δημιουργία ενός αρχείου ρυθμίσεων.
Βάσει αυτού του αρχείου .config γίνεται η μεταγλώττιση του πυρήνα μας
και στην συνέχεια η εγκατάστασή του. Για να προσθέσουμε ή να αφαιρέσουμε
χαρακτηριστικά που θα υποστηρίζει ο πυρήνας μας πληκτρολογούμε την
παρακάτω εντολή:
# make menuconfig
Εάν έχουμε ήδη κάποιο "παλιό" config αρχείο που θέλουμε να χρησιμοποιήσουμε
τότε πληκτρολογούμε την παρακάτω εντολή:
# make oldconfig
Μέσα από ένα γραφικό περιβάλλον κονσόλας επιλέγουμε τα χαρακτηριστικά τα οποία
είτε μπορούν να εγκατασταθούν ενσωματωμένα στον πυρήνα μας είτε μπορούν να
παραχθούν ως αρθρώματα (modules) και να ενεργοποιηθούν (modprobe) μετά.
[M] | Αρθρώμα | Module |
[*] | Ενσωματωμένο | Built In |
Ανάλογα με το γραφικό περιβάλλον μας μπορούμε να πληκτρολογήσουμε τις εξής εντολές:
# make xconfig ή # make gconfig
Εάν όμως το σύστημά μας δεν υποστηρίζει ncurses τότε πληκτρολογούμε την παρακάτω εντολή
με την οποία μπαίνουμε σε μία διαδικασία ερωτήσεων για να παραχθεί το τελικό .config αρχείο.
# make config
Kernel Compile
Συνεχίζουμε με την μεταγλώττιση του πυρήνα και των διάφορων αρθρωμάτων.
Πληκτρολογούμε:
# make
Και περιμένουμε μέχρι να τελειώσει η διαδικασία ...
Σε πυρήνα 2.6.x δεν χρειάζεται να κάνουμε compilation τα modules που θέλουμε
για τον πυρήνα μας. Σε αντίθεση με πυρήνα 2.4.x όπου πρέπει να πληκτρολογήσουμε:
# make modules
Οι 2 παραπάνω εντολές παράγουν το πυρήνα μας και τα διάφορα αρθρώματα τα οποία δεν
ενσωματώσαμε στον πυρήνα. Στο πυρήνα μας χρειάζεται να ενσωματώσουμε μόνο τα απαραίτητα.
Τα υπόλοιπα τα ορίζουμε ως αρθρώματα. Έτσι ο πυρήνας μας είναι μικρός και γρήγορος σε
μέγεθος και ταχύτητα αλλά και αρκετά ευέλικτος, αφού ενεργοποιούμε μόνο τα αρθρώματα που
χρειαζόμαστε όταν τα χρειαζόμαστε.
Modules Installation
Για να κάνουμε εγκατάσταση των modules που κάναμε παραπάνω μεταγλώττιση
χρειάζεται να πληκτρολογήσουμε την παρακάτω εντολή:
# make modules_install
Όταν ολοκληρωθεί η παραπαάνω εντολή θα πρέπει στον κατάλογο
# ls /lib/modules/2.6.x ή # ls /lib/modules/2.4.x
Να υπάρχουν τα αρθρώματα που μόλις εγκαταστήσαμε.
Kernel Installation
Τώρα το μόνο που έμεινε είναι να εγκαταστήσουμε τον νέο μας πυρήνα στο σύστημά μας
και να προσθέσουμε στο λογισμικό εκκίνησης την απαραίτητη εγγραφή ώστε το σύστημά
μας να μπορεί να εκκινηθεί από τον νέο μας πυρήνα. Πληκτρολογούμε την παρακάτω εντολή:
# make install
Εάν όμως θέλουμε να αντιγράψουμε τα αρχεία μόνοι μας, τότε χρειάζεται να πληκτρολογήσουμε
τις εξής εντολές:
# cp System.map /boot/System.map_2.9.19.2 # cp .config /boot/config.2.6.19.2 # cp arch/i386/boot/bzimage /boot/vmlinuz-2.6.19.2
Το αρχείο bzimage σημαίνει big compress (zip) image kernel.
Με τις παραπάνω εντολές ολοκληρώσαμε την εγκατάσταση του πυρήνα μας
Initrd Installation
Αφού έχουμε ολοκληρώσει την εγκατάσταση του πυρήνα μας, χρειάζεται να
δημιουργήσουμε το αρχείο initrd για τον πυρήνα. Περισσότερες πληροφορίες
μπορεί κανείς να βρει στον παρακάτω αρχείο:
# less /usr/src/linux/Documentation/initrd.txt
Κατά την εκκίνηση του συστήματός μας χρειάζεται να υπάρχει το αρχείο initrd το οποίο
"ανοίγει" στην μνήμη φορτώνοντας προσωρινά ένα σύστημα αρχείων με σκοπό να
φορτώσει ο πυρήνας ότι χρειάζεται και να εκκινήσει το σύστημά μας.
Για να δημιουργήσουμε το αρχείο πληκτρολογούμε την παρακάτω εντολή:
# mkinitrd -o /boot/initrd.img-2.6.19.2 2.6.19.2
Alternative
http://sourceforge.net/projects/mkinitramfs/
# mkinitramfs 2.6.21 -o initrd.img-2.6.21
Lilo Configuration
Προσθέτουμε τις εξείς ρυθμίσεις στο αρχείο /etc/lilo.conf :
image=/boot/vmlinuz-2.6.19.2 label=2.6.19.2 read-only root=/dev/hda1
Και μετά πληκτρολογούμε :
lilo
* Όπου hda1 δηλώνουμε το partition εκείνο που περιέχει το λογισμικό εκκίνησης lilo.
Εάν είναι η δισκέτα μας τότε αντί για hda1 θα έπρεπε να γράψουμε fd0
Grub Configuration
GRand Unified Bootloader
Προσθέτουμε στο αρχείο /boot/grub/menu.lst τις παρακάτω γραμμές:
title 2.6.19.2 root (hd0,0) kernel /vmlinuz-2.6.19.2 root=/dev/hda1 ro initrd /initrd.img-2.6.19.2 boot
Reboot
Πληκτρολογούμε την παρακάτω εντολή:
# reboot
URLS
http://kernel.org/
http://kernelnewbies.org/FAQ/KernelCompilation
http://kerneltrap.org/
Quick and Dirty
sudo su – mkdir -pv /lib/firmware/2.6.24.4/ cd /usr/src/ wget -c http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.24.4.tar.bz2 tar xjf linux-2.6.24.4.tar.bz2 cd linux-2.6.24.4 make defconfig make all make modules_install make install cd /boot/ mkinitramfs 2.6.24.4 -o initrd.img-2.6.24.4 vim /boot/grub/menu [add / modify ] title Ubuntu 7.10, kernel 2.6.24.4 root (hd0,5) kernel /vmlinuz-2.6.24.4 root=/dev/sda6 ro initrd /initrd.img-2.6.24.4 modprobe : FUSE
Ubuntu Quick & Dirty
Το παρακάτω παράδειγμα μπορεί να χρησιμοποιηθεί AS-IS
σε μια διανομή ubuntu που μόλις στήθηκε.
sudo su – apt-get update apt-get install -y linux-source-2.6.24 libc6-dev libncurses5-dev cd /usr/src/ tar jxvf linux-source-2.6.24.tar.bz2 cd linux-source-2.6.24 pwd ls -la cp /boot/config-2.6.24-19-generic .config ls -la make oldconfig make make modules_install make install cd /boot mkinitramfs 2.6.24 -o initrd.img-2.6.24 vim /boot/grub/menu [add / modify ] title Ubuntu, kernel 2.6.24.4 root (hd0,0) kernel /boot/vmlinuz-2.6.24 root=/dev/sda1 ro initrd /boot/initrd.img-2.6.24