Kompajliranje i instalacija novog kernela

Uputstva, saveti i trikovi

Moderator: Urednik

Post Reply

Administrator
Administrator
offline
User avatar

Posts: 4590
Joined: 04 Feb 2011, 20:32
Location: Beograd
Contact:

Post Napisano: 09 Sep 2012, 14:10


Rezime: ovo uputstvo se bavi instalacijom novijeg kernela na Slackware sistem na primeru kernela 3.5.3.

Uputstvo podrazmeva da ste ulogovani kao root. Ako niste, otvorite emulator terminala (xterm, rxvt, urxvt, konsole, Xfce Terminal) i otkucajte:

Code: Select all

su
Zatim nastavite sa praćenjem uputstva.

Priprema

Izvorni kod Linuks kernela se nalazi u /usr/src. Prebacite se u taj direktorijum

Code: Select all

cd /usr/src
Preuzmite i raspakujte arhivu sa izvornim kodom:

Code: Select all

wget http://www.kernel.org/pub/linux/kernel/v3.0/linux-3.5.3.tar.bz2
tar xvf linux-3.5.3.tar.bz2
Uklonite arhivu i prebacite se u novo kreirani direktorijum:

Code: Select all

rm linux-3.5.3.tar.bz2  
cd linux-3.5.3
Konfiguracija

Prekopirajte konfiguraciju trenutno aktivnog kernela:

Code: Select all

zcat /proc/config.gz > .config
Da bismo prilagodili konfiguraciju starijeg kernela novom, potrebno je pokrenuti:

Code: Select all

make oldconfig
ili

Code: Select all

make silentoldconfig
Razlika između ove dve opcije je da će oldconfig postaviti pitanja za svaku od dodatih opcija u novoj verziji kernela. Silentoldconfig će automatski primeniti podrazumevana podešavanja za nove opcije.

Ako izaberete silentoldconfig, uvek možete naknadno pokrenuti:

Code: Select all

make menuconfig
i izabrati potrebne opcije u ncurses meniju. Prednost menija je i u tome što su opcije kategorizovane. To znači i da je lakše naći opciju ili opcije koje potrebno promeniti.

Za ljubitelje grafičkog interfejsa, takođe je moguće pokrenuti i grafičke menu interfejse:

Code: Select all

make xconfig
odnosno

Code: Select all

make gconfig
Imajte na umu da ove dve opcije zahtevaju dodatne zavisnosti (Qt odnosno Gtk).

Izgradnja

Da biste izgradili kernel i odgovarajuće module dovoljno je otkucati:

Code: Select all

make
Za naprednije korisnike će možda biti zanimljive i dodatne opcije izgradnje (kao i konfiguracije i instalacije):

Code: Select all

make help
Instalacija

Prvo instaliramo module kernela:

Code: Select all

make modules_install
Zatim kopiramo kernel, konfiguraciju i tabelu simbola koju koristi kernel u /boot:

Code: Select all

cp arch/i386/boot/bzImage /boot/vmlinuz-3.5.3-smp 
cp .config /boot/config-3.5.3-smp
cp System.map /boot/System.map-3.5.3-smp
Zatim dodajte novi unos /etc/lilo.conf. Umesto /dev/sda6, unesite particiju na kojoj se nalazi Slackware na vašoj mašini.

Code: Select all

image = /boot/vmlinuz-3.5.3-smp
	root = /dev/sda6
	label = Linux-Test
	read-only
Da bi unos bio dodat potrebno je i pozvati lilo bez parametra:

Code: Select all

lilo
Pri sledećem bootu, u LILO boot meniju će se pojaviti nova opcija: "Linux-Test". Izaberite je i pokrenite sistem.

Postavljanje novog kernela kao podrazumevanog

Ukoliko ste testirali novi kernel i sve radi ok, možete ga postaviti i kao podrazumevani:

Code: Select all

cd /boot
rm vmlinuz System.map config
ln -s /boot/vmlinuz-3.5.3-smp /boot/vmlinuz
ln -s /boot/System.map-3.5.3-smp /boot/System.map
ln -s /boot/config-3.5.3-smp /boot/config
Zatim obrišite Linux-Test unos iz lilo.conf i pokrenute lilo bez parametara:

Code: Select all

lilo
Takođe možete napraviti i unos za stari Linux kernel. Ovo je preporučljivo kao backup opcija u slučaju problema sa novim kernelom. Napr:

Code: Select all

image = vmlinuz-huge-smp-3.2.28-smp
	root = /dev/sda6
	label = Linux-Old
	read-only
Napomene

Vlasnički drajveri za grafičke karte

Ukoliko koristite vlasničke drajvere za grafiku, biće potrebno ponovo pokrenuti instalacioni program. Ukoliko vam se sistem pokreće u init nivou 4, najbolje je da to privremeno promenite u 3 (/etc/inittab). Nakon restarta, sistem neće automatski pokrenuti X server i bićete u mogućnosti da pokrenete instalacioni program vlasničkog drajvera. Nakon što se instalacija uspešno završi, možete vratiti podrazumevani init nivo na 4.

Ako imate problema sa instalacijom vlasničkih drajvera na nekom od novijih kernela, pogledajte da li je izašla novija verzija. Ako nije, najčešće je patch dostupan na nekoj od brojnih mailing lista ili internet forumima.

VirtualBox virtualni drajveri

Nakon reinstalacije kernela potrebno je i prekompajlirati drajvere za VirtualBox uređaje. VirtualBox dolazi za rc.vboxdrv skriptom koja ovo automatizuje. Pokretanje skripte sa opcijom setup će obaviti sve potrebne zadatke, uključujući učitavanje novo-izgrađenih kernel modula i pokretanje VirtualBox servisa.

Code: Select all

/etc/rc.d/rc.vboxdrv setup
LILO

Koliko sam primetio iz tema na ovom forumu, većina multibootera koristi grub2 kao primarni boot loader na sistemu. GRUB2 pokušava da učita boot loader s početka particije na kojoj se nalazi Slackware, ali pošto on ne postoji (podrazumevano se LILO instalira u MBR i biva prepisan prilikom instalacije GRUB2), pokušava da pročita vrednosti iz lilo.conf.

Jedna od opcija za rešavanje problema je i pokušaj da se boot sektor zapiše na početak particije umesto u MBR. Za ovo je potrebno samo promeniti opciju boot u /etc/lilo.conf. Tj. umesto:

Code: Select all

boot=/dev/sda
upisati:

Code: Select all

boot=/dev/sda[n]
Gde je [n] broj particije na čiji početak pokušavamo da instaliramo LILO boot sektor (napr: /dev/sda3 ili /dev/sdb6).

I zatim pokrenuti LILO bez parametara:

Code: Select all

lilo



Poznata ličnost
Poznata ličnost
offline

Posts: 129
Joined: 01 May 2012, 23:26
Location: 42,69 - 22,16

Post Napisano: 11 Sep 2012, 18:10


Како после ажурирања кернела могу и где да видим карактеристике новог кернела. Интересује ме да ли постоји неки конфигурациони фајл у коме могу видети и проверити да ли су ставке које сам уклучио/исклучио током конфигурисања и компајлирањја баш те које сам ја одабрао.
Поздрав



Administrator
Administrator
offline
User avatar

Posts: 4590
Joined: 04 Feb 2011, 20:32
Location: Beograd
Contact:

Post Napisano: 11 Sep 2012, 19:59


U .config datoteci u direktorijumu sa izvornim kodom kernela ili config* datotekama u /boot direktorijumu. Ako je kernel kompajliran s tom opcijom (u Slacku je to podrazumevano), takođe i iz /proc/config.gz. /proc/config.gz sadrži .config datoteku sa opcijama trenutno pokrenutog kernela.



Administrator
Administrator
offline
User avatar

Posts: 4590
Joined: 04 Feb 2011, 20:32
Location: Beograd
Contact:

Post Napisano: 12 Sep 2012, 16:23


Ako kopirate config iz Slacka 14 RC+ (kernel 3.2.x) u direktorijum krenela 3.5.3 (najverovatnije važi i za 3.4.x), pri izgradnji kernela će se javiti sledeća greška:

Code: Select all

fs/built-in.o: In function `gfs2_lock':
file.c:(.text+0x3a8a60): undefined reference to `dlm_posix_lock'
file.c:(.text+0x3a8ac3): undefined reference to `dlm_posix_get'
file.c:(.text+0x3a8af3): undefined reference to `dlm_posix_unlock'
fs/built-in.o: In function `gdlm_cancel':
lock_dlm.c:(.text+0x3bafcd): undefined reference to `dlm_unlock'
fs/built-in.o: In function `gdlm_lock':
lock_dlm.c:(.text+0x3bb222): undefined reference to `dlm_lock'
fs/built-in.o: In function `gdlm_unmount':
lock_dlm.c:(.text+0x3bb8e5): undefined reference to `dlm_release_lockspace'
fs/built-in.o: In function `control_unlock':
lock_dlm.c:(.text+0x3bba91): undefined reference to `dlm_unlock'
fs/built-in.o: In function `sync_lock':
lock_dlm.c:(.text+0x3bbc02): undefined reference to `dlm_lock'
fs/built-in.o: In function `gdlm_put_lock':
lock_dlm.c:(.text+0x3bc530): undefined reference to `dlm_unlock'
fs/built-in.o: In function `gdlm_mount':
lock_dlm.c:(.text+0x3bc876): undefined reference to `dlm_new_lockspace'
lock_dlm.c:(.text+0x3bcb49): undefined reference to `dlm_unlock'
lock_dlm.c:(.text+0x3bccca): undefined reference to `dlm_release_lockspace'
make: *** [vmlinux] Error 1
Problem se javlja zato što jedna od uključenih opcija zahteva da se uključi druga. Pri prenosu config fajla ovo nije slučaj, pa je potrebno izmeniti par linija:

Code: Select all

CONFIG_GFS2_FS = m
CONFIG_DLM = m
ili

Code: Select all

#CONFIG_GFS2_FS is not set
#CONFIG_DLM is not set
Inače, u pitanju su distribuirani fajl sistem i modul za distribuirani pristup deljenim resursima mašina vezanih u klastere. Za lične desktop mašine se ove opcije mogu sasvim bezbedno isključiti.

Hvala broku na potvrdi i prijavi.



Administrator
Administrator
offline
User avatar

Posts: 3451
Joined: 01 Apr 2012, 13:50
Location: Mlečni put

Post Napisano: 12 Sep 2012, 16:36


Kad se vratim sa FSD pa da probam i ja ;)
Use the source, Luke
SSZ irc kanal
Spread the Word, “CHOOSE SLACK! and Don’t look back.”



Poznata ličnost
Poznata ličnost
offline

Posts: 129
Joined: 01 May 2012, 23:26
Location: 42,69 - 22,16

Post Napisano: 12 Sep 2012, 19:50


Тако је. И код мене се јавила иста грешка, па сам ја користио мали другачији начин за компајлирање.
Медјутим, то сам урадио на тај начин, да се не види да је нови кернел компајлиран, ветц је остао број старе верзије. Зато сам и тражио помоћц, како би могао да сагледам да ли сам компајлирао праву верзију кернела.



Povremen korisnik
Povremen korisnik
offline
User avatar

Posts: 21
Joined: 17 Jul 2012, 08:10

Post Napisano: 23 Sep 2012, 03:56


pozdrav,
Evo da dodam i ja par stvari na ovu temu. Upravo pišem sa novog 3.5.4 kernela. I meni se javila greška u kompajliranju
koja je već navedena ranije, iako sam koristio konfiguracioni fajl sa najnovijeg RC5 rilisa.

BTW, dobra vam je fora sa prijavljivanjem na forum, ono pitanje :)

Evo par saveta, mada ja trenutno sam na Salix-u.
Posle uspešno iskompajliranog kernela, posle reboot-a, ako hoćete da podignete sistem kao init 3 user, ne mora
da se otvara menja inittab fajl. Može se samo trenitno podići sistem na tom nivou. A to se postiže pritiskom na TAB taster
u Lilo meniju pored odgovarajućeg kernela, u ovom slučaju 3.5.4 ili kao ste ga nazvali. Otvoriće se lilo konzola
i treba samo dodati komandu "telinit 3" u nekim slučajevima treba napraviti razmak
pritiskom na space, pre ukucavanja komande .zatim lupite Enter, i podići se se sistem.
Takođe, da bi kompajliranje kernela prošlo što brže, bez dugotrajnog čekanja, posle konfiguracije,
prebaci se na runlevel 1, komandom "telinit 1"
a ako imamo neki jači procesor, komandu "make" dopinićemo opcijom "make -j 4 ili 7" .
Skratiće se vreme kompajliranja za par puta.

U ovom novom kernelu 3.5, za korisnike Realtek HD Audio drajvera, nije potrebno naknadno instalirati te drajvere,
oni su već u kernelu.

pozdrav



Administrator
Administrator
offline
User avatar

Posts: 4590
Joined: 04 Feb 2011, 20:32
Location: Beograd
Contact:

Post Napisano: 23 Sep 2012, 14:47


Pozdrav i hvala na savetima. :)

Što se tiče '-j n' opcije, izgleda da postoje različita mišljenja na netu. Neki kažu broj jezgara + 1, neki kažu broj jezgara, neki kažu da je najbolje ispitati u praksi. Malo sam testirao na svojoj mašini (Intel Dual Core E5400) i "-j 3" ( (broj jezgara + 1) izgleda kao ok vrednost. Mada su performanse tek nešto bolje nego kad je u pitanju "-j 2" (broj jezgara). Druge opcije neznatno degradiraju brzinu izgradnje.

Međutim, moguće je da ove opcije variraju u odnosu na procesor u računaru. Na primer, low end procesori sa ograničenom količinom keša ili procesori za prenosne uređaje. Takođe je moguće da će se vrednosti razlikovati i za procesore različitih proizvođača. Možda je i najbolji savet testirati na konkretnom računaru.

Btw, ovde govorimo o brzini izgradnje, ova opcija nema veze sa brzinom izvršavanja izgrađenog kernela.



Administrator
Administrator
offline
User avatar

Posts: 3451
Joined: 01 Apr 2012, 13:50
Location: Mlečni put

Post Napisano: 07 Oct 2012, 20:06


Nikad mi kompajliranje nije uradio za pola sata. Skinuo sam 3.6.1 verziju i u menu config nisam ništa menjao, nisam davno kompajlirao pa sam zaboravio neke opcije. Sad nek ide ovako a neki sledeći put ću da radim izmene u kernelu.
Odoh sad da instaliram module, kernel i da podesim lilo. Valjda ću sve uraditi kako treba :)

Ako sve uradim kako treba častim sok od zove :)

EDIT: iako je kompajliranje proteklo dobro moduli instalirani i nigde greška nije prikazana opet nije mogao da se pokrene.
Izbacuje grešku

Code: Select all

No kernel modules found for Linux 3.6.1
Module sam instalirao, pratio sam uputstvo korak po korak. Negde je nastala greška a ne znam gde. Probaću još jednom iz početka, kompajliranje, linkovanje i lilo. Ako ne uspem ostavljam za sutra.

Greška je nastala zbog jednog reda koji sam dodao u lilo.conf, sada sam to izbacio ali nema šanse da se podigne sistem. Sve neki kernel panic, mount, nešto nešto :D Gde li sam se zahebao?!
Use the source, Luke
SSZ irc kanal
Spread the Word, “CHOOSE SLACK! and Don’t look back.”



Administrator
Administrator
offline
User avatar

Posts: 4590
Joined: 04 Feb 2011, 20:32
Location: Beograd
Contact:

Post Napisano: 07 Oct 2012, 21:33


Otvori posebnu temu. :) Usput "ponesi" lilo.conf i output "fdisk -l" i "blkid". ;)


Post Reply

Who is online

Users browsing this forum: No registered users and 14 guests