Почему эта последовательность клавиш, использующая SyRq, не работает?

Почему эта последовательность клавиш, использующая SyRq, не работает?

У меня Fedora 20, с zshell и рабочим столом Mate. Я только что наткнулся на этостатья об использовании ключей SysRq, но они не дают показанных там результатов. Я использую Alt с клавишей, помеченной как "Home" с "Print Scr" над ней в качестве комбинации клавиш SysRq.

Я также пробовал удерживать желтую клавишу «FN», но это не помогло.

Поскольку последовательность действий «Перезагрузка, даже если система полностью сломана» выглядит весьма полезной, мне бы хотелось узнать, что я делаю не так.

решение1

Вероятно, у вас отключены комбинации SysRq. Для того, чтобы это работало, должны быть соблюдены несколько условий:

  • Вы должны CONFIG_MAGIC_SYSRQвключить эту функцию в конфигурации ядра.
  • Необходимо kernel.sysrqустановить для sysctl значение, позволяющее интерпретировать комбинации SysRq.

kernel.sysrqэто битовая маска для включения/выключения функций:

  • 0 - Полностью отключено
  • 1 - Полностью включено
  • 2 - Разрешить управление уровнем ведения журнала консоли
  • 4 - Разрешить управление клавиатурой
  • 8 - Разрешить управление дампами процессов
  • 16 - Разрешить контрольные sync()звонки
  • 32 - Разрешить перемонтирование только для чтения
  • 64 - Разрешить сигнализацию процесса
  • 128 - Разрешить изменение состояния питания системы (перезагрузка/выключение/и т. д.)
  • 256 - Разрешить выполнение задач по смене имени в реальном времени

Если вы хотите включить все функции SysRq, вы можете временно задать значение с помощью sysctlинструмента:

sysctl -w kernel.sysrq=1

Чтобы сделать это навсегда, добавьте следующую строку /etc/sysctl.conf:

kernel.sysrq = 1

Затем вы можете перезагрузить настройки системы, /etc/sysctl.confвыполнив команду sysctl -p.

решение2

Обычно при нажатии кнопки клавиатура генерирует один код клавиши. ОС получает коды клавиш, применяет некоторое сопоставление клавиш и пытается обрабатывать комбинации клавиш независимо от базового оборудования.

Механизм SysRq немного отличается: клавиатура перехватывает комбинацию и отправляет специальный код клавиши в ОС, как будто была нажата одна кнопка. Ядро Linux перехватывает специальный код клавиши и обрабатывает его внутри, не перенаправляя ввод в приложения более высокого уровня, такие как X-сервер. Это подразумевает два последствия:

  1. Комбинация клавиш действительно зависит от клавиатуры. Клавиатура должна сама перехватывать все нажатия клавиш, и только клавиатура «знает», где находится фактическая клавиша SysRq и какая комбинация запускает отправку специального кода клавиши. Итак:

    • SysRq не обязательно находится на той же кнопке, что и «Home» или «Print Screen», попробуйте поискать ее, обычно она явно обозначена как «SysRq».
    • Попробуйте разные комбинации: Ctrl+Alt+SysRq+b или Ctrl+Alt+Fn+SysRq+bи т. д. (предупреждение, система перезагрузится в случае успеха). На клавиатурах, на которых есть клавиша, Fnвам обычно приходится нажимать ее, чтобы добраться до самой SysRqклавиши, поэтому, скорее всего, ваша комбинация будет включать эту Fnклавишу.
  2. На самом деле вы можете узнать, когда вы набираете правильную комбинацию. Запустите xevиз терминала, сфокусируйте xevокно и нажмите несколько кнопок на клавиатуре, вы должны увидеть события, появившиеся в терминале. Когда вы набираете правильную комбинацию, вы НЕ должны получить событие, потому что оно перехватывается ядром и не доставляется на X-сервер.

Также обратитесь к документации:https://www.kernel.org/doc/Documentation/sysrq.txt

Связанный контент