Книга: Разработка ядра Linux
Магическая клавиша SysRq
Магическая клавиша SysRq
Использование магической клавиши SysRq
, которую можно активизировать с помощью конфигурационного параметра CONFIG_MAGIC_SYSRQ
на этапе компиляции, часто позволяет значительно облегчить жизнь. Клавиша SysRq
является стандартной на многих клавиатурах. Для аппаратных платформ i386 и PPC ей соответствует комбинация клавиш ALT-PrintScreen
. Если указанный конфигурационный параметр активизирован, то специальные комбинации клавиш позволяют взаимодействовать с ядром независимо от того, чем ядро в данный момент нанимается. Это в свою очередь позволяет выполнять некоторые полезные операции даже на неработоспособной системе.
В дополнение к конфигурационному параметру существует вызов sysctl
для включения и выключения этого свойства.
echo 1 > /proc/sys/kernel/sysrq
Список возможных комбинаций клавиш можно получить с консоли путем нажатия комбинации клавиш SysRq-h
. Комбинация клавиш SysRq
-s выполняет синхронизацию не сохраненных буферов файловых систем на диск, комбинация SysRq-u
размонтирует все файловые системы, a SysRq-b
— перегружает машину. Последовательное использование этих комбинаций клавиш позволяет более безопасно перегрузить машину, которая зависла, чем простое нажатие кнопки reset
.
Если машина заблокирована очень сильно, то она может не отвечать на магические комбинации клавиш SysRq
, или соответствующая операция не будет выполнена. Если же повезет, то эти комбинации клавиш смогут помочь при отладке, а также сохранить данные. В табл. 18.2 приведен список поддерживаемых команд SysRq
.
Таблица 18.2. Список поддерживаемых команд SysRq
Команда | Описание |
---|---|
SysRq-b |
Перегрузить машину (reboot) |
SysRq-e |
Послать сигнал SIGTERM всем процессам, кроме процесса init |
SysRq-h |
Отобразить на консоли помощь по использованию комбинаций клавиш SysRq |
SysRq-i |
Послать сигнал SIGKILL всем процессам, кроме процесса init |
SysRq-k |
Клавиша безопасного доступа: завершить все процессы, связанные с текущей консолью |
SysRq-l |
Послать сигнал SIGKILL всем процессам, включая процесс init |
SysRq-m |
Отобразить на консоли дамп информации по использованию памяти |
SysRq-o |
Завершить работу машины (shutdown) |
SysRq-p |
Отобразить на консоли дамп регистров памяти |
SysRq-r |
Отключить прямой режим работы клавиатуры (raw mode) |
SysRq-s |
Синхронизировать данные смонтированных файловых систем с дисковыми устройствами |
SysRq-t |
Отобразить на консоли дамп информации о заданиях |
SysRq-u |
Размонтировать все смонтированные файловые системы |
В файле Documentation/sysrq.txt
, который находится в каталоге исходных кодов ядра, приводится более полное описание. Реализация поддержки магической комбинации клавиш находится в файле drivers/char/sysrq.с
. Магические комбинации клавиш SysRq
— жизненно необходимый инструмент, который помогает в отладке и сохранении "гибнущей" системы, так как предоставляет большие возможности для любого пользователя при работе с консолью. Тем не менее необходимо соблюдать осторожность при его использовании на критичных машинах. Если же машина используется для разработок, то польза от этих команд огромная.
- С чего необходимо начать
- Дефекты ядра
- Функция printk()
- Сообщения Oops
- Конфигурационные параметры отладки ядра
- Генерация ошибок и выдача информации
- Магическая клавиша SysRq
- Сага об отладчике ядра
- Исследование и тестирование системы
- Нахождение исполняемых образов с изменениями приводящими к ошибкам
- Если ничто не помогает — обратитесь к сообществу