CentOS nije ažuran sa verzijama kernela ali ne zato što ga boli uvo već zato što ima neku internu politiku koja podrazumeva da je stabilnost sistema ispred novih mogućnosti koje donosi novija verzija kernela…

CentOS je prvenstveno Linux distro namenjen serverima pa se recimo prepoznavanje novije zvučne ili mrežne karte ne vodi kao nekakav prioritet ali zato ukoliko postoji bezbednosni propust unutar postojeće verzije kernela – CentOS kao i RedHat će pustiti update kroz standardni repozitorijum koji se može instalirati jednostavnim yum-update i posle restartom, ne ovako ‘od nule’ kao što će ovde biti slučaj.

Ovim uputstvom ovde samo ću ukratko proći kroz proces instalacije trenutno novijeg kernela (na dan 20/10/2017 kad je pisano ovo upustvo, najnovija verzija je nosila oznaku 4.13.8) bez nekih dodatnih promena (proverite izdate verzije), dubljih konfiguracija, izbacivanje nepotrebnih stvari i odabira mogućnosti kroz config fajl. Instalaciju radim na CentOS 7 Minimal instalaciji sa odrađenim inicijalnim updateom (yum update -y). Ukoliko vi radite update kernela čisto sebe radi napravite bekap sistema ili ako koristite neki vid virtualizacije odradite snapshot sistema pa ako posle nekog vremena u radu ne bude nekakvih problema…možete obrisati snapshot – a svakako, ako se kernel ne pokaže dobro uvek možete da butnete sistem sa starijeg kernela i kao da se ništa nije desilo.

Sama instalacija novog kernela ručno se radi dugo (može biti i nekoliko sati) tako da se ne iznenadite – sistem za to vreme radi normalno jer ste butovani u trenutni kernel i dok god je on tu, nema brige. U nekom narednom tekstu ću postaviti kako izgleda proces instalacije na lakši način, kroz elrepo-kernel repozitorijum.

Naravno, moja je preporuka da kernele ažurirate samo sa zvaničnog CentOS repoa (base i updates) jer su to verzije proverene i testirane u radu sa CentOS-om od strane tima koji radi na razvoju i održavanju distre (i CentOS i RedHat) te je šansa da nešto krene po zlu ravna nuli…. Dakle sa dolenavedenim uputstvom radite samo ako baš morate iz nekog razloga. Ekipa koja je iza CentOS-a će svakako objaviti noviju verziju ukoliko postojeća bude imala nekih problema koji mogu uticati na stabilnost ili bezbednost.

# Instaliranje potrebnih paketa za proces kompajliranja kernela
yum install wget gcc make ncurses-devel openssl-devel elfutils-libelf-devel bc perl -y

# Download kernela
mkdir -p /usr/src/kernels/
cd /usr/src/kernels/
wget https://www.kernel.org/pub/linux/kernel/v4.x/linux-4.13.8.tar.gz
tar xvf linux-4.13.8.tar.gz
rm -f linux-4.13.8.tar.gz
cd linux-4.13.8

# Pravljenje config fajla na osnovu poslednjeg iskoriscenog
cp $( ls -1t /boot/config-* | head -1) .config

# Pokretanje menija za odabir opcija. Za sad, samo odaberite Save
make menuconfig

# Otpocinjanje procesa nadogradnje kernela (moze trajati i nekoliko sati)
make -j `nproc` && make modules_install && make install

# Nakon instalacije restartovati server da bi se videlo - ima li novog kernela
reboot

Posle restarta dočekao me je novi kernel u ponudi – ali nije bio difoltni za butovanje – i dalje se butovao stari…dakle treba ovo promeniti na novi kernel.

Tu je novi kernel – ali nije difoltni

Proces postavljanja novog kernela za start je poprilično jednostavan (mada ima i komplikovanijih načina) – treba samo naći koji je po redu u fajlu /etc/grub2.cfg i prostom komandom sa tim rednim brojem ga postaviti na novu vrednost. Napomena je da brojanje počinje od nula, dakle prvi kernel na listigu je sa rednim brojem nula.

# Videti koji je po redu nas kernel, redosled pocinje od nula
grep "menuentry '" /etc/grub2.cfg

# Da nas kernel, koji je pod rednim brojem 0 bude defaultni
grub2-set-default 0

# Pa restartovati da se proveri ova promena i sistem butne kroz novi kernel
reboot

Sad je OK, naš kernel je defaultni

Ako nemate pristup displeju ili konzoli, verziju kernela možete proveriti komandom: uname -r

Naš kernel