Was für die Anwenderprogramme gilt, ist auch für den Kernel selbst nicht verkehrt. Auch wenn der Linux-Kernel eine beachtliche Stabilität erreicht hat und auf vielen Systemen unter hoher Last wochenlang ohne Unterbrechung läuft, kann das Betriebssystem nicht auf alle möglichen Ausnahmen vorbereitet sein, und es enthält auch Fehler. Ein Fehler des Betriebssystem ist nicht so leicht abzufangen wie der eines Anwenderprogramms. In einem solchen Fall kommt es häufiger zu einem Systemabsturz; manchmal in Form eines ''Kernel Panicßystemhalts, manchmal zu einem Reset, manchmal zu einem kompletten Systemstillstand.
Wenn sich ein Systemabsturz irgendwie ankündigt, indem beispielsweise das System immer langsamer wird, obwohl kein rechenzeitintensives Programm läuft, können Sie versuchen, den Rechner mit einem halt-Kommando anzuhalten und so den Schaden zu begrenzen. In jedem Fall sollten Sie alle normale Benutzeraktivität am Rechner beenden und häufig das sync-Kommando ausführen.
Wenn der unerfreuliche Fall eines echten Systemabsturzes eingetreten ist, erscheint meistens eine Meldung der folgenden Form auf dem Bildschirm:
unable to handle kernel paging request at address C0000010 Oops: 0002 EIP: 0010:00118348 EFLAGS: 00000246 eax: fffffffd ebx: 00000000 ecx: 00000216 edx: 000003d5 esi: 00105816 edi: 0016709f ebp: 001756f8 ds: 002b es: 002b fs: 002b gs: 002b Pid: 00, process nr: 00 89 50 04 c7 03 00 00 00 00 c7Aus der Fehlermeldung in der ersten Zeile kann geschlossen werden, daß eine Kernelfunktion versucht hat, auf die Speicheradresse 0x010 zuzugreifen. Weil der Kernel in den logischen Speicherbereich über ein Gigabyte (0xC0000000) verschoben ist, erscheint die Adresse mit diesem Offset.
In der zweiten Zeile erscheint eine weitere Fehlermeldung und ein Fehlercode. Die Oops Meldung aus diesem Beispiel ist typisch für Fehler des Memory-Management. Die Fehlernummer kann weiteren Aufschluß über die Ursache des Absturzes geben; um sie zu entschlüsseln, müssen Sie die Kernelsourcen heranziehen.
Der Extended Instruction Pointer EIP zum Zeitpunkt des Fehlers läßt Rückschlüsse auf die Kernelfunktion zu, die für den Absturz verantwortlich ist. Sie können den Namen der Funktion herausfinden, indem Sie die Symboltabelle des Kernels nach der diese Adresse umfassenden Funktion durchsuchen. Das folgende Kommando erledigt diese Aufgabe:
# nm /usr/src/linux/tools/zSystem | sort | grep 00118... 00118294 t _try_to_free_page 00118324 T _free_page 0011847c T ___get_free_page 00118638 t _try_to_unuse 0011878c T _sys_swapoff 00118934 T _sys_swapon 00118c64 T _si_swapinfo 00118cf4 T _do_mmap 00118cf4 t ___gnu_compiled_c 00118cf4 t gcc2_compiled. 00118cf4 t mmap.o 00118ec4 T _sys_mmap 00118f50 T _unmap_fixup # _Aus dieser Liste läßt sich die verantwortliche Funktion, in diesem Beispiel free_page,
Die EFLAGS und die in den darauffolgenden Zeilen aufgelisteten Inhalte der Prozessorregister können im Einzelfall zur genauen Bestimmung der Fehlerursache ebenso herangezogen werden wie die Maschinencode-Sequenz in der letzten Zeile.