Атрибуции :
https://fedoraproject.org/wiki/QA/Sysrq#How_do_I_use_the_magic_SysRq_key который был основан на оригинальной работе
Кредитом ,
написанные Mydraal
Обновленный Адам Sulmicki
Обновлено Джереми М. Долан 2001/01/28 10:15:59
Добавлено Крутчер Даннавант
https://askubuntu.com/a/11194/102029 mneiss предоставил ссылки для LaunchPad.
содержание
Что такое sysrq?
Почему RESIUB (O) не работает?
1 Как заставить sysrq вести себя так, как я хочу?
1.1 Что такое волшебный ключ SysRq?
1.2 Как мне включить волшебный ключ SysRq?
1.3 Как мне использовать волшебный ключ SysRq?
1.4 Что такое «командные» клавиши?
1.5 Хорошо, так для чего я могу их использовать?
1.6 Устранение неполадок
1.6.1 Зависание до запуска initscripts
1.6.2 Иногда SysRq, кажется, застревает после его использования, что я могу сделать?
1.6.3 Я нажал на SysRq, но ничего не происходит, что не так?
1.6.4 Я хочу добавить ключевые события SysRQ в модуль, как это работает?
1.6.5 Заключение
1.6.6 ПРИЛОЖЕНИЕ
Примечание.
Вы можете использовать Ctrl+, Fчтобы использовать оглавление.
Что такое SysRq?
Общеизвестный и используемый метод восстановления использования машины после ее замораживания или блокировки с ограничением риска повреждения диска, приводящего к повреждению системных файлов или потере данных, заключается в использовании
Alt+ SysRq+, rа затем sи затем, eи затем, iи затем, uи затем, bи / или при необходимости ( o)
Это не сработало, как ожидалось, для многих (то есть для меня и Джеймса) во всех разновидностях от> = 8.04LTS до текущей версии 13.04.
Почему RESIUB (O) не работает?
Рассмотрим это описание ошибки, найденное в LaunchPad Bug 194676 :
Описание проблемы:
по умолчанию SysRq включен по умолчанию в настольных системах Ubuntu, что неоценимо, когда система заблокирована, и вы хотите остановить ее как можно осторожнее или устранить проблему. Однако многие удивляются, что вы также можете попросить его вывести содержимое текущей памяти на консоль (или dmesg), хотя бы только с клавиатуры.
openSUSE устанавливает битовую маску по умолчанию 176 в своем SysRq, которая по умолчанию ограничивает вас синхронизацией, перезагрузкой и «перемонтированием только для чтения». Это останавливает людей, использующих sysrq по умолчанию для проверки памяти, которая звучит разумно.
Разработчики Ubuntu увидели необходимость что-то сделать с этим, и наилучшее решение, учитывая возможные сложности упомянутого наблюдения, состоит в том, чтобы по умолчанию применять битовую маску 176 sysrq, создавая необходимость ввода данных пользователем для установки sysrq по своему усмотрению. Bitmask 176 позволяет только S, U, Bчто синхронизация, перемонтировании смонтировали разделы и перезагрузитесь.
Прочтите полный отчет об ошибке и комментарии, чтобы выделить некоторые параметры, которые могут быть применимы к вашей системе.
Совокупное влияние различного оборудования, ядер, клавиатур и битовых масок означает, что sysrq ведет себя по-разному для разных людей.
Один из способов получения вывода txt относительно того, как ваша система использует sysrq, заключается в применении команд sysrq из tty (когда система не страдает от блокировок / зависаний). Это может означать, что sysrq не был полностью отключен, но использует битовую маску 176.
Поиск / proc / sys / kernel / sysrq на 13.04 Desktop amd64 liveDVD и установка 13.04 Desktop amd64 подтверждает, что по умолчанию в настоящее время sysrq остается на битовой маске 176.
Если sysrq работает для вас; возможно, стоит спросить: «Если я не изменил настройки 10-magic-sysrq, то кто?»
1 Как заставить sysrq вести себя так, как я хочу?
Далее следует отредактированная копия и вставка https://fedoraproject.org/wiki/QA/Sysrq .
1.1 Что такое волшебный ключ SysRq?
Это «магическая» комбинация клавиш, на которую вы можете нажать, на которую ядро будет реагировать независимо от того, что оно еще делает, если оно не заблокировано полностью.
1.2 Как мне включить волшебный ключ SysRq?
sysrq встроен в ядро Ubuntu, но по умолчанию отключен во время загрузки, используя 10-magic-sysrq.conf.
Чтобы снова включить его во время загрузки, вы должны отредактировать файл /etc/sysctl.d/10-magic-sysrq.conf. то есть раскомментирование этой строки включит все функции sysrq:
# 1 - enable all functions of sysrq
При запуске ядра с скомпилированным SysRq, / proc / sys / kernel / sysrq управляет функциями, которые можно вызывать через ключ SysRq. Вот список возможных значений в / proc / sys / kernel / sysrq:
0 - disable sysrq completely
1 - enable all functions of sysrq
>1 - bitmask of allowed sysrq functions (see below for detailed function description):
2 - enable control of console logging level
4 - enable control of keyboard (SAK, unraw)
8 - enable debugging dumps of processes etc.
16 - enable sync command
32 - enable remount read-only
64 - enable signalling of processes (term, kill, oom-kill)
128 - allow reboot/poweroff
176 - allow only sync, reboot and "remount read-only"
256 - allow nicing of all RT tasks
Вы можете установить значение в файле с помощью следующей команды.
echo "number" >/proc/sys/kernel/sysrq
Так что полностью включить его было бы.
echo "1" > /proc/sys/kernel/sysrq
Или также можете включить это, делая.
sysctl -w kernel.sysrq=1
Запись.
Значение / proc / sys / kernel / sysrq влияет только на вызов через клавиатуру. Вызов любой операции через / proc / sysrq-trigger всегда разрешен (пользователем с правами администратора - см. Ниже).
1.3 Как мне использовать волшебный ключ SysRq?
Ubuntu Desktop
Вы нажимаете клавишу комбо Alt+ SysRq+ command key.
NB- См. Примечания в этом разделе и в разделе «Устранение неполадок» для других возможных настроек по умолчанию для других систем и клавиатур.
Можно установить любой персонаж по вашему выбору: Все архитектуры
Запишите символ в / proc / sysrq-trigger:
echo t > /proc/sysrq-trigger
установил бы Tповедение как SysRq
Примечание.
Некоторые клавиатуры могут не иметь клавиши с надписью SysRq. SysRqКлюч также известен как Print Screenключ. Кроме того, некоторые клавиатуры не могут обрабатывать столько клавиш одновременно, поэтому вам может повезти с Alt+ SysRq- SysRqзатем нажмите и command keyотпустите все. См. Полное описание QA, которое основано на этом руководстве на https://fedoraproject.org/wiki/QA/Sysrq#How_do_I_use_the_magic_SysRq_key.3F для получения дополнительной информации об этом.
1.4 Что такое «командные» клавиши?
'b' - Will immediately reboot the system without syncing or unmounting your disks.
'c' - Will perform a kexec reboot in order to take a crashdump.
'd' - Shows all locks that are held.
'e' - Send a SIGTERM to all processes, except for init.
'f' - Will call oom_kill to kill a memory hog process.
'g' - Used by kgdb on ppc and sh platforms.
'h' - Will display help (any key that is not listed here will bring forth help )
'i' - Send a SIGKILL to all processes, except for init.
'k' - Secure Access Key (SAK) Kills all programs on the current virtual terminal.
Запись.
Смотрите важные комментарии ниже в разделе SAK.
'l' - Shows a stack backtrace for all active CPUs.
'm' - Will dump current memory info to your console.
'n' - Used to make RT tasks nice-able
'o' - Will shut your system off (if configured and supported).
'p' - Will dump the current registers and flags to your console.
'q' - Will dump a list of all running timers.
'r' - Turns off keyboard raw mode and sets it to XLATE.
's' - Will attempt to sync all mounted filesystems.
't' - Will dump a list of current tasks and their information to your console.
'u' - Will attempt to remount all mounted filesystems read-only.
'v' - Dumps Voyager SMP processor info to your console.
'w' - Dumps tasks that are in uninterruptable (blocked) state.
'x' - Used by xmon interface on ppc/powerpc platforms.
'0'-'9' - Sets the console log level, controlling which kernel messages will be printed to your console. ('0', for example would make it so that only emergency messages like PANICs or OOPSes would make it to your console.)
1.5 Хорошо, так для чего я могу их использовать?
Un raw очень удобен при сбое вашего X-сервера или программы svgalib.
Sa k(ключ безопасного доступа) полезен, если вы хотите убедиться, что на консоли не запущена троянская программа, которая могла бы получить ваш пароль при попытке входа в систему. Он убьет все программы на данной консоли, что позволит вам убедиться, что приглашение для входа в систему, которое вы видите, на самом деле происходит от init, а не от какой-либо троянской программы. Другие находят его полезным как (Системный ключ внимания), который полезен, когда вы хотите выйти из программы, которая не позволит вам переключать консоли. (Например, X или программа svgalib.)
Примечание.
В своей истинной форме это не настоящий SAK, как в системе, совместимой с c2, и он не должен ошибаться как таковой.
Ре bхорошо, когда вы не можете выключиться.
Запись.
Обычно считается хорошей практикой uмонтировать в первую очередь
Crashdump можно использовать для ручного запуска crashdump, когда система зависла.
Запись.
Ядро должно быть собрано с включенным CONFIG_KEXEC!
Синхронизация великолепна, когда ваша система заблокирована, она позволяет вам sподключать диски и, безусловно, уменьшает вероятность потери данных и fscking.
Предупреждение
Синхронизация не состоялась, пока на экране не появятся «OK» и «Готово». (Если ядро действительно в ссоре, вы можете никогда не получить сообщение OK или Готово.
Umount в основном полезен так же, как Sync.
Уровни логирования 0- 9полезны, когда ваша консоль заполняется сообщениями ядра, которые вы не хотите видеть. Выбор 0запретит все, кроме самых срочных сообщений ядра, попадать на вашу консоль.
Запись.
Они все равно будут зарегистрированы, если syslogd / klogd живы
T erm и k ill полезны, если у вас есть какой-то сбежавший процесс, который вы не можете убить другим способом, особенно если он порождает другие процессы.
Запись.
При возникновении плохой паники ядра сделать Alt+ Sysrq+ eто Alt+ Sysrq+ uто Alt+ Sysrq+ iи , наконец , Alt+ Sysrq+b
1.6 Устранение неполадок
1.6.1 Зависание до запуска скриптов
Если машина зависает до запуска initscripts, загрузитесь с sysrq_always_enabled=1
1.6.2 Иногда SysRq, кажется, застревает после его использования, что я могу сделать?
Нажатие shift, altи controlна обеих сторонах клавиатуры, и повторное нажатие неверной последовательности sysrq решит проблему. (то есть что-то вроде alt+ sysrq+ z).
Переключение на другую виртуальную консоль ( Ctrl+ Alt+ Fn1- Fn6) и затем обратно Ctrl+ Alt+ Fn7также должно помочь.
1.6.3 Я бью SysRq, но ничего не происходит, что не так?
Есть несколько клавиатур, которые отправляют коды сканирования, SysRqотличные от заданных 0x54. Так что, если SysRqне работает из коробки для определенной клавиатуры, запустите, showkey -s
чтобы узнать правильную последовательность сканирования кода. Затем используйте setkeycodes <sequence> 84
для определения этой последовательности обычный SysRqкод (84 - десятичное число для 0x54). Вероятно, лучше всего поместить эту команду в загрузочный скрипт.
Предупреждение
Вы выходите showkey
, ничего не печатая в течение десяти секунд.
1.6.4 Я хочу добавить SysRqключевые события в модуль, как это работает?
Чтобы зарегистрировать базовую функцию в таблице, вы должны сначала включить заголовок include/linux/sysrq.h
, это определит все остальное, что вам нужно. Затем вы должны создать структуру sysrq_key_op и заполнить ее ...
Функция обработчика клавиш, которую вы будете использовать.
Строка help_msg, которая будет печататься, когда SysRQ печатает справку
Строка action_msg, которая будет напечатана прямо перед вызовом вашего обработчика. Ваш обработчик должен соответствовать прототипу в 'sysrq.h'
После того, как sysrq_key_op создан, вы можете вызвать функцию ядра register_sysrq_key (int key, struct sysrq_key_op * op_p); это зарегистрирует операцию, на которую указывает op_p в ключе таблицы «key», если этот слот в таблице пуст. Во время выгрузки модуля вы должны вызвать функцию unregister_sysrq_key (int key, struct sysrq_key_op * op_p), которая удалит ключ op, на который указывает op_p, из ключа key, если и только если он в настоящее время зарегистрирован в этом слот. Это в случае, если слот был перезаписан с момента регистрации.
Система Magic SysRqработает, регистрируя ключевые операции в таблице поиска ключевых операций, которая определена в 'drivers / char / sysrq.c'. Эта таблица ключей имеет ряд операций, зарегистрированных в ней во время компиляции, но она изменчива, и для интерфейса с ней экспортируются 2 функции register_sysrq_key и unregister_sysrq_key. Конечно, никогда не оставляйте неверный указатель в таблице. то есть; Когда ваш модуль, который вызвал register_sysrq_key (), завершается, он должен вызвать unregister_sysrq_key (), чтобы очистить используемую им запись таблицы ключей sysrq.
Запись.
Нулевые указатели в таблице всегда безопасны.
Если по какой-то причине вы чувствуете необходимость вызова функции handle_sysrq из функции, вызываемой handle_sysrq, вы должны знать, что вы находитесь в блокировке (вы также находитесь в обработчике прерываний, что означает, что не спит!), Поэтому вместо этого вы должны вызвать __handle_sysrq_nolock.
1.6.5 Вывод
Используйте Alt+ SysRq+, Sа затем Uи затем Bдля синхронизации, попытайтесь перемонтировать все смонтированные файловые системы, а затем перезагрузите при необходимости. Не меняя ничего в системных файлах.
Если Alt+ SysRq+ Bне перезагружает систему, может потребоваться отредактировать /etc/sysctl.d/10-magic-sysrq.conf, чтобы разрешить попытку применения Alt+ SysRq+ B(или / и Oпосле редактирования / proc / sys / kernel / sysrq bitmask для включения перезагрузки и выключения системы с помощью sysrq. Это можно сделать любым из способов, описанных выше.
1.6.6 ПРИЛОЖЕНИЕ:
См. Также - http://ubuntuforums.org/showthread.php?t=617349 и https://www.kernel.org/doc/Documentation/sysrq.txt
Для тех, у кого проблемы с клавиатурой Apple MacBook относительно sysrq, см. Https://help.ubuntu.com/community/AppleKeyboard и https://bugs.launchpad.net/mactel-support/+bug/262408.
Относительно интересная информация - после просмотра 17 08 2013 года эпизод программы BBC «Клик» и статья «Кибервойна» действительно привлекли мое внимание. У программы также есть собственный веб-сайт Нажмите, если вы не можете смотреть программу. FAWC