LINUX.ORG.RU

Проблема с kernel debugging (пусто на serial console, не работает kexec/kdump)


0

1

Пытаюсь разобраться с багом в ядре (где куча разных самописных модулей). Сначала попробовал прописать «console=ttyS0,115200 console=tty0» в grub, но желаемого не получил - на другом конце при чтении из сериал консоли просто увидел:

[  131.745495] #:K:( 0:1):00000000000007be:00000:0000000131-743:Unspec :: Registering setup function 0xffffffffa0787890 for test 'device_unnamed'.

[  131.745515] #:K:( 0:1):00000000000007be:00000:0000000131-743:Unspec :: Registering teardown function 0xffffffffa0787962 for test 'device_unnamed'.

[  131.745540] #:K:( 0:1):00000000000007be:00000:0000000131-743:Unspec :: Registering setup function 0xffffffffa0787890 for test 'device_by_id'.

[    0.000000] Initializing cgroup subsys cpuset

[    0.000000] Initializing cgroup subsys cpu

То есть после вывода в лог сразу случился reboot, но по какой причине не ясно, нет ни сообщения ни бэктрейса.

Следующая идея была попробовать kexec/kdump. Пересобрал ядро, которое сразу выполняет роль и system kernel и dump-capture kernel. Для начала проверил так:

# kexec -l /boot/linux-3.0.0 --initrd=/boot/initrd-3.0.0 --append="root=/dev/mapper/myvg-root 1 irqpoll maxcpus=1 reset_devices"
# kexec -e

и успешно загрузился в single-user mode.

Потом попробовал поставить panic-hook и симулировать panic:

# kexec -p /boot/linux-3.0.0 --initrd=/boot/initrd-3.0.0 --append="root=/dev/mapper/myvg-root 1 irqpoll maxcpus=1 reset_devices"
# echo c > /proc/sysrq-trigger

Вот тут-то и началить не совсем понятные для меня чудеса. Dump-capture ядро грузится очень медленно, на консоль выдает много сообщений типа «ata2: lost interrupt» и не работает клавиатура. То есть если грузиться в ядро через «kexec -e», то оно работает, а при kernel panic нет.

Собственно вопроса два

  • При каких ошибках ядро просто ребутится без вывода на консоль сообщения о критической ошибке (см. вывод в начале сообщения)?
  • Что я делаю не так с kexec/kdump?

Спасибо!

P.S. Использую Arch Linux с ванильными ядрами 2.6.39.3 и 3.0.0. Оба линукса - виртуальные машины на VmWare ESX сервере, а serial порты естественно тоже виртуальные (через pipe).

Ответ на: комментарий от sn1ln

> console=ttyS0,115200 panic=0 попробуй
В этом случае система просто виснет когда происходит проблема.
То есть она не ребутится, но и на консоли никаких сообщений об ошибках нет.

Krivenok_Dmitry ()

>Пересобрал ядро, которое сразу выполняет роль и system kernel и dump-capture kernel.
не знаю, как сейчас с этим, но когда-то это точно не работало. надо (было) использовать два разных ядра.

xydo ★★ ()
Ответ на: комментарий от xydo

>надо (было) использовать два разных ядра.
причем второму приходилось указывать смещение в конфиге. подробностей не помню (давно дело было, но было успешно), вроде это всё описывалось в Documentation/kdump/kdump.txt

xydo ★★ ()
Ответ на: комментарий от xydo
# grep CONFIG_SERIAL_8250_CONSOLE .config
CONFIG_SERIAL_8250_CONSOLE=y
#

Насколько я понял из доки, можно использовать и одно ядро. Перечитаю еше раз и попробую с двумя.

Krivenok_Dmitry ()

кстати, а там quiet случайно в grub.conf не затесался?

xydo ★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.