Δημοσιεύτηκε: 09 Απρ 2011, 21:41
από vagrale13
Εδω θα δουμε τον τροπο για το πως να κανουμε μεταγλωττιση και εγκατασταση την νεοτερη εκδοση πυρηνα, δηλαδη οτι πιο νεο υπαρχει.
Φυσικα, αυτο δεν σημαινει οτι θα ειναι πιο σταθερος απο την εκδοση του πυρηνα που υπαρχει στα αποθετηρια,
γιατι δεν ειναι αρκετα δοκιμασμενος :!:

Πρωτα απ'ολα, πριν συνεχισουμε παρακατω,
θα πρεπει να γνωριζουμε οτι υπαρχει κινδυνος καταστροφης του συστηματος μας.
Οποτε συνεχιζουμε με δικο μας ρισκο! :idea:

* Τι θα χρειαστουμε?

1) Να εχουμε συνδεση στο διδυκτυο (internet), κατα προτιμηση με καλωδιο (ethernet)
2) Ελευθερο χωρο στον προσωπικο μας φακελο (home) περιπου 5Gb
3) Καμποση ωρα ελευθερη, για ολη την διαδικασια, περιπου 2-4 ωρες, αναλογως με τις δυνατοτητες του Η/Υ μας.


* Αν ειμαστε συμφωνοι με τα παραπανω, συνεχιζουμε

Πρωτα κανουμε εγκατασταση τα πακετα θα χρειαστουμε
Κώδικας: Επιλογή όλων
sudo apt-get install git-core kernel-package fakeroot build-essential ncurses-dev


Μετα ειμαστε ετοιμοι να συνεχιζουμε,
οποτε εκτελουμε
Κώδικας: Επιλογή όλων
cd && git clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git

περιμενουμε καμποσα λεπτα να κατεβασει των κωδικα, και μετα εκτελουμε
Κώδικας: Επιλογή όλων
cd linux

Μετα θα χρειαστει να αντιγραψουμε το αρχειο ρυθμισεων πυρηνα, απο το υπαρχον του συστημα μας, οποτε εκτελουμε
Κώδικας: Επιλογή όλων
cp /boot/config-`uname -r` .config

Μετα εκτελουμε
Κώδικας: Επιλογή όλων
make oldconfig

Οπου θα μας κανει διαφορες ερωτησεις, αν δεν γνωριζουμε τι πρεπει να απαντησουμε, το καλυτερο και πιο ασφαλες, ειναι απλα να παταμε Enter
ή αν θελουμε, μπορει να γινει αυτοματα, και να εκτελεσουμε
Κώδικας: Επιλογή όλων
yes '' | make oldconfig

αν θελουμε να κανουμε καποια αλλαγη, εκτελουμε
Κώδικας: Επιλογή όλων
make menuconfig

και κανουμε τις αλλαγες που θελουμε!
μετα θα χρειαστει να κανουμε επεξεργασια του script, οποτε εκτελουμε
Κώδικας: Επιλογή όλων
sed -rie 's/echo "\+"/#echo "\+"/' scripts/setlocalversion

μετα καθαρισουμε το φακελο του κωδικα εκτελωντας
Κώδικας: Επιλογή όλων
make-kpkg clean

και για τη δημιουργεια των πακετων .deb εκτελουμε (εδω θα παρει αρκετη ωρα)
Κώδικας: Επιλογή όλων
CONCURRENCY_LEVEL=`getconf _NPROCESSORS_ONLN` fakeroot make-kpkg --initrd --append-to-version=-10 kernel_image kernel_headers

με την παραπανω εντολη θα δημιουργηθουμε πακετα με την ονομασια π.χ. 2.6.39-rc2-10-10.00.Custom.deb
οποτε αν θελουμε αλλαζουμε τον αριθμο 10 στην παραμετρο --append-to-version=-10 με το αντιστοιχο που θελουμε.
Αν θελουμε να αλλαξουμε στην ονομασια το 10.00.Custom προσθετουμε στην εντολη την παραμετρο --revision=ΟΤΙ_ΘΕΛΟΥΜΕ

Οταν τελιεωσουμε, πρεπει να κανουμε εγκατασταση τα πακετα .deb που θα εχουν δημιουργηθει,
οποτε εκτελουμε
Κώδικας: Επιλογή όλων
cd

Κώδικας: Επιλογή όλων
sudo dpkg -i linux-*.deb


Και τελος, θα πρεπει να κανουμε τον πυρηνα μας, να μπορει να κανει boot, οποτε εκτελουμε
Κώδικας: Επιλογή όλων
cd /lib/modules

και μετα θα χρειαστουμε το αποτελεσμα απο
Κώδικας: Επιλογή όλων
ls

οπου θα ειναι καπως ετσι
2.6.32-30-generic 2.6.32-31-generic 2.6.39-rc2-10

οποτε εκτελουμε
Κώδικας: Επιλογή όλων
sudo update-initramfs -ck ονομα_module_για_το_νεο_πυρηνα

δηλαδη συμφωνα με το παραδειγμα μας, θα πρεπει να εκτελεσουμε
Κώδικας: Επιλογή όλων
sudo update-initramfs -ck 2.6.39-rc2-10

και τελος εκτελουμε
Κώδικας: Επιλογή όλων
sudo update-grub




Μετα, το μονο που εμεινε, ειναι να κανουμε επανεκκινηση, και να χαρουμε, τη νεοτερη εκδοση πυρηνα! :)


* Επισης Μπορουμε:

a) Αν για καποιο λογο, θελουμε να αφαιρεσουμε τον πυρηνα μας, μπαινουμε στο συστημα μας με διαφορετικη εκδοση πυρηνα,
και απο τον synaptic, κανουμε απεγκατασταση τα δυο πακετα π.χ. linux-image-2.6.39-rc2-10 και linux-headers-2.6.39-rc2-10

b) Να δουμε τον οδηγο εδω Customizing the Kernel tutorial - Welcome to the Dark Side

c) Να βρουμε ετοιμα πακετα .deb νεοτερης εκδοσης πυρηνα εδω http://kernel.ubuntu.com/~kernel-ppa/mainline/

d) Πηγη του κακου : https://wiki.ubuntu.com/KernelTeam/GitKernelBuild

Creative Commons License
Η εργασία υπάγεται στην άδεια Creative Commons Αναφορά-Μη εμπορική χρήση-Παρόμοια διανομή 3.0 Ελλάδα