Како инсталирати најновији кернел са kernel.org на CentOS 7

CentOS није ажуран са верзијама кернела али не зато што га боли уво већ зато што има неку интерну политику која подразумева да је стабилност система испред нових могућности које доноси новија верзија кернела…

CentOS је првенствено Линукс дистро намењен серверима па се рецимо препознавање новије звучне или мрежне карте не води као некакав приоритет али зато уколико постоји безбедносни пропуст унутар постојеће верзије кернела – CentOS као и Red Hat ће пустити апдејт кроз стандардни репозиторијум који се може инсталирати једноставним yum-update и после рестартом, не овако ‘од нуле’ као што ће овде бити случај.

Овим упутством овде само ћу укратко проћи кроз процес инсталације тренутно новијег кернела (на дан 20/10/2017 кад је писано ово упуство, најновија верзија је носила ознаку 4.13.8) без неких додатних промена (проверите издате верзије), дубљих конфигурација, избацивање непотребних ствари и одабира могућности кроз config фајл. Инсталацију радим на CentOS 7 минимал инсталацији са одрађеним иницијалним упдатеом (yum update -y). Уколико ви радите апдејт кернела чисто себе ради направите бекап система или ако користите неки вид виртуализације одрадите снепшот система па ако после неког времена у раду не буде некаквих проблема…можете обрисати исти – а свакако, ако се кернел не покаже добро увек можете да бутнете систем са старијег кернела и као да се ништа није десило.

Сама инсталација новог кернела ручно се ради дуго (може бити и неколико сати) тако да се не изненадите – систем за то време ради нормално јер сте бутовани у тренутни кернел и док год је он ту, нема бриге. У неком наредном тексту ћу поставити како изгледа процес инсталације на лакши начин, кроз elrepo-kernel репозиторијум.

Наравно, моја је препорука да кернеле ажурирате само са званичног CentOS репоа (base и updates) јер су то верзије проверене и тестиране у раду са CentOS-ом од стране тима који ради на развоју и одржавању дистре (и CentOS и Red Hat) те је шанса да нешто крене по злу равна нули…. Дакле са доленаведеним упутством радите само ако баш морате из неког разлога. Екипа која је иза CentOS-а ће свакако објавити новију верзију уколико постојећа буде имала неких проблема који могу утицати на стабилност или безбедност.

# Инсталирање потребних пакета за процес компајлирања кернела
yum install wget gcc make ncurses-devel openssl-devel elfutils-libelf-devel bc perl -y

# Download kernel-a
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

# Прављење config фајла на основу последњег искоришћеног
cp $( ls -1t /boot/config-* | head -1) .config

# Покретање менија за одабир опција. За сад, само одаберите Save
make menuconfig

# Отпочињање процеса надоградње кернела (може трајати и неколико сати)
make -j `nproc` && make modules_install && make install

# Након инсталације рестартовати сервер да би се видело - има ли новог кернела
reboot

После рестарта дочекао ме је нови кернел у понуди – али није био дифолтни за бутовање – и даље се бутовао стари…дакле треба ово променити на нови кернел.

Ту је нови кернел – али није дифолтни

Процес постављања новог кернела за старт је поприлично једноставан (мада има и компликованијих начина) – треба само наћи који је по реду у фајлу /etc/grub2.cfg и простом командом са тим редним бројем га поставити на нову вредност. Напомена је да бројање почиње од нула, дакле први кернел на листигу је са редним бројем нула.

# Видети који је по реду нас кернел, редослед почиње од нула
grep "menuentry '" /etc/grub2.cfg

# Да нас кернел, који је под редним бројем 0 буде дефаултни
grub2-set-default 0

# Па рестартовати да се провери ова промена и систем бутне кроз нови кернел
reboot
Сад је ОК, наш кернел је дефаултни

Ако немате приступ дисплеју или конзоли, верзију кернела можете проверити командом: uname -r

Наш кернел