Kompilacia a bezpecne bootovanie kernelu na dialku

03.02.2006 20:12 | bhole

Kompilovanie kernelu ale hlavne nasledny reboot byva pre vacsinu adminov adrenalinovym sportom. Pre tych menej odvaznych prinasame par rad, ako znizit rizikum nenabootovania na minimum, pripadne spustit kernel bez tradicneho restartu.

Kazdy uz zazil, ze pri bootovani noveho kernelu nemusi ist vsetko podla predstav a vela krat nam milovany serverik neozije.

Tento problem mozeme do znacnej mieri odstranit takymto postupom:

1. kompilacia a nastavovanie noveho kernelu
2. skopcenie kernelu tam kam patri
3. do lilo.conf ho dame az za stary kernel, teda na druhe miesto
4. pridame riadok append="panic=5"
5. spustime lilo -R nazov_noveho_kernelu
6. reboot

lilo -R znamena, ze kernel nabootuje iba raz. nasledne po boote bootuje zo stareho funkcneho kernelu.

append="panic=5" znamena, ze ked nastane oops, tak sa rebootne po 5 sekundach. naco bootuje stary kernel (vdaka -R).

Pre uzivatelov grubu existuje pekny navod na nete.

Dalsim trikom je, pridat pred rebootom do AT_u prikaz na reboot. Moze sa stat ze kernel nabootuje, ale moze dojst k inym problemom, kvoli ktorym sa nemozete remootne na dany stroj dostat. Po uspesnom reboote je dobre tento prikaz zmazat ze :)))

Tretou moznostou ako vymenit kernel na dialku, je vobec stroj nerebootovat. Tuto srandu nam dovoli robit kexec. Je to featura ktora sa nachadza v kerneli od 2.6.13. Dovoli nam reloadnut kernel bez potreby tvrdeho restartu masiny. Urcitych problemov nas to sice zbavi, kazdopadne stale ostava otazka zle nakonfigurovaneho kernelu, pripadne chyby v kexec (este je len experimental). Co by ale kroky vyssie mali vyriesit.

V prvom rade treba mat podporu kexecu skompilovanu v jadre. Takze pri konfigurovani jadra to oznacime v

Processor type and features --->
[*] kexec system call (EXPERIMENTAL)

Potom, co tuto vecicku mame zapnutu v kerneli, stiahneme si kexec-tools.
http://www.xmission.com/~ebiederm/files/kexec/kexec-tools-1.101.tar.gz

Nasledne pridame niekde na koniec reboot skriptu este pred samotny reboot toto (pre pripad, ze by loadnutie noveho jadra nevyslo, zbehne klasicky reboot)

/usr/local/sbin/kexec -e

Potom nam uz len staci loadnut nove jadro, ktore mame v plane bootnut a to asi takto:
/sbin/kexec --load --type bzImage --append="root=/dev/hd*" /boot/novy_kernel
(/boot/novy_kernel samozrejme nahradime pathom k nasmu novemu kernelu, ktory sa chystame bootnut a takisto za --append="root= dosadime particiu, na ktorej sa nachadza)

Po spusteni sa novy kernel loadne do pamate no a potom uz len staci spustit reboot skript, na ktoreho konci uvidime hlasku 'executing new kernel' no a po nej sa execne nase peknucke nove jadro.

for info, text and knowledge tnx to stanojr a br

    • konecne 12.02.2006 | 13:39
      damien   Návštevník

      tak konecne vymena kernelu bez bootovani uz stahuju nove jadro... doposavad jsem mel 2.4.22 a ten to evidentne jeste neumi...

    • interesant 30.08.2006 | 04:29
      Avatar urby   Používateľ

      zide sa v praxi

      • ja chci mit vzdycky to 01.09.2006 | 12:03
        damien   Návštevník

        ja chci mit vzdycky to nejnovejsi
        ---------------------------------------
        nadani ucit se je dar;
        schopnost ucit se je dovednost;
        ochota ucit se je volba;