[ Milos_SD @ 15.03.2014. 00:25 ] @
[color=Blue]Trenutna stabilna verzija kernela:[/color] 3.13.6

[color=Blue]Trenutna razvojna verzija kernela:[/color] 3.14-rc6

[color=Blue] Starija stabilna verzija kernela:[/color] 3.12.13



Pitate se verovatno zasto biste kompajlirali kernel kada vec postoji generic. Neki od razloga su: Ubuntu nije bas poznat po update-u na novi kernel u toku trajanja trenutne verzije, a vi zelite da stavite novi kernel jer je u njemu podzana wifi kartica koju imate, dok u starom kernelu nije. Dodatne optimizacije i ubrzanja, ispravljeni bug-ovi, avanturistickog ste duha, i tako dalje. Ovo uputstvo bi trebalo da vam pokaze kako se to "famozno" kompajliranje kernela radi. Vecina sigurno misli da je to veliki bauk, ali posle ovog uputstva necete tako misliti. ;)
Pa da krenemo. :D

1) Instaliranje potrebnih paketa:
Code:
sudo apt-get install build-essential bin86 kernel-package libqt3-headers libqt3-mt-dev wget libncurses5 libncurses5-dev qt4-dev-tools libqt4-dev


2) Prebacite se u direktorijum u kojem zelite da vam bude kernel source. Neki ovde predlazu da to bude /usr/src, ali cu ja u ovom uputstvo uraditi tako da to bude u folderu KERNEL koji ce da se nalazi u vasem home direktorijumu.
- Otvorite terminal: Applications -> Accessories -> Terminal
-Pravimo direktorijum KERNEL:
Code:
mkdir KERNEL


3) Da ne bi uvek pisali sudo pre svake komande, ukucajte
Code:
sudo su
da postanete root.

4) Sada cemo uci u naprevljen KERNEL direktorijum, skinucemo i otpakovacemo najnoviji (u toku pisanja ovog uputstva, ali cu ga update-ovati uvek kada izadjene nova revizija) kernel:
Code:
 cd KERNEL

Code:
wget -c https://www.kernel.org/pub/linux/kernel/v3.x/linux-3.13.6.tar.xz && tar -xvJf linux-3.13.6.tar.xz 

NAPOMENA: Obratite paznju, da je ovde -xvJf ( veliko "J" koje je flag za LZMA kompresiju ( .xz ), a ne malo "j" koje je flag za .bzip2.

5) Sada cemo da udjemo u direktorijum linux-3.13.6:
Code:
cd linux-3.13.6



5.1)Primer patch-ovanje kernela:

Code:
bzcat patchfile.bz2 | patch -p1



6) Sledeci korak je importovanje konfiguracije i opcija trenutnog kernela:
Code:
cp /boot/config-$(uname -r) .config && yes "" | make oldconfig


7) Sada cemo ukljuciti graficki konfigurator opcija kernela da podesimo kernel po nasem ukusu:
Code:
make xconfig


ili ako vam ovo ne radi onda:

Code:
make gconfig


8) Otvorice vam se graficki prozor u kome cete imati mnogo opcija za ukljucivanje i iskljucivanje. Ovde cu navesti samo neke vaznije stvari:

- Prvo sto cete uraditi jeste da pritisnete CTRL+F i trazite rec "debug" (bez navodnika naravno), kliknete na Search i iskljucite sto vise opcija koje u sebi imaju red "debug", ovo ce vam mnogo smanjiti velicinu kernel image-a.

- Nakon toga izadjite iz search prozora i
Citat:
General setup
. Tu cete naci opcije
Citat:
Optimize for size
i
Citat:
Automatic process group schedular
i stikliracete ih.

- Sledeca stvar je da idete u
Citat:
Processor type and features
i tu cete ukljuciti (ako vec nije ukljuceno):
Citat:
Tickless System (Dynamic Ticks) i High Resolution Timer Support
Onda cete u delu
Citat:
Processor family
izabrati familiju vaseg procesora.
Sledece sto trebate da uradite jeste da u
Citat:
Timer frequency
izaberete 1000Hz.

- Sada idite u
Citat:
Paravirtualized guest support
i iskljucite
Citat:
Xen quest support
inace vam se kernel nece boot-ovati. :)

To bi otprilike bilo najvaznije, sada mozete da malo istrazujete i iskljucite neke drajvere za hardware koji nemate, npr. za web kamere i TV kartice koje nemate, ili ako nemate wireless karticu iskljucite Wireless opciju i tako dalje . Istrazujte malo. ;)

Ako imate Ubuntu 8.10 onda nemate ukljucenu podrsku za ext4 fajl sistem, tako da idite u
Citat:
File systems
i ukljucite sve opcije koje imaju ext4 u sebi, osim debuging opcije.


9) Kada ste zavrsili sa podesavanjima kliknite na Save ikonicu i izadjite iz prozora.

10) Sada u terminalu ukucajte sledece:
Code:
make-kpkg clean


- A kada to zavrsi ukucajte sledece:
Code:
CONCURRENCY_LEVEL=3 make-kpkg --initrd --append-to-version=-custom kernel_image kernel_headers


Napomena: CONCURRENCY_LEVEL je korisna opcija ako imate neki multicore procesor kao sto su Core2Duo/Quad ili AMD X2,X3,X4. Broj iza znaka "=" oznacava Cores+1, tako da, ako imate dual core upisite tu 3, a ako imate quad core upisite 5.

Opcija --append-to-version= sluzi da upisete naziv ravizije kernela. Tu mozete upisati bilo sta umesto ovog "custom", samo sto MORA da ostane "-". Na primer:
Code:
--append-to-version=-zika
. Tako da ce vam se kernel zvati linux-3.13.6-zika.

Gore navedena komanda ce poceti kompajliranje kernela i pravljenje .deb paketa za kernel image i kernel headers. Ako imate neki multicore procesor, kompajliranje ne bi trebalo da traje duze od pola sata, ali ako imate neki single core procesor, kompajliranje ce sigurno potrajati od sat vremena, pa cak i to 4 sata ako imate neki stariji komp. Tako da mozete otici da popijete kafu, odigrate koju partiju basketa (lepo je vreme) ili sta god zelite. :)

11) Kada se kompajliranje zavrsilo, vreme je da instalirate naprevljene pakete:

Code:
 cd ..

Code:
 dpkg -i *.deb

*.deb opcija kaze da instalira sve .deb pakete u trenutnom folderu, a to je folder KERNEL.

Napomena: Najverovatnije svi imaju instaliran paket nvidia-common koji ce praviti probleme pri instaliranju ovog kernela, tako da pre izvrsavanja gore navedene komande "dpkg" uradite:
Code:
apt-get purge nvidia-common

Nakon toga uradite gore navedenu dpkg komandu da bi instalirali novi kernel. Kada se kompajliranje zavrsi, instalirajte ponovo nvidia-common:
Code:
apt-get install nvidia-common

Ne znam da li ova napomena vazi za sve, ili samo za one koji imaju Nvidia graficke, tako da je preporucljivo da svi to uradite za svaki slucaj.



To bi bilo to narode. Ako budete imali bilo kakvih problema, uvek mozete izabrati -generic kernel iz grub-a. :)