nepatten@us.ibm.com
2002.01.30
Verziótörténet | ||
---|---|---|
Verzió: 1.0 | 2002.01.30 | Átdolgozta: NM |
Első kiadás. |
Az LKCD (Linux Kernel Crash Dump) 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 http://lkcd.sourceforge.net/ oldalról.
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 http://www.gnu.org/copyleft/fdl.html oldalon.
A Linux védjegy Linus Torvalds tulajdona. Az lkcd a Silicon Graphics Inc. által meghatározott feltételek szerint terjeszthető.
Visszajelzést a nepatten@us.ibm.com címre lehet küldeni.
A magyar fordítást Furi Zoltán készítette (2003.04.15). A lektorálást Daczi László végezte el (2003.04.16). Bármilyen fordítással kapcsolatos észrevételt a linuxhowto@sch.bme.hu címre küldjetek. A dokumentum legfrissebb változata megtalálható a Magyar Linux Dokumentációs Projekt honlapján.
Amikor a kernel olyan hibával találkozik amelyet nem tud lekezelni, meghívja a "panic" (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.
Az lkcd-kernelxxx.diff fájlra a kernel foltozásához. A támogatott kernelverzió folyamatosan változik. Az lkcdutils-xx.src.rpm 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 lkcd.sourceforge.net webhelyen, de így is szükséged lesz az indításhoz a szkriptekre a forrás rpm csomagból.
Szerezd be az lkcdutils-xxx.src.rpm csomagot és telepítsd az rpm -i kcdutils-xxx.src.rpm paranccsal. Ez egy lkcdutils-xxx.tar.gz nevű fájlt helyez az /usr/src/redhat/SOURCES 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 "/usr/src" a tar -zxvf kcdutils-xxx.src.rpm paranccsal. Ez létre fogja hozni a "kcdutils-xxx" könyvtárat, amelyben az LKCD csomag részeinek forráskódja lesz.
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 ./configure szkriptet a konfigurációs állományok elkészítéséhez. A következő lépés a make futtatása az alkalmazás fordításához, és végül futtasd a make install parancsot a programok és kézikönyv oldalak telepítéséhez.
/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 |
Telepítheted az előre lefordított programokat rpm csomagból az rpm -i kcdutils-xxx.rpm 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.
A következő lépés a kernel foltozása és újrafordítása. Foltoznod kell a kernel forrást az a http://lkcd.sourceforge.net/ oldalról letöltött lkcd-xxx.diff fájlal. Másold a foltot ugyanabba a könyvtárba, ahol a kerneled forrása van, és futtasd a patch -p0 < lkcd-kernelxxx.diff 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 make menuconfig vagy a make xconfig parancsot használod, az "LKCD support" opció a "kernel hacking" 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 The Linux Kernel HOWTO (Linux kernel HOGYAN) leírást .
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:
make depend make install make modules make modules_install |
Ez lefordítja és telepíti az új kernelt, de neked kell átmásolnod a Kerntypes állományt a kernel forráskönyvtárból a /boot könyvtárba. Szükség lesz még a lilo.conf állomány szerkesztésére is, hogy legyen benne az új kerneledre mutató bejegyzés is. További információért olvasd el a http://www.tldp.org/HOWTO/Kernel-HOWTO.html leírást.
A swap partícióra írt core állomány elmentéséhez, azt (mármint a core fájlt – 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 sysinit indítóállományt meg kell változtatni. Az lkcd forrás tartalmaz egy scripts 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 lkcd config és az lkcd save parancsokat , ezek engedélyezik a crash dump szolgáltatást, illetve a létező crash dump fájl elmentéséről gondoskodnak.
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 cc -c -I/usr/src/linux/include panic.c paranccsal. A panic.o modul lefordítása után pánik előidézéséhez csak töltsük be azt insmod panic.o paranccsal.
### panic.c ########################### #define __KERNEL__ # MODULE # include init_module(void) int init_module (void) { panic(" panic has been called"); return 0; } |
A core állomány megtekintéséhez futtasd a lcrash parancsot a következő paraméterekkel:
lcrash [ System.map fájl ] [ dump fájl ] [ Kerntypes ] Példa: lcrash /boot/System.map ./dump.1 /boot/Kerntypes |
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 ? karaktert a használható parancsok megtekintéséhez.