Kompajliranje kernela

Najnovije kernele, stabilne i razvojne verzije, možete naći na www.kernel.org.
Trenutne stabilna verzija kernela je 3.2.2, pa ću je koristiti u ovom uputstvu. Uputstvo se ne razlikuje u odnosu na različite verzije kernela.

1- Prvo i osnovno, bez čega nema komajliranja, jeste instalacija potrebnih paketa i alatki:

sudo apt-get install build-essential bin86 kernel-package libqt3-headers libqt3-mt-dev wget libncurses5 libncurses5-dev

2- Napravite posebnu fasciklu u kojoj ćete kompajlirati kernel (ja ću da je nazovem KERNEL) i napraviću je u /usr/src:

sudo mkdir /usr/src/KERNEL

3- Premestite preuzetu .tar.bz2 arhivu kernela u napravljenu fasciklu:

sudo mv putanja/do/preuzete/arhive/linux-3.2.2.tar.bz2 /usr/src/KERNEL

4- Uđite u napravljenu fasciklu:

cd /usr/src/KERNEL

5- Prijavite se kao root, za stalno, da ne biste uvek kucali sudo komandu:

sudo -s

6- Raspakujte arhivu:

tar -xjvf linux-3.2.2.tar.bz2

7- Uđite u raspakovanu fasciklu:

cd linux-3.2.2

8- Importujte konfiguraciju i opcije trenutnog kernela:

cp /boot/config-$(uname -r) .config && yes "" | make oldconfig

9- Pokrenite grafički konfigurator opcija kernela da biste podesili kernel prema vašim potrebama:

make xconfig

10- Prvo što ćete uraditi, kad se otvori prozor sa mnogo opcija, je da pritisnete kombinaciju tastera CTRL+F, nakon čega će se otvoriti prozor za pretragu. U polje za pretragu kucajte debug i pritisnite ENTER. U spisku koji će se pojaviti isključite sve (što više) opcija koje u nazivu imaju tu reč (debug). Ovo će znatno smanjiti veličinu kernela.
Kad to završite izađite iz prozora za pretragu.

Onda:

  • Uđite u opciju General Setup i uključite Optimize for size
  • Uđite u Processor Type and Features i uključite Tickless System (Dynamic Ticks) i High Resolution Timer Support
  • U delu Processor Family (koji je u okviru Processor Type and Features) nađite familiju vašeg procesora
  • U delu Time Fraquency (koji je u okviru Processor Type and Features) izaberite 1000Hz
  • Uđite u Paravirtualized Guest Support i isključite (obavezno) Xen quest support
  • Proverite da li je u General Setup uključena opcija Automatic Group Schedular (ili neki sličan naziv). Trebalo bi da je uključena, lako ćete je uočiti.

To je ono osnovno, a sad Vi možete da pregledate sve što ima i da uključujete/isključujete različite podrške i drajvere (u zavisnosti šta Vam (ne)treba).

Nakon podešavanja kliknite na dugme SAVE i izađite iz prozora.

11- Zatim:

make-kpkg clean

12- A onda kreće kompajliranje:

CONCURRENCY_LEVEL=4 make-kpkg --initrd --append-to-version=-petar linux_image linux_headers

CONCURRENCY_LEVEL je korisna opcija ako imate neki multicore procesor. Broj iza znaka jednakosti (=) je broj jezgara koji ima Vaš procesor +1 (ja imam trojezgarni procesor, zato sam stavio 4 (3+1=4))

–append-to-version znači da možete da upišete naziv kernela, ali iza znaka jednakosti (=) uvak mora da ostane ,-’’

Kada ste sve lepo upisali, pritisnite ENTER i počeće proces kompajliranja kernela i kreiranja .deb paketa koje ćete posle instalirati.

Proces može da potraje, u zavisnosti od broja jezgara Vašeg procesora. Što više jezgara ima - brže će se završiti kompajliranje.

13- Kada se kompajliranje završi i .deb paketi budu kreirani izađite iz fascikle linux-3.2.2, jer su paketi kreirani u fascikli KERNEL:

 cd ..

14- Pre nego što instalirate pakete, potrebno je da privremeno uklonite paket nvidia-common koji može ponekad da napravi problem.

sudo apt-get purge nvidia-common

Ja nisam smeo da ukolim ovaj paket iz KDE-a jer je automatski povlačio i kubuntu-desktop*, pa nisam hteo da ostanem bez okruženja. U Mint Cinnamon okruženju sam ga uklonio bez problema.

15- Nakon uklanjanja pomenutog paketa sledi instalacija:

sudo dpkg -i *.deb

16- Nakon instalacije sledi ponovna instalacija paketa nvidia-common:

sudo apt-get install nvidia-common

Retartujte računar i uđite u novi kernel. To bi bilo to…

NAPOMENA:
Ako imate neki vlasnički drajver ručno instaliran, onda ga potpuno uklonite, pa instalirajte opet. U tom slučaju može da se desi da vas dočeka samo konzola ili okruženje bez 3D efekata. Nemojte da se zbunite, već samo potpuno uklonite vlasničke drajvere i opet ih instalirajte.

@Kmamuz :wink:
Глупо питање али морам да питам, ја имам АТИ и два-три пута радио сам компајлирање кернела кроз неку готову процедуру. Занима ме да ли ово треба

sudo apt-get purge nvidia-common sudo apt-get install nvidia-common
да ли се то само односи на графичку или уопштено на чип-сетове на матичној плочи

ovo se odnosi na grafičku kartu…

Ja isto imam atijevu grafičku. Ali sam čuo da nekad može da napravi problem, pa se zato preporučuje privremena deinstalacija. S druge strane, ja to nisam nikad radio u KDE-u. Danas sam prvi put uradio u Mint Cinnamon okruženju i sve je prošlo kako treba…
Ako @Vladimir kaže da se odnosi na grafičku - onda je tako, jer ja ne znam, samo sam sledio uputstva.

@Vladimir
Хвала :wink:
Избацио си приказивање ОС и веб прегледача. Да ли то оптерећује форум, мени је занимљиво да видим који је ОС и веб прегледач :slight_smile:
@Kmamuz
/usr/src/KERNEL то је на / структури а конкретно на /usr/src/ су linux-headers-xxx дирови, да ли то мора баш ту да се ради на тој структури?
Ако ми се ноћас небуде спавало покушаћу да искомпајлирам 3.2.2, има ли у опцијама да наместим за мој 32 битни стари Бартон процесор.
Кад смо већ код теме да ли ико зна шта је то избачено из 3.xxx па ми не ради ФМ тјунер са картице.

Ma to možeš bilo gde, nego ja sam tako navikao…

Možda možeš da aktiviraš drajvere za tjuner pri konfiguraciji kernela (korak 9 i 10, make xconfig)
A za procesor podešavaš u Processor Family (korak 9 i 10, make xconfig) - podrazumevano stoji Generic x86-64 (tako nekako), pa ako ne nađeš tvoj tip procesora, ostavi tako, ja tako radim i nisam imao problema do sada, a kompajlirao sam puno puta)

Ех ја да знам који му ђаво треба активирати то би већ урадио раније. Пробао сам да гледам конфигурациони фајл и набодем који је то параметар, пробао сам програмски да упоређујем два конфигурациона фајла и да нађем тако разлику и погодим да се то односи на ФМ тјунер, нема теорије. :wink:
То изгледа знају само они који су то избацили из кернела, питање је уопште да ли та опција и постоји, замисли колики би био генерични кернел кад би само додавали нову подршку за уређаје. :slight_smile:

Bre, šta znam… Je l’ si probao da, kad počneš sa konfiguracijom, odradiš CTRL+F pa da kucaš tuner ili fm tuner i da vidiš šta će sve da nađe?

Пробаћу чим се наканим да компајлирам, хладно у стану чим крене кошава па ми се не седи за компом.

Imamo suviše jak i kvalitetan hosting da bi taj maleni plugin opterećivao server :wink: Uklonjen je dok se ne ispravi kritični bug u njemu koji je veoma opasan, pritom autor će u narednoj verziji ubaciti još sistema za detekciju jer nekada neće da detektuje neki sistem (aka RHEL, blackberry, adnorid itd itd)

@dragan99

Koja je kartica u pitanju?

Leedteak WinFast 2000 XP Global
/etc/modprobe.d/tvcard.conf
options cx88xx card=61 tuner=71 radio=1

firmware xc3028-v27.fw
ТВ ради а ФМ тјунер не, радило је све до верзије кернела 3
Не пријављује никакве грешке кад се ФМ (гномерадио) стартује из терминала.
Спустим се у верзију кернела

Aj probaj sa ovim ako nisi

http://www.linuxtv.org/wiki/index.php/Xceive_XC3028/XC2028#How_to_Obtain_the_Firmware

mada ima tu neka fora da ako se firmware podize pre vremena onda bi ga trebao staviti kao modul da se podize pa ga posle ubacis ako se dobro secam

Iz kernel nije izbacen, samo da ima taj bug sa firmware ima

To sam radio kad nije bilo firmware u OS. Od neke verzije Ubuntu i Minta ovaj modul postoji, ucitava se posebno kao linux-firmware-nonfree.
U Debijanu linux-firmware-nonfree ne sadrzi taj firmware, a LDME se ne secam, trenutno sam u XP. Ne znam za tu foru, ja sam karticu uvek
definisao kao gore u primeru sa datim opcijama. Firmware je na /lib/firmware i koliko vidim to se sve ucitava odmah kod podizanja sistema.
Problem postoji od verzije kernela 3, do te tacke sve je radilo uz malo eskivaze posle 10.04 Ubuntua kada je /dev/mixer ukinut pa se stavi /dev/null
i CD jer je audio sa kartice vezan za maticnu plocu. Mogu da pokusam sa ponovnim vadjenjem firmware kao na linku, radio sam to pre par meseci.

Исправка пријављује код подизања firmware грешку у линији 1200 а грешка је -6

dmesg

[ 8.896198] cx88[0]/0: registered device video1 [v4l2] [ 8.896379] cx88[0]/0: registered device vbi0 [ 8.896475] cx88[0]/0: registered device radio0 [ 8.896842] cx88_audio 0000:01:0a.1: PCI INT A -> Link[APC1] -> GSI 16 (level, high) -> IRQ 16 [ 8.896887] cx88[0]/1: CX88x/0: ALSA support for cx2388x boards [ 8.936682] xc2028 2-0061: Error on line 1200: -6

Evo kernel se krcka… pre par nedelja sam se igrao ali onako na brzinu i nije ispalo kako treba, nvidia je zezala pa sam se morao vratiti na generic kernel, verovatno sam nesto bitno ugasio slucajno. Uglavnom da dodam nekoliko predloga kljucih reci za pretragu prilikom gasenja kojecega u xconfig:

Radio adapters - defaultno ukljucen, a broj korisnika sa FM/AM prijemnikom/ karticom je ravan statistickoj gresci (ne poznam nijednog)

AGP support - takodje je default ukljuceno, a broj ploca sa AGP slotovima opada, imam jedan al znam da ga necu korisiti

Apple - sta reci, osim - GASI!

Macintosh - isti slicaj kao i sa Apple

laptop/netbook - za desktop racunare slobodno pogasiti sve vezano za laptop/netbook

ISDN i telephony - ovo zavisi od potrebe za istim, ali sa ADSL, kabovskim i Wireless internetom sve preko stare parice je nepotrebno, mislim, za ljude koji ne korite ovaj nacin pristupa internetu

touchpad - ko kompajlira za desktop mahinu, ovi moduli su, suvisno je reci, nepotrebni

i touchscreens - manje vise, opet, broj korisnika sa ekranima osetljivim na dodir je, hm… 0,001%? (ne racunajuci telefone :wink: )

X-Box i Xbox - pretraga nece nuzno naci nesto sa ovim kljucnim recima, ali opcije postoje, ja sam moje pogasio

native language support- dosta nama nepotrebnih jezika u ovoj podrsci, pogasiti sve sto ne umete/nemate potrebe da citate (Greek, Hebrew, Arabic, Baltic, Chinese, Japanese, Thai…)

Kernel hacking - unused symbols - i sam info u okviru xconfig preporucuje gasenje, jer su vecina zstareli, ali opcija postoji (i iz nekog razloga je default ukljucena) za sada

  • ja sam pogasio sve AMD i ATI module jer je chipset Intel a grafika NVidia, ovo zavisi od konfiguracije, ovo je samo primer, trazite spram onoga sto imate od hardware-a

za dragan99 - mozda je razlog za prijavljivanje greske kod podizanja firmware sledeca (jer je po default ukljuceno):

[code]CONFIG_PREVENT_FIRMWARE_BUILD:

Say yes to avoid building firmware. Firmware is usually shipped
with the driver and only when updating the firmware should a
rebuild be made.
If unsure, say Y here.

Symbol: PREVENT_FIRMWARE_BUILD [=y]
Type : boolean
Prompt: Prevent firmware from being built
Defined at drivers/base/Kconfig:68
Location:
-> Device Drivers
-> Generic Driver Options[/code]

Da li je ovo ukljuceno u trenutni kernel (koji pravi problem) se moze proveriti u /usr/src/linux-trenutna-verzija-kernela/.config pretragom za PREVENT_FIRMWARE_BUILD

Dobro je ovo, sigurno će biti od koristi, pa čak i meni :wink:
Nisam se ja nešto posebno trudio oko tih opcija… Ali sećam se jednom, kad sam kompajlirao kernel na Fedora-i, ništa nisam dirao, sve živo je instaliralo i kenel je bio težak oko 2GB (nakon instalacije) :slight_smile:
Bruke :slight_smile:

Gotov kernel! Oba .deb fajla teska 39.2 MB, a vrh je da imaju ono -petar- u nazivu (OPET!) jer sam zaboravio da im nadenem moje vrlo sasvim licno&personalno ime :wink: Trenutni kernel se dize i zauzima oko 220MB u RAM. Zaboravio sam da dodam da sam sa defaultne .gzip kompresije (General setup>Kernel compression mode) stavio XZ koji bi trebao da rezultira oko 30% manjim kernelom sa skoro istom brzinom dekompresije. Sad kad instaliram javljam kako radi…

… i radi fino. Za sad sve radi, stampac, web kamera, video, audio, net, jedino sto usteda i nije kakvoj sam se nadao, zauzima oko 210-215MB. Mozda je placebo, al kao da mi nekako brze radi gnome-shell. uopste sam sistem, mada posle restarta je uvek malo zivahniji. Javicu za eventualne probleme, ali za sad se cini da je sve proslo ok, za razliku od predhodnog puta. :slight_smile:

edit2: Vidi mi cela 3BG RAM memorije, a ne 2.9GB kao sa generic-pae kernelom, da ne pominjem 2.5Gbkoje vidi obican generic kernel… mozda od ovoga ispadne jos nesto zanimljivo… a vec imam ideju, narocito ako spustim sapu nas jos 1GB RAM-a

A ideja potice od ovoga:

Q) Why is Arch using all my RAM?

A) Essentially, unused RAM is wasted RAM.

Many new users notice how the Linux kernel handles memory differently than they are used to. Since accessing data in RAM is much faster than from disk, the kernel caches recently accessed data in memory. The cached data is only cleared when the system begins to run out of unused memory and new data still needs to be loaded.

Perhaps the most common culprit of this confusion is the free command:
$ free -m
total used free shared buffers cached
Mem: 1009 741 267 0 104 359
-/+ buffers/cache: 278 731
Swap: 1537 0 1537

It is important to note the -/+ buffers/cache: line – a representation of the amount of memory that is actually in “active use” and the amount of “available”
memory, rather than “unused”.

In the above example, a laptop with 1G of total RAM appears to be using 741M of it, with naught but a few idling terminals and web browser open! However, upon examining the emphasized line, see that only 278M of it is in “active use”, and in fact 731M is “available” for new data. Apparently, 104M of that “used” memory contains buffered data and 359M contains cached data, both of which can be cleared away if needed. Only 267M of the total is truly “free” of the burden of data storage.

The result of all this? Performance

Mozda bi vredelo otvoriti novu temu oko Linux-from-RAM ideje…

@Shankly,

kod mene je

CONFIG_PREVENT_FIRMWARE_BUILD=y

Da bi potvrdio da je to problem treba videti kernel 2.x sta stoji u njemu.

ja poznajem a i hocu da mi FM radi jer je u 2.x kernelu radio

Radio adapters - defaultno ukljucen, a broj korisnika sa FM/AM prijemnikom/ karticom je ravan statistickoj gresci (ne poznam nijednog)

imam samo 4MB konekciju trebalo je 16MB ali ispalo da nece da mi zamene plocu u centrali, imam ISDN liniju, cerka stalno vuce protok a to se resava sa Net limiterom jer je ona na XP.

Proverio sam u /usr/src/linux-source-2.6.38 i tu je kompajlirano sa tom opcijom, znaci nije to problem :wink: