Alt + sysrq + REISUB не перезагружает мой ноутбук

59

Иногда мой ноутбук зависал, поэтому я использовал волшебную комбинацию клавиш Alt+ SysRq+ REISUBдля безопасной перезагрузки. Тем не менее, мне кажется, что это не работает, так как когда я нажимаю Bклавишу, чтобы завершить команду волшебного ключа, он просто говорит «сброс ...» и ничего не делает.

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

У меня сложилось впечатление, что мой ноутбук должен перезагрузиться после нажатия всех волшебных клавиш в порядке REISUB.

Джеймс Уайт
источник

Ответы:

58

Alt + SysRq был отключен, чтобы исправить ошибку. Отключение Magic-SysRq считалось самой ошибкой, и с тех пор оно было повторно включено ( # 1025467 ). Если он все еще отключен для вас, вы можете включить его снова:

Ubuntu 12.04 и старше

Отредактируйте файл /etc/sysctl.conf, чтобы включить строку

kernel.sysrq=1

Ubuntu 12.10 и новее

Начиная с Ubuntu 12.10, возможен более детальный контроль над включенными функциями Magic-SysRq. Просто отредактируйте файл /etc/sysctl.d/10-magic-sysrq.conf .

Файл хорошо документирован и говорит вам, как именно включить эти функции. Текущее значение по умолчанию было выбрано в целях безопасности и должно быть изменено только в том случае, если вы знаете, зачем вам это нужно (последствия для безопасности см. # 194676 ).

mniess
источник
6
Нет, это не так. Он отлично работает на индивидуалистах, натти, онейриках и точных.
Псуси
Он был фактически отключен для устранения ошибки, но он был снова включен. Я обновил ответ. Должны ли мы также отредактировать вопрос, чтобы он был немного более общим?
Mniess
1
@geezanansa Вы можете редактировать свои комментарии, пока они еще горячие. Пожалуйста, не добавляйте несколько последовательных комментариев. Также у меня SysRq работает 13.04. Никогда не пробовал на Live DVD, только после установки. Итак, я не понимаю положительных отзывов об этом ответе, потому что это очень короткий период времени (см. Отчет об ошибке). ;)
gertvdijk
1
@gertvdijk: Когда я обновил вопрос, я упомянул файл etc / sysctl.d / 10-magic-sysrq.conf, который включает параметры sysrq для всего, что вам нужно для включения всех соответствующих функций. Назад, когда вопрос был задан (в 2010 году), это было фактически решением, потому что «b» фактически деактивировался по умолчанию из-за ошибки. Я изменил ответ на более общий с целью, я отвечаю на вопрос о том, что sysrq является полностью нефункциональным, а также частично нефункциональным.
mniess
1
@geezanansa, да, я думаю, что они отключили его в количественном выражении, после того как я опубликовал это
psusi
31

Клавиатуры являются проблемой здесь!

  • Некоторым просто не нравится одновременное нажатие четырех клавиш, и они перестают быть клавиатурой, пока вы не отпустите их.
  • Все клавиатуры превращаются в раскладку QWERTY при отправке сигнала SysRq. Это затрудняет поиск правильных команд на клавиатурах с другой раскладкой. Википедия: Команды SysRq показывают таблицу, в которой можно найти подходящие альтернативные макеты.
  • Некоторые имеют SysRqна другую клавишу, чем PrtScудерживать с помощью функциональной клавиши. На моем ноутбуке это Fn+ End. Удержание Alt+ PrtScработает только в том случае, если какой-то системный процесс (оконный менеджер?) Переводит его для меня. На тотальный крах только настоящие SysRq работы!
  • Некоторые только триггерные SysRqклавиши, когда вы держите правый Alt + PrtSc(аппаратно). Левая клавиша Alt не будет работать в таком случае по той же причине, что и выше. Вот как работает моя клавиатура USB.
  • Совет: попробуйте нажать Shift+ Alt+, SysRqчтобы увидеть вывод справки на виртуальном терминале. Это полезно, чтобы увидеть, работает ли он без вреда:

    SysRq: HELP: loglevel (0-9) reBoot Crash завершить все задачи (E) память завершена-oom-kill (F) уничтожить все задачи (I) thaw-файловые системы (J) saK show-backtrace-all -active-cpus (L) показать использование памяти (M) красиво-все-RT-задачи (N) powerOff показать-регистры (P) показать все таймеры (Q) unRaw Sync показать-задачи-состояния (T) Размонтировать show-заблокированные-задачи (W) dump-ftrace-buffer (Z)

Во всех случаях, с которыми я сталкивался, это не работало, замена клавиатуры работала отлично и показала, что с настройками ядра все в порядке.

gertvdijk
источник
2
@geezanansa Я видел, что клавиатура явно не в состоянии справиться с некоторыми комбинациями из 4 клавиш. Замена его решила проблему. В самом деле. Это может работать для всех ваших клавиатур, хотя. И если вы не понимаете, голос против, то почему бы вам не объяснить, почему вы не понимаете?
gertvdijk
2
Учитывая, что Джеймс подтверждает, что все команды sysrq работают, за исключением B. Этот ответ не является ответом на вопрос, который я прочитал как Почему sysrq B не работает? Клавиатура не является проблемой для Джеймса или многих других в отношении sysrq. -1
geezanansa
17

Атрибуции :
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

гизананса
источник
2
В частности, я только что протестировал Al + SysRq + REISUB на полностью обновленной системе Quantal i386, и она отлично работает. Вы уверены, что связанная ошибка безопасности или какая-либо часть обсуждения безопасности в этом ответе действительно связана с проблемой? Если да, то является ли это достаточно распространенной причиной проблемы, которая должна появиться первой в этом ответе?
Элия ​​Каган
Проблема безопасности важна, так как полный набор команд sysrq недоступен из-за применения битовой маски 176 во время загрузки; как описано в сообщении об ошибке.
geezanansa
3

Я столкнулся с этим на днях, и работа заняла несколько секунд. Я, возможно, даже сделал всю последовательность REISUB дважды.

Кроме того, убедитесь, что вы используете клавишу sysrq (большинство ноутбуков требуют, чтобы вы удерживали функцию, так что вы действительно удерживаете 4 клавиши одновременно)

Скотт Ричи
источник
Спасибо за ваш ответ, Скотт. Мне действительно нужно удерживать функциональную клавишу (fn) вместе с alt и sysrq. Как только я нажимаю заключительную клавишу B, чтобы завершить последовательность REISUB, мой ноутбук, кажется, блокируется после того, как он отображает: Сброс При повторном выполнении последовательности волшебных клавиш ничего не происходит, и после этого ничего не отображается на экране. Таким образом, похоже, что система блокируется при перезагрузке.
Джеймс Уайт
3

Несколько лет назад я имел обыкновение использовать Alt+ SysRq+ S, U, B, Oдля перезагрузки или отключения питания застревания машины, потому что , как для вас, Alt+ SysRq+ Bиногда не хотят работать.

(Кроме того , мне нужно , чтобы войти в привычку использовать Alt+ SysRq+ E, в Iпервую очередь. Я не вижу особого смысла в использовании Alt+ SysRq+ R, так почему же режим клавиатуры имеет значения , если это будет перезагрузка и сбросить его в любом случае?)

Мариус Гедминас
источник
1
почему режим клавиатуры имеет значение, если он все равно перезагрузится и сбросит настройки? Потому что это дает возможность ввода с клавиатуры? это может означать, что вам не нужно перезагружаться или выключаться
geezanansa