Время от времени загрузка Linux заканчивалась очень рано (например, загрузка initrd). Затем сообщение о панике ядра появляется в текстовом режиме. Поскольку ограничение высоты экрана, я вижу только около 40 строк текстового сообщения о панике ядра. Для диагностики причины паники я хотел бы видеть вышеупомянутое сообщение (например, прокручивать сообщения), но я не знаю, как это сделать. Есть ли хороший трюк для этого?
3 ответа
Вы должны попробовать использовать функцию ядра kexec. Kexec - это функция вторичного ядра, которое хранится в оперативной памяти, особенно для такого рода (не только) случаев, когда вы хотите исследовать дамп другого ядра, например, в случае паники ядра. Вы должны найти достаточно информации об этом в Google, так как она может быть использована для разных целей. По сути, вам нужно только включить Kexec в файле конфигурации ядра, а затем добавить CRASHKERNEL = XXXM в аргументы ядра (передаваемые загрузчиком). Затем отредактируйте некоторые конфигурационные файлы и продолжайте испытывать и гуглить, пока не заработаете ...
Удачи:D
Последовательный порт
Последовательный порт - это старое и надежное оборудование протокола связи, которое поддерживается ядром Linux, и большинство эмуляторов имитируют.
Вы можете передавать сообщения ядра в файл или консоль через него:
VirtualBox: как захватить всю панику ядра при загрузке | Переполнение стека
QEMU:
- на консоль: Как переключиться на консоль монитора qemu при запуске с "-curses" | Переполнение стека
- в файл: записать вывод загружаемой виртуальной машины QEMU в файл | Супер пользователь
Вот минимальная настройка для воспроизведения проблемы: https://github.com/cirosantilli/linux-kernel-module-cheat/blob/b366bac0c5410ceef7f2b97f96d93d722c4d9ea6/kernel_module/panic.c
Реальное аппаратное обеспечение: последовательный порт не выставляется на большинстве современных ноутбуков, что обидно ... но на настольных компьютерах это выглядит так:
И на Raspberry Pi:
Более подробная информация по адресу: https://unix.stackexchange.com/questions/307390/what-is-the-difference-between-ttys0-ttyusb0-and-ttyama0-in-linux/367882#367882
Серийные альтернативы
Есть даже более причудливые методы, упомянутые в: Определение причины паники ядра Linux | Unix & Linux Stack Exchange
netdump: отправляет трассировку по сети.
Предполагается, что паника не сломала сети, что более вероятно, чем серийный.
Преимущества перед серийными:
работает для систем, которые не имеют серийной экспозиции, таких как современные ноутбуки
Максимальная длина проводов у последовательных кабелей довольно ограничена, что проблематично, если вы хотите, чтобы все платы вашей компании располагались в удаленной комнате для совместного использования ресурсов разработчиками.
Есть однако последовательные разъемы с сервером Ethernet , который я рекомендовал бы вместо этого , если ваша цель обнажает серийной, например этот:
kdump: загружает вторичное ядро Linux, которое проверяет испуганное ядро. Что возможно могло пойти не так?
Эти методы более гибкие, но менее надежные.
Смотрите также: https://unix.stackexchange.com/questions/208260/how-to-scroll-up-after-a-kernel-panic/364966#364966
Вы должны иметь возможность прокручивать вверх и вниз, используя Shift+PageUp и Shift+PageUp.