<!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook V4.1//EN">
<article lang="hu">

  <articleinfo>
    <title>Linux Crash HOGYAN</title>

    <author>
      <firstname>Norman</firstname>
      <surname>Patten</surname>
      <affiliation>
	<address><email>nepatten@us.ibm.com</email></address>
      </affiliation>
    </author>

    <pubdate>2002.01.30</pubdate>
    <abstract><para>Ez a dokumentum az LKCD (Linux Kernel Crash Dump) csomag telepítését és használatát írja le. </para>
    </abstract>

    <revhistory>
       <!-- Most recent revision goes at the top -->
       <revision>
         <revnumber>1.0</revnumber>
         <date>2002.01.30</date>
         <authorinitials>NM</authorinitials>
         <revremark>Első kiadás.</revremark>
       </revision>
    </revhistory>

  </articleinfo>

  <sect1 id="intro"><title>Bevezetés</title>
    <para>
    Az <emphasis role="strong">LKCD (Linux Kernel Crash Dump)</emphasis>
projekt kernel foltok és alkalmazások együttese, mely lehetővé teszi a kernel memóriatartalmának elmentését kernel pánik esetén. A kernel állapotát tartalmazó állomány a mellékelt alkalmazásokkal együtt lehetővé teszi a kernel pánik utólagos hibakeresését. A legtöbb fizetős Unix operációs rendszert hasonló crash alkalmazásokkal szállítják, de ez a csomag meglehetősen új a Linuxban, és kézzel kell hozzáadni. Az LKCD alkalmazás nem alkalmas megfelelő információk összegyűjtésére hardver okozta pánik vagy szegmenshiba esetén. A teljes LKCD csomag letölthető a 
    <ulink url="http://lkcd.sourceforge.net/">http://lkcd.sourceforge.net/</ulink> oldalról.
    </para>

    <sect2 id="copyright"><title>Szerzői jog és licenc</title>

      <para>This document is copyrighted (c) 2002 by Norman Patten.
Ezen dokumentum másolása, terjesztése és/vagy módosítása engedélyezett a GNU Free Documentation License 1.1 változata, vagy bármelyik későbbi, a Free Software Foundation által közzétett változat feltételei szerint; állandó fejezetek nélkül, előlapi és hátoldali szöveg nélkül. A licenc másolata elérhető a <ulink url="http://www.gnu.org/copyleft/fdl.html"> http://www.gnu.org/copyleft/fdl.html</ulink> oldalon. </para>

      <para>A Linux védjegy Linus Torvalds tulajdona. Az lkcd a Silicon Graphics Inc. által meghatározott feltételek szerint terjeszthető.</para>

      <para>Visszajelzést a 
      <ulink url="mailto:nepatten@us.ibm.com"><citetitle>nepatten@us.ibm.com</citetitle></ulink> címre lehet küldeni.
      </para>
    </sect2>
    <sect2>
<title>Magyar fordítás</title>
<para>
A magyar fordítást <ulink url="mailto:zfuri@avaya.com_NO_SPAM">Furi Zoltán</ulink> készítette (2003.04.15).
A lektorálást <ulink url="mailto:dacasa@freemail.hu_NO_SPAM">Daczi László</ulink> végezte el (2003.04.16).
Bármilyen fordítással kapcsolatos észrevételt a <ulink url="mailto:linuxhowto@sch.bme.hu_NO_SPAM">linuxhowto@sch.bme.hu</ulink> címre küldjetek.
A dokumentum legfrissebb változata megtalálható a <ulink url="http://tldp.fsf.hu/index.html">Magyar Linux Dokumentációs Projekt</ulink> honlapján.
</para>
</sect2>
  </sect1>

  <sect1 id="howitworks"><title>Hogyan működik az LKCD</title>
    <para>
Amikor a kernel olyan hibával találkozik amelyet nem tud lekezelni, meghívja a &quot;panic&quot; (pánik) függvényt. Ez a pánik az LKCD-ben egy ún. kernel dump-ot eredményez, ekkor a kernel memóriájának a tartalma egy előre kijelölt, ún. dump területre másolódik. Dump eszközként alapból az elsődleges swap terület van beállítva. A kernel nem teljes mértékben működőképes ekkor, de még elegendő mértékben ahhoz, hogy kimásolja a memória tartalmát a lemezre. Miután a dump befejezte a memória tartalmának másolását a lemezre, a rendszer újraindul. Amikor a rendszer újraindul, új crash dump fájlt keres. Ha talál, akkor átmásolja azt a dump helyéről egy másik partícióra, alapból a "/var/log/dump" könyvtárba. Az állomány másolása után a rendszer folytatja a normális indulási folyamatot. A vizsgálatokat egy későbbi időpontban el lehet végezni. </para>

    <sect2 id="whatyouneed"><title>Mire van szükséged?</title>
      <para>
Az <filename>lkcd-kernelxxx.diff</filename> fájlra a kernel foltozásához. A támogatott kernelverzió folyamatosan változik. Az <filename>lkcdutils-xx.src.rpm</filename>  tartalmazza az alkalmazás forráskódját és a beállításhoz, illetve a crash adatok olvasásához szükséges programokat. E szöveg írásának idején egy futtatható i386 rpm csomag elérhető az  <ulink url="http://lkcd.sourceforge.net/">lkcd.sourceforge.net</ulink> webhelyen, de így is szükséged lesz az indításhoz a szkriptekre a forrás rpm csomagból. </para>
    </sect2>
  </sect1>

  <sect1 id="install"><title>Az lkcd telepítése</title>

    <sect2><title>Telepítés forráskódból</title>
      <para>
      Szerezd be az <filename>lkcdutils-xxx.src.rpm</filename> csomagot  és telepítsd az <command>rpm -i kcdutils-xxx.src.rpm</command> paranccsal.
Ez egy <filename>lkcdutils-xxx.tar.gz</filename> nevű fájlt helyez az <filename>/usr/src/redhat/SOURCES</filename> könyvtárba. Ez a fájl az lkcd források tömörített tar állománya. Csomagold ki a forrást egy tetszőleges könyvtárba (például &quot;<filename>/usr/src</filename>&quot; a <command>tar -zxvf kcdutils-xxx.src.rpm</command> paranccsal.  Ez létre fogja hozni a &quot;<filename>kcdutils-xxx</filename>&quot; könyvtárat, amelyben az LKCD csomag részeinek forráskódja lesz.
      </para>
    </sect2> 

    <sect2><title>Az LKCD programok fordítása és telepítése</title>
      <para>
Az LKCD a hagyományos GCC fordítót és make fájlokat használja. A programok fordításához lépj be LKCD forráskönyvtárába, és futtasd a <command>./configure</command> szkriptet a konfigurációs állományok elkészítéséhez.  A következő lépés a <command>make</command>  futtatása az alkalmazás fordításához, és végül futtasd a <command>make install</command> parancsot  a programok és kézikönyv oldalak telepítéséhez.
      </para>
    </sect2> 

    <sect2><title>Telepített állományok</title>
      <screen>
  /etc/sysconfig/dump             # A dump konfigurációs állománya
  /sbin/lcrash                    # A crash alkalmazás
  /sbin/lkcd                      # Szkript a crash konfigurálására és mentésére
  /sbin/lkcd_config               # A dump konfigurációs programja
  /sbin/lkcd_ksyms                # A kernel szimbólumok visszaállító programja  
  /usr/include/sial_api.h         # A SIAL API header állománya
  /usr/lib/libsial.a              # Simple Image Access Language függvénykönyvtár
  /usr/man/man1/lcrash.1          # lcrash kézikönyv oldalak
  /usr/man/man1/lkcd_config.1     # lkcd_config kézikönyv oldalak
  /usr/man/man1/lkcd_ksyms.1      # lkcd_ksyms kézikönyv oldalak
  /usr/share/sial/lcrash/ps.sial  # A SIAL ps parancsának implementációja
      </screen>
    </sect2>

    <sect2><title>Az LKCD telepítése RPM csomagból</title>
      <para>
      Telepítheted az előre lefordított programokat rpm csomagból az
      <command>rpm -i kcdutils-xxx.rpm</command> futtatásával. Azonban még foltozni kell a kernelt, és telepíteni az indító szkriptet. Egyébként kihagyhatod az alkalmazás fordításának lépéseit. </para>
    </sect2>

    <sect2><title>A kernel foltozása</title>
      <para>
A következő lépés a kernel foltozása és újrafordítása. Foltoznod kell a kernel forrást az  a <ulink url="http://lkcd.sourceforge.net/">http://lkcd.sourceforge.net/</ulink> oldalról letöltött <filename>lkcd-xxx.diff</filename> fájlal.  Másold a foltot ugyanabba a könyvtárba, ahol a kerneled forrása van, és futtasd a <command>patch -p0 &lt; lkcd-kernelxxx.diff</command> parancsot.  Győződj meg róla, hogy a folt verziója azonos a használt kernelével. A következő lépésben a kernel konfigurálásával engedélyezned kell a crash dump támogatást. Alapbeállításban a crash támogatás, miután alkalmaztad a foltot, ki van kapcsolva. Ha a  <command>make menuconfig</command> vagy a <command>make xconfig</command> parancsot használod, az &quot;LKCD support&quot; opció a &quot;kernel hacking&quot; fejezet alatt található. Szükséged lehet még további opciók engedélyezésére. További részletekért olvasd el a <ulink url="http://tldp.org/HOWTO/Kernel-HOWTO.html">The Linux Kernel HOWTO</ulink> (Linux kernel HOGYAN) leírást . </para>
    </sect2>

    <sect2><title>A kernel fordítása és telepítése</title>
      <para>
      A következő lépés a crash opcióval engedélyezett kernel fordítása és telepítése. A kernel forráskönyvtárban futtasd egymás után a következő parancsokat: </para>
      <screen> 
  make depend 
  make install 
  make modules
  make modules_install
      </screen>
      <para>
Ez lefordítja és telepíti az új kernelt, de neked kell átmásolnod a <filename>Kerntypes</filename> állományt a kernel forráskönyvtárból a  <filename>/boot</filename>  könyvtárba. Szükség lesz még a  <filename>lilo.conf</filename>  állomány szerkesztésére is, hogy legyen benne az új kerneledre mutató bejegyzés is. További információért olvasd el a <ulink url="http://tldp.org/HOWTO/Kernel-HOWTO.html">http://www.tldp.org/HOWTO/Kernel-HOWTO.html</ulink> leírást. </para>
    </sect2>
  </sect1>

  <sect1 id="setup"><title>A crash beállítása, tesztelése és futtatása</title>

    <sect2><title>A crash dump beállítása</title>
      <para>
A swap partícióra írt core állomány elmentéséhez, azt (mármint a core fájlt &ndash; a lektor) az indulási folyamat során a swap partíció aktiválása előtt át kell másolni egy másik partícióra. Ennek végrehajtásához a <filename>sysinit</filename> 
indítóállományt meg kell változtatni. Az lkcd forrás tartalmaz egy 
<filename>scripts</filename> könyvtárat, amely foltokat tartalmaz különböző sysinit indító szkriptekhez. Ezek a foltok hozzáadják az indító szkripthez a  <command>lkcd config</command> és az <command>lkcd save</command> parancsokat , ezek engedélyezik a crash dump szolgáltatást, illetve a létező crash dump fájl elmentéséről gondoskodnak.</para>
    </sect2>

    <sect2><title>A crash tesztelése</title>
      <para>
Az új crash beállítás tesztelése érdekében, pánik kieszközöléséért, fordítsd le a következő forrásprogramot a <command>cc -c -I/usr/src/linux/include panic.c</command> paranccsal. A <filename>panic.o</filename> modul lefordítása után pánik előidézéséhez csak töltsük be azt <command>insmod panic.o</command> paranccsal. </para>
      <screen>
  ### panic.c ###########################

  #define __KERNEL__
  # MODULE 

  # include init_module(void)

  int init_module (void)
  {
      panic(" panic has been called");
      return 0;
  }
      </screen>
    </sect2>

    <sect2><title>A crash futtatása</title>
      <para>
A core állomány megtekintéséhez futtasd a <command>lcrash</command> parancsot a következő paraméterekkel: </para>
      <screen>
  <command>lcrash [ System.map fájl ] [ dump fájl ] [ Kerntypes ]</command>

  Példa:

  <command>lcrash /boot/System.map ./dump.1 /boot/Kerntypes</command>
      </screen>
      <para>Néhány percet igénybe fog venni a kernel állomány betöltése a memóriába, majd kidob a crash parancssorba. A crash parancssorba beírhatsz egy <userinput>?</userinput> karaktert a használható parancsok megtekintéséhez. </para>
    </sect2>
  </sect1>
 </article>

