Kexec: prepínanie kernelu za behu systému

Určite to poznáte, máte na správu veľmi dôležitý server ale nastala veľmi zlá situácia, kernel ktorý používate je veľmi zastaralí alebo potrebujete ho patchnúť. To je normálne, skompilujete nový kernel, vytvoríte grub entry ale teraz je tu veľmi dôležité rozhodnutie.
Buď reštartujete celý server, čo zabere nejaký čas, vypne všetky služby a ak máte na starosti mail server a pracujete vo väčšej firme tak aj zbytočných 30 sekúnd offline štádia vás môže stáť miesto. Druhé riešenie je elegatný spôsob pomocou kexec. Kexec je jednoduchý system kernel call program ktorý dovoluje priamo nabootovať kernel s initrd obrazom.

Kexec sa inštaluje následovne

CentOS/Fedora/RHEL

# yum install kexec-tools

Arch Linux

# pacman -Sy kexec-tools

Debian/Ubuntu

# apt-get install kexec-tools

Samozrejme, ak chceme prepínať medzi kernelmi potrebujeme si vykompilovať druhý kernel, to je nadrámec tohto návodu. Ja som použil balíček linux-lts v archlinuxe ktorý dodáva 4.9.14 kernel, ako default kernel som použil štandartný kernel dodávaný v base skupine balíčkov.

Najprv čo potrebujeme vedieť je to aký kernel používame, to zistíme pomocou príkazu

# uname -r

Output by mal vyzerať takto

4.9.11-1-ARCH

To nám detekuje že používame 4.9.11 kernel, teraz sme plne pripravený na prebootovanie do iného kernela.

!! Upozornenie, ak máte separátnu /boot partíciu môže sa vám stať že občas kexec nenabootuje, ak sa to stane štandartne reštartuje počítač !!

Prvá vec potrebná je loadnúť kernel do kexec aby vedeľ kde sa nachádzajú dôležité obrazy.

# kexec -l /boot/vmlinuz-linux-lts --initrd=/boot/initramfs-linux-lts.img

Toto nám naloaduje kernel kde vmlinuz img je uložený v /boot/ a rovnako aj initramfs.

Teraz už stačí nabootovať do nového kernelu.

# kexec -e

A zázrakom sme v novom kernely, reboot netrval ani 3 sekundy. Teraz sa normálne prihláste vašimi prihlasovacími údajme a skontrolujte verziu kernelu

# uname -r

Ako je vidieť z obrázku už som v novom kernely a môžem pracovať. Samozrejme toto neni permanentné, ak reštartujete server tak budete mať v grube na výber kernelu.

Dominik Hrinkino

Študent, Systémový/Sieťový správca a PHP developer. GNU/Linuxu sa venujem od roku 2010 kde som začal s Debianom. V dnešnej dobe používam Arch Linux a som rád za každého nového uživateľa ktorý objavý jeho kúzlo.

Pridaj komentár