У меня 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-сервер. Это подразумевает два последствия:
Комбинация клавиш действительно зависит от клавиатуры. Клавиатура должна сама перехватывать все нажатия клавиш, и только клавиатура «знает», где находится фактическая клавиша SysRq и какая комбинация запускает отправку специального кода клавиши. Итак:
- SysRq не обязательно находится на той же кнопке, что и «Home» или «Print Screen», попробуйте поискать ее, обычно она явно обозначена как «SysRq».
- Попробуйте разные комбинации:
Ctrl+Alt+SysRq+b
илиCtrl+Alt+Fn+SysRq+b
и т. д. (предупреждение, система перезагрузится в случае успеха). На клавиатурах, на которых есть клавиша,Fn
вам обычно приходится нажимать ее, чтобы добраться до самойSysRq
клавиши, поэтому, скорее всего, ваша комбинация будет включать этуFn
клавишу.
На самом деле вы можете узнать, когда вы набираете правильную комбинацию. Запустите
xev
из терминала, сфокусируйтеxev
окно и нажмите несколько кнопок на клавиатуре, вы должны увидеть события, появившиеся в терминале. Когда вы набираете правильную комбинацию, вы НЕ должны получить событие, потому что оно перехватывается ядром и не доставляется на X-сервер.
Также обратитесь к документации:https://www.kernel.org/doc/Documentation/sysrq.txt