
SysRq или SysReq (сокращение от англ. System Request) — клавиша на клавиатуре для IBM PC-совместимого компьютера, появившаяся впервые в PC/AT и не имеющая стандартного назначения[1][2]. Изначально появилась на клавиатуре терминалов типа IBM 3270 для мейнфреймаIBM System/370, где использовалась для переключения ввода напрямую в ОС VM/370 или MVS.
В современных операционных системах может быть включена для специального использования. В 84-кнопочной версии клавиатуры IBM PC/AT SysRq была отдельной клавишей, в современных клавиатурах она совмещена с клавишей Print Screen.
История
84-я клавиша, SysRq,[3] была добавлена IBM в клавиатуру для IBM PC/AT для того, чтобы можно было вызывать низкоуровневые функции операционной системы без риска конфликта с любым существовавшим программным обеспечением. Было добавлено программное прерывание BIOS номер 0x15, подфункция 0x85[4][5], которое сообщало ОС о нажатии или отпускании клавиши SysRq. В отличие от большинства клавиш, нажатие SysRq не добавляло чего-либо в буфер клавиатуры[англ.].
Низкоуровневая реализация SysRq, вероятно, планировалась для переключения между операционными системами. Так, во время создания первых IBM-PC в 1980-х на них широко использовались три системы: PC DOS, CP/M-86 и UCSD p-System,[6] а в 1983—1984 появилась Xenix.
Специальная клавиша была создана, чтобы обойти различные низкоуровневые TSR-программы, работавшие с клавиатурой в обход ОС, например, для реализации горячих клавиш.
Применение
В ОС Windows SysRq (то есть PrtScr), нажатая вместе с Alt, копирует изображение активного окна в буфер обмена.
Компания Microsoft иногда использовала SysRq для различных отладчиков, как уровня ОС, так и уровня приложения. Некоторые версии отладчика CodeView использовали клавишу для прерывания программы во время исполнения и переключения в отладочный интерфейс.[7] Удаленный отладчик ядра Windows NT использовал последовательность нажатий Ctrl+SysRq для включения отладочного режима.[8]
В ПК Hyundai/Hynix Super-16 нажатие Ctrl+SysRq приводит к холодной перезагрузке, в том числе, когда Ctrl+Alt+Del уже не работает.
Во встраиваемых системах изредка SysRq переключает сигнал RESET# в нижний уровень.[9]
SysRq в UNIX/Linux
Клавиша SysRq — единственная прямая связь с ядром, которая работает всегда, если работает ядро, так как соответствующие комбинации напрямую перехватываются ядром и соответствующий код является частью драйвера клавиатуры (см. Magic SysRq key[англ.]). При помощи некоторых комбинаций клавиш можно заставить систему аварийно сбросить данные на диски, перемонтировать все файловые системы в режим «только чтение», перезагрузиться или перезапустить графическую подсистему даже при зависшей системе.
Использование
Сначала нужно убедиться, что использование клавиши включено: в конфигурации ядра CONFIG_MAGIC_SYSRQ должно иметь значение Y (например, в ядре, используемом в Debian по умолчанию, это так). Далее необходимо нажать и удерживать последовательно Alt и SysRq и нажать одну из командных клавиш. В графических окружениях (GNOME, KDE, …) нажатие PrtScr/SysRq обычно приводит лишь к созданию скриншота, и последующая команда может не восприниматься ядром. Это можно обойти, если дополнительно удерживать Ctrl, то есть полная комбинация будет Ctrl + Alt + SysRq + клавиша. Если вместо командной клавиши нажать любую другую, то на виртуальный текстовый терминал для сообщений ядра (обычно № 10) выведется несколько строчек краткой помощи по использованию. Это удобно использовать как быстрый способ убедиться, что параметр CONFIG_MAGIC_SYSRQ в загруженном ядре включен.
Список команд SysRq в Linux
Одновременное нажатие клавиш Alt + SysRq + буква.
Если SysRq вызывается с использованием Fn, то следует зажать Alt + Fn + SysRq, затем отпустить Fn и ввести букву команды.
То есть, например, для аварийной синхронизации данных следует выполнить последовательность Alt + SysRq + S, далее Alt + SysRq + U. После этого можно жать на сброс или, что то же самое, Alt + SysRq + B.
Более правильно экстренную перезагрузку стоит проводить, зажав клавиши Alt + SysRq и с интервалом в 2—3 секунды нажать последовательно: REISUB
- unRaw (перехватить управление клавиатурой),
- tErminate (послать SIGTERM всем процессам),
- kIll (послать SIGKILL всем процессам, которые не смогли завершиться предыдущей командой),
- Sync (синхронизировать файловые системы),
- Unmount (перемонтировать файловые системы в режим «только чтение»),
- reBoot. (и напоследок, совершить перезагрузку)
Есть и другие мнемоники для запоминания этой последовательности, см Magic SysRq key[англ.].
При недоступности работы с терминалом сочетание клавиш можно послать /proc/sysrq-trigger
Например, команда echo «h» > /proc/sysrq-trigger выведет список возможных сигналов в dmesg.
Для того, чтобы восстановить управление клавиатурой X-сервером, после unRaw используйте следующую команду с правами суперпользователя: kbd_mode -s -C /dev/tty7[12]. Вместо tty7 (7 — обычный номер для запуска X-сервера) можно использовать tty$(fgconsole) для программного определения номера tty.
Примечания
- ↑What is the SysRq key for?comp.os.msdos.programmer FAQ. Дата обращения: 8 января 2008. Архивировано 10 ноября 2018 года.
- ↑Dan Gookin.PCs For Dummies Quick Reference. — С. 192. «Dead keys… SysRq»
- ↑Киви Берд (14 декабря 2003). Давим на клавиши. "Домашний Компьютер" №12. Архивировано 21 января 2014. Дата обращения: 17 января 2014.
- ↑Ralf Brown's Interrupt List. Дата обращения: 8 января 2008. Архивировано 19 июня 2016 года.
- ↑PC Mag 25 Jun 1991Архивная копия от 21 января 2014 на Wayback Machine page 418 «Summary of BIOS Services»
- ↑Original IBM PC Product fact sheet. IBM Information Systems Division (12 августа 1981). Дата обращения: 13 января 2010. Архивировано 20 августа 2010 года.
- ↑Returning Control to CodeView. Microsoft Knowledge Base. Дата обращения: 8 января 2008. Архивировано 8 ноября 2008 года.
- ↑How to enable a remote kernel debugger connection on a computer that is running Windows Server 2003 with Service Pack 1. Microsoft Knowledge Base. Дата обращения: 8 января 2008. Архивировано 19 марта 2008 года.
- ↑MicroVGA datasheet. Дата обращения: 17 января 2014. Архивировано 15 октября 2012 года.
- ↑Barnes, Jesse.DRM: i915: add mode setting support. Git. Kernel (7 ноября 2008). Дата обращения: 31 августа 2013. Архивировано 23 июня 2020 года.
- ↑Linux Magic System Request Key Hacks (13 сентября 2021). Дата обращения: 25 сентября 2022. Архивировано 6 октября 2022 года.
- ↑Recovering from Sys Rq + r
Литература
- System BIOS for IBM PC/XT/AT computers and compatibles // Phoenix Technologies, Addison-Wesley Pub. Co., 1989
Ссылки
- SysRq: Убийца процессовАрхивная копия от 1 июля 2017 на Wayback Machine // Linuxcenter.ru.
- SysRQ или как привести в чувство «зависший» Linux
- Документация ядра Linux о Sysrq (англ.)