[an error occurred while processing this directive]

Борьба с kernel panic в Linux-ядре 2.6.35 и выше
Начиная с версии 2.6.35 в Linux-ядре появилась полезная функция "ramoops",
позволяющая в случае краха сохранять информационный дамп состояния ядра в
памяти для последующего анализа. Данные сохраняются только при мягкой
перезагрузке, без очистки прошлого состояния памяти. Вкомпилировать данную
функцию в ядро или загружать модулем "ramoops" - без разницы.

Единственная хитрость - сначала нужно зарезервировать память в ядре.
Сделать это можно указав ядру параметр memmap=256K@0xfc0000
(резервируем 256К перед ядром).

Если ramoops в ядре, то добавляем параметры 

   ramoops.mem_address=0xfc0000 и
   ramoops.mem_size=0x40000

параметр ramoops.dump_oops=1 является умолчанием, так что его можно не указывать.

Для модуля "ramoops" эти параметры нужно указать при загрузке.

Теперь чтобы ядро не осталось в мертвом виде, не забываем сделать

   echo 10 >/proc/sys/kernel/panic

и (если нужно, а иногда полезно)

   echo 1 >/proc/sys/kernel/panic_on_oops

Теперь проверяем при помощи crash-а через Alt-SysRq-C.

После перезагрузки, текст crash-дампа будет лежать в памяти, начиная с адреса 0xfc0000.

Достать его оттуда можно при помощи

   dd if=/dev/mem bs=256k skip=63 count=1 >>crash.txt

либо при помощи простенькой программы, которая открывает /dev/mem и с
указанного смещения читает данные.

Для сохранения дампа на диск следует использовать похожую функцию mtdoops.

Дополнение: Для работы в ядре необходимо выключить опцию CONFIG_STRICT_DEVMEM 
 
13.09.2010 , Автор: Аноним
Ключи: linux, kernel, oops, dump, crash, panic, debug / Лицензия: CC-BY
Раздел:    Корень / Администратору / Система / Просмотр состояния и мониторинг системы

[an error occurred while processing this directive]

[an error occurred while processing this directive]