Πως να κάνετε compile τον πυρήνα σε FC

xekarfwtos | Κυρ, 01/13/2008 - 23:19 | 7' | 1

Στο tutorial αυτό προσπαθώ να μεταφέρω το άρθρο� How To Compile A Kernel - The Fedora Way�
(http://www.howtoforge.com/kernel_compilation_fedora).
Το άρθρο περιγράφει πως να κάνετε compile έναν
custom πυρήνα δημιουργώντας ένα πακέτο πυρήνα rpm που μπορείτε να κάνετε εγκατάσταση σε Fedora.

Βήμα 1

Δημιουργήστε το φάκελο rpmbuild:

cd ~
cp -a /usr/src/redhat/ rpmbuild
echo '%_topdir
%(echo $HOME)/rpmbuild' >> .rpmmacros

Στη συνέχεια κάνετε εγκατάσταση τα πακέτα για τη δημιουργία rpm πακέτων:

su -c �yum install fedora-rpmdevtools unifdef�

τρέξτε την εντολή:

fedora-buildrpmtree



Βήμα 2

Κατεβάστε το τελευταίο src.rpm
του πυρήνα για την έκδοση της Fedora  που έχετε.

Για Fedora Core 6, το src.rpm βρίσκεται :
http://download.fedora.redhat.com/pub/fedora/linux/core/6/so urce/SRPMS/,

http://download.fedora.redhat.com/pub/fedora/linux/core/upda tes/6/SRPMS/,

Για Fedora Core 5:

http://download.fedora.redhat.com/pub/fedora/linux/core/5/so urce/SRPMS/,

http://download.fedora.redhat.com/pub/fedora/linux/core/upda tes/5/SRPMS/.

Το τελευταίο src.rpm του πυρήνα για FC6 είναι το kernel-2.6.18-1.2798.fc6.src.rpm, το κατεβάζετε και το εγκαθηστάτε με τις παρακάτω εντολές:

cd /usr/src
wget
http://download.fedora.redhat.com/pub/fedora/linux/core/6/so urce/SRPMS/kernel-2.6.18-1.2798.fc6.src.rpm
rpm
-ivh kernel-2.6.18-1.2798.fc6.src.rpm

Αν δείτε τα παρακάτω warnings:

warning: user brewbuilder does not exist - using root
warning:
group brewbuilder does not exist - using root

μην τους δώσετε σημασία.

Στο άρθρο που ανέφερα στην αρχή υπάρχει και το βήμα� 2.3 Patch The Kernel� αλλά δεν το χρησιμοποίησα οπότε για περισσότερες πληροφορίες δείτε στο άρθρο.

Στη συνέχεια δίνετε τις παρακάτω εντολές :

cd ~/rpmbuild/SPECS/

rpmbuild -bp --target=i686 kernel-2.6.spec

Για να δηλώσετε σε ποια αρχιτεκτονική θέλετε να κάνετε compile αλλάζετε την επιλογή target=i686 στην αρχιτεκτονική που θέλετε (i386, i486, i586).

Βήμα 3

Στο βήμα αυτό για αρχή θα δώσετε ένα όνομα στο custom πυρήνα:

cd ~/rpmbuild/BUILD/kernel-2.6.18/linux-2.6.18.i686
vi
Makefile

(To vi είναι ο vim. Αντί του vi μπορείτε να δώσετε gedit στο gnome ή kedit στο kde.)

Στη γραμμή EXTRAVERSION του Makefile, μπορείτε να δώσετε το όνομα (αναγνωριστικό) του custom πυρήνα. Για παράδειγμα:

EXTRAVERSION = -custom- 1.2798.

και στη γραμμή UTS_MACHINE του Makefile δώσετε την αρχιτεκτονική που θέλετε να κάνετε compile τον πυρήνα. Για παράδειγμα:

UTS_MACHINE=i686

Βήμα 4

Αντιγράφετε το αρχείο:

cp ./configs/kernel-2.6.18-i686.config .config

και τρέχετε την εντολή:

make menuconfig

η οποία εμφανίζει το menu για το
configuration του kernel. Επιλέγετε Load an Alternate
Configuration File επιλέγετε .config για το αρχείο configuration:




Στη συνέχεια μπορείτε να επιλέξετε από το menu ότι επιλογές θέλετε να έχει ο custom πηρύνας. Όταν τελειώσετε επιλέγετε Exit, και απαντάτε στην ερώτηση
(Do you wish to save your new kernel configuration?) με Yes:


Βήμα 5

Τώρα τρέχετε την παρακάτω εντολή για να δημιουργηθεί το πακέτο rpm του πυρήνα.

make rpm

Θα βρείτε το νέο πακέτο src.rpm του πυρήνα στο φάκελο
~/rpmbuild/SRPMS/, π.χ.
~/rpmbuild/SRPMS/kernel-2.6.18custom1.2798-1 .src.rpm, και το πακέτο rpm του πυρήνα στο φάκελο
~/rpmbuild/RPMS/i686/ (ή ~/rpmbuild/RPMS/i386/,
~/rpmbuild/RPMS/i586/, ανάλογα με την αρχιτεκτονική σας), π.χ.

~/rpmbuild/RPMS/i686/kernel-2.6.18custom1.27 98-1.i686. rpm. Όπως βλέπετε το όνομα που δώσατε προστέθηκε στο όνομα του πακέτου.

Βήμα 6

Τώρα πηγαίνετε στο φάκελο στο οποίο δημιουργήθηκε το νέο πακέτο rpm του πυρήνα και κάνετε εγκατάσταση το πακέτο rpm:

cd ~/rpmbuild/RPMS/i686
su -c �rpm -ivh
kernel-2.6.18custom1.2798-1.i686.rpm �

Στη συνέχεια φτιάχνετε ένα ramdisk για το νέο πυρήνα, αλλιώς το σύστημα μπορεί να μην κάνει boot το νέο πυρήνα:

su -c �/sbin/mkinitrd
/boot/initrd-2.6.18-custom-1.2798.im g 2.6.18-custom- 1.2798�

Ακολουθεί η επεξεργασία του /boot/grub/menu.lst. Δείτε πως είναι η αναφορές στους άλλους πυρήνες και προσθέστε μία νέα για τον πυρήνα σας:

su -c 'vi /boot/grub/menu.lst'

Για παράδειγμα, το δικό μου menu.lst πριν τη επεξεργασία:




# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE: You have a /boot partition. This means that
# all kernel and initrd paths are relative to /boot/, eg.
# root (hd0,0)
# kernel /vmlinuz-version ro root=/dev/VolGroup00/LogVol00
# initrd /initrd-version.img
#boot=/dev/sda
default=0
timeout=5
s plashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu

title Fedora Core (2.6.18-1.2798.fc6)
root (hd0,0)
kernel /vmlinuz-2.6.18-1.2798.fc6 ro root=/dev/VolGroup00/LogVol00
initrd /initrd-2.6.18-1.2798.fc6.img

μετά την επεξεργασία:




# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE: You have a /boot partition. This means that
# all kernel and initrd paths are relative to /boot/, eg.
# root (hd0,0)
# kernel /vmlinuz-version ro root=/dev/VolGroup00/LogVol00
# initrd /initrd-version.img
#boot=/dev/sda
default=0
timeout=5
s plashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu

title Fedora Core (2.6.18-custom-1.2798)
root (hd0,0)
kernel /vmlinuz-2.6.18-custom-1.2798 ro root=/dev/VolGroup00/LogVol00
initrd /initrd-2.6.18-custom�1.2798.img

title Fedora Core (2.6.18-1.2798.fc6)
root (hd0,0)
kernel /vmlinuz-2.6.18-1.2798.fc6 ro root=/dev/VolGroup00/LogVol00
initrd /initrd-2.6.18-1.2798.fc6.img

(μπορείτε να βρείτε τα σωστά vmlinuz και
initrd αρχεία τρέχοντας την εντολή

ls -l /boot)

Κάνετε restart το pc σας

και στο GRUB menu:


επιλέγετε τον πυρήνα σας.

Για περισσότερες πληροφορίες δείτε στο άρθρο.

xekarfwtos2007-6-26 14:54:51

Φόρουμ
Δώσε αστέρια!

MO: (ψήφοι: 0)

Σχόλια

Δεν χρειάζεται αυτάκια '.

Τώρα σου λέει ότι πρέπει να εγκαταστήσεις ένα πακέτο με όνομα sparse.

Δώσε
yum search sparse

για να το βρεις. Μετά εγκατέστησέ το: yum install sparse??

Τα ερωτηματικά τα βάζω εγώ αυθαίρετα. Δεν ξέρω το ακριβές όνομα του πακέτου.