Welcome, Guest. Please login or register.
+  Linux Soft Forum
|-+  Īnvaţă» Tips&Tricks» Compilarea kernel-ului in Debian/Ubuntu
[Picture 161] [Picture 160] [Picture 159]
Username:
Password:
 
Pages: [1]   Go Down
  Print  
Author Topic: Compilarea kernel-ului in Debian/Ubuntu  (Read 959 times)
0 Members and 1 Guest are viewing this topic.
vulcaneanul
Membru
*


« on: October 25, 2006, 10:49:52 PM »

Se poate instala in doua variante
-se scoate o versiune precompilata pentru distributia de Linux pe care o avem si se instaleaza
-se scoate versiunea vanilla pe care o gasim pe http://kernel.org sau se scot sursele kernel specifice distributiei pe care o avem si se compileaza

De ce ar fi mai utila compilarea unui Kernel decat folosirea versiunii precompilate?Ei bine se pot insira destul de multe motive insa cele mai importante ar fi
-distributiile standard precompilate de kernel pot fi inadecvate deoarece pot aparea incompatibilitati hardware sau chiar lipsa suportului pentru anumite componente.
-putem imbunatatii performantele computerului prin setarea modulelor kernel-ului in asa fel incat sa se potriveasca intr-un mod cat mai bun cu sistemul hardware detinut.
-in cazul compilarii kernel-ului putem alege noi elemente neactivate in kernel-ul precompilat sau deselecta elemente de care nu avem nevoie.

Vom incepe prin  a downloada si instala sursele pentru Kernel
#apt-get install kernel-source-2.6.17.13
#cd /usr/src
#tar -xjvf kernel-source-2.6.17.13.tar.bz2
#cd linux-source-2.6.17.13

in cazul unui update de kernel si in cazul unei compilari noi vom fi nevoiti sa creem fisierul de configurare pentru compilarea acestuia.Avantajul in cazul unui update este acela ca putem folosii fisierul de configurare a kernel-ului vechi.De aceea vom copia acest fisier in directorul surselor de kernel pe care dorim sa il instalam sub numele de .config

#cd /boot
#ls
#cp config-2.4.24-1-386 /usr/src/linux-source-2.6.17.13/ .config


Urmatorul pas este acela de actualizare a fisierului de configurare cu nou Kernel iar lucrul acesta se face cu ajutorul comenzii make oldconfig executata in directorul surselor noului kernel
#make oldconfig
In cazul in care dorim sa folosim fisierul de configurare a surselor vechi este recomandabil ca dupa male oldconfig sa folosim una din comenzile make config / make menuconfig sau make xconfig

Configurarea surselor de Kernel se poate face in mai multe moduri:
#make mrproper (practic va sterge orice fisier de configurare sau fisiere obiect pe care kernelul vechi pe avea)
#make config (configurarea se face in urma unui se de intrebari despre sistem la care utilizatorul trebuie sa raspunda)
#make menuconfig (configurarea se face printr-un meniu text,in care utilizatorul poate selecta elementele din kernel pe care le doreste active)

#make xconfig/ make gconfig ( la fel ca menuconfig insa configurarea se face sub serverul X)
#make defconfig ( va folosii fisierul de configurare default)
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     
Compilarea propriuzisa are trei pasi:
*make - construieste imaginea de kernel
*make modules_install - instaleaza modulele
*copierea imaginii de kernel in directorul in care acesta booteaza in mod normal

Dupa compilarea kernel-ului copiati fisierele .config System.map si bzImage in /boot
cp /usr/src/linux-source-2.6.17.13/.config /boot/config-2.6.17.13
cp /usr/src/linux-source-2.6.17.13/System.map /boot/System.map-2.6.17.13
cp /usr/src/linux-source-2.6.17.13/arch/i386/boot/bzImage /boot/vmlinuz-2.6.17.13

dupa care creati un ramdisk dupa kernel-ul cel nou
cd /boot/
mkinitrd -o /boot/initrd.img-2.6.17.13 2.6.17.13


Modificarea bootloader-ului (GRUB)
##Imaginea de boot
title            Debian, kernel 2.4.24-1-386
root            (hd0,1)
kernel          /boot/vmlinuz-2.4.24-1-386 root=dev/hda2 ro quiet splash
initrd           /boot/initrd.img-2.4.24-1-386

##Imaginea de boot
title            Debian, kernel 2.6.17.13
root            (hd0,1)
kernel          /boot/vmlinuz-2.6.17.13 root=dev/hda2 ro quiet splash
initrd           /boot/initrd.img-2.6.17.13



Sistem reboot
reboot,shutdown -r now ,init 6, ctrl+alt+del

La repornire se alege optiunea de bootare cu noul kernel iar pentru a vedea erorile de la bootare se pot folsii comenzile
dmesg sau less /var/log/messages


*vanilla- versiunea de kernel neprelucrata absolut deloc de distributiile de Linux existente la ora actuala.
« Last Edit: October 25, 2006, 10:51:20 PM by vulcaneanul » Logged

The best way to make your dreams come true is to wake up.
Intrebari destepte
oblio
Admini
**


WWW
« Reply #1 on: October 26, 2006, 05:27:16 AM »

Un tutorial foarte bun, poate fi aplicat in buna masura pe orice distributie. Trebuie doar sa faceti rost de sursele kernelului, si sa aveti instalate autotools (autoconf, automake, ...) si gcc - in general pachetele de dev ale distributiei.

Din pacate, pentru Debian sau Ubuntu exista o singura mentiune: se foloseste pachetul kernel-package, si ultimele etape sunt inlocuite de make-kpkg. Adica de la make incolo, vin doar 3 comenzi:
sudo make-kpkg clean
sudo make-kpkg --append-to-version versiune kernel_image
sudo dpkg -i nume_deb_rezultat.deb

versiune - numar care este atasat numelui kernelului, astfel incat puteti distinge si care e kernelul compilat de voi, nu numai numele pachetului vostru care contine kernelul vostru

Cu ajutorul --append-to-version, puteti avea aceeasi versiune de kernel compilata in diferite feluri, fara a avea conflicte, doar specificati un numar diferit.

make-kpkg si dpkg se ocupa de updatarea grub, copierea fisierelor unde trebuie, ... Fiind un om lenes, nu mi-a placut niciodata sa ma omor cu operatii repetitive Smiley

uname -a
va arata numele kernelului vostru, cu tot cu versiune, dupa ce rebootati, si il alegeti din lista. Mi se pare ca si in meniul Grub o sa se vada exact acelasi nume, cu versiunea voastra in nume.
« Last Edit: October 26, 2006, 05:28:27 AM by oblio » Logged

Distribuţie: ubuntu | Localitate: Bucureşti | Vārstă: 24

Oh! Everything has a point, and if it doesn't, then there's a point to it.

Oblio's
Pages: [1]   Go Up
  Print  
 
Jump to: