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

52

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

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

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

    
задан James White 02.11.2010 в 17:24
источник

5 ответов

51

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 03.11.2010 в 16:45
источник
25

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

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

      

    SysRq: HELP: loglevel (0-9) reBoot Crash terminate-all-tasks (E) memory-full-oom-kill (F) kill-all-tasks (I) thaw-filesystems (J) saK show- backtrace-all-active-cpus (L) show-memory-usage (M) nice-all-RT-tasks (N) power-show show-registers (P) show-all-timers (Q) unRaw Sync show-task-states (T) Unmount show-blocked-tasks (W) dump-ftrace-buffer (Z)

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

    
ответ дан gertvdijk 13.01.2013 в 13:58
13

ATTRIBUTIONS :
Ссылка , которая была основана на оригинальной работе
Кредиты
Написано Mydraal
Обновлено Адамом Сульмицким
Обновлено Джереми М. Долан 2001/01/28 10:15:59
Добавил (а) Crutcher Dunnavant

Ссылка mneiss предоставил ссылки для LaunchPad.

Содержание

Что такое sysrq?
Почему RESIUB (O) не работает?

1 Как заставить sysrq вести себя так, как я хочу?
1.1 Что такое волшебный ключ SysRq?
1.2 strong> Как включить волшебный ключ 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 )

Это не работает как ожидалось для многих (т.е. я и Джеймс) через все вкусы от & gt; = 8.04LTS до текущей версии 13.04.

Почему RESIUB (O) не работает?

Рассмотрите это описание ошибки, найденное в ошибке LaunchPad 194676 :

  

Описание проблемы:
  По умолчанию SysRq включен по умолчанию в настольных системах Ubuntu, что неоценимо, когда система заблокирована, и вы хотите остановить ее как можно мягче или отладить проблему. Однако многие люди удивляются, что вы также можете попросить его сбросить содержимое текущей памяти на консоль (или dmesg), хотя и с клавиатуры.
  openSUSE устанавливает битовую маску по умолчанию 176 на SysRq, которая по умолчанию ограничивает вас синхронизацией, перезагрузкой и «перестройкой только для чтения». Это останавливает людей, использующих sysrq по умолчанию для проверки памяти, которая звучит разумно.

Разработчики Ubuntu увидели необходимость что-то сделать, и наилучшим решением, учитывая возможные осложнения упомянутого наблюдения, является применение битмаски 176 sysrq по умолчанию, создавая необходимость ввода пользователем для установки sysrq по своему усмотрению. Бит-маска 176 допускает только S , U , B , которая синхронизирует, монтирует разделы монтирования и перезагружается.
Чтение полного отчета об ошибке и комментариев будет содержать некоторые варианты, которые могут быть применимы к вашей системе.

Накопительный аффект различных аппаратных средств, ядер, клавиатур и битмаксов означает, что sysrq ведет себя по-разному для разных людей.

Один из способов получения вывода txt в отношении использования вашей системы sysrq заключается в применении команд sysrq от tty (когда система не страдает от блокировок / зависаний). Это может означать, что sysrq не был полностью отключен, но использует битмаску 176.

Поиск / proc / sys / kernel / sysrq на 13.04 Desktop amd64 liveDVD и 13.04 Desktop amd64 install подтверждает, что по умолчанию в настоящее время остается sysrq в битмаске 176.

Если sysrq работает для вас; может быть, стоит спросить: «Если бы я не изменил настройки 10-magic-sysrq, то кто?»

1 Как заставить 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

Вы нажимаете клавишу командной строки Alt + SysRq + .

N.B .- См. примечания в этом разделе и раздел «Устранение неполадок» для других возможных настроек по умолчанию для других систем и клавиатур.

Можно выбрать любой персонаж по вашему выбору: Все архитектуры

Запись символа в / proc / sysrq-trigger:

echo t > /proc/sysrq-trigger

установит T как SysRq
Примечание.
На некоторых клавиатурах может отсутствовать ключ с надписью SysRq . Ключ SysRq также известен как клавиша Print Screen . Также некоторые клавиатуры не могут обрабатывать так много клавиш одновременно, поэтому вам может быть повезло с Alt + SysRq - SysRq , затем нажмите , затем отпустите все. См. Полную запись QA, в которой данное руководство основано на ссылке для получения дополнительной информации об этом.

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 r aw очень удобно, когда сбой вашего X-сервера или программы svgalib.

Sa k (Secure Access Key) полезен, если вы хотите быть уверенным, что на консоли нет троянской программы, которая могла бы захватить ваш пароль, когда вы попытаетесь войти в систему. Он убьет все программы на данной консоли, что позволит вам убедиться, что приглашение входа в систему, которое вы видите, на самом деле является одним из init, а не какой-либо троянской программой. Другие считают это полезным как (System Attention Key), который полезен, когда вы хотите выйти из программы, которая не позволит вам переключать консоли. (Например, X или программа svgalib.)
Примечание.
В своей истинной форме это не настоящий SAK, как тот, который соответствует системе, совместимой с c2, и ее не следует воспринимать как таковую.

Re b oot хорошо, когда вы не можете завершить работу.
Примечание.
Обычно считается хорошей практикой для u mount

Crashdump может использоваться для ручного запуска rashdump c при зависании системы.
Примечание.
Ядро должно быть построено с включенным CONFIG_KEXEC!

Sync отлично работает, когда ваша система заблокирована, она позволяет вам s ync ваши диски и, конечно же, уменьшит вероятность потери данных и fscking.
Предупреждение
Синхронизация не состоялась до тех пор, пока вы не увидите «OK» и «Готово» на экране. (Если ядро ​​действительно в беспорядке, вы, возможно, никогда не получите сообщение «ОК» или «Готово».

U mount в основном полезен тем же способом, что и S ync.

Лог-уровни 0 - 9 полезны, когда ваша консоль заливается сообщениями ядра, которые вы не хотите видеть. Выбор 0 предотвратит доступ всех ваших сообщений, кроме самых срочных, к вашей консоли.
Примечание.
Они будут по-прежнему регистрироваться, если syslogd / klogd являются живыми

T e rm и k i ll полезны, если у вас есть какой-то безудержный процесс, который вы не можете убить другим способом, особенно если он порождает другие процессы.
Примечание.
Когда вы испытываете плохую панику ядра, Alt + Sysrq + e , затем Alt + Sysrq + u , затем Alt + Sysrq + i и, наконец, Alt + SYSRQ + б

1.6 Устранение неполадок

1.6.1 Зависание перед вызовом initscripts

Если машина висит до запуска initscripts, загрузитесь с sysrq_always_enabled=1

1.6.2 Иногда SysRq, кажется, «застревает» после его использования, что я могу сделать?

Нажатие shift , alt и control с обеих сторон клавиатуры, и повторное попадание неверной последовательности sysrq устранит проблему. (т. е. что-то вроде alt + sysrq + z ).

Переключение на другую виртуальную консоль ( Ctrl + Alt + Fn1 - Fn6 ), а затем обратно < kbd> Ctrl + Alt + Fn7 также должен помочь.

1.6.3 Я попал в SysRq , но ничего не происходит, что случилось?

Есть несколько клавиатур, которые отправляют разные scancodes для SysRq , чем предопределенные 0x54. Поэтому, если SysRq не работает из коробки для определенной клавиатуры, запустите showkey -s , чтобы узнать правильную последовательность scancode. Затем используйте 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», при нажатии клавиши «ключ», если этот слот в таблице пуст. При выгрузке модуля вы должны вызвать функцию unregister_sysrq_key (int key, struct sysrq_key_op * op_p), которая удалит ключ op, на который указывает «op_p» из ключа «key», если и только если он в настоящее время зарегистрирован в этом слот. Это происходит, если слот был перезаписан с момента его регистрации.

Система Magic SysRq работает, регистрируя операции ключа с ключевой операцией поиска, которая определена в «drivers / char / sysrq.c». Эта таблица ключей имеет множество операций, зарегистрированных во время компиляции, но изменена, и две функции экспортируются для интерфейса с ним: 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, чтобы включить перезагрузку и завершение работы системы с помощью sysrq. Вы можете сделать это с помощью любого из описанных выше способов.

1.6.6 ПРИЛОЖЕНИЕ: См. Также - Ссылка и Ссылка

Для тех, у кого проблемы с клавиатурой Apple MacBook в отношении sysrq, см. ниже: Ссылка и Ссылка

Относительная интересная информация- После просмотра 17 08 2013 эпизода программы BBC «Нажмите», , и статья «cyberwarfare» действительно привлекла мое внимание. Программа также имеет свой собственный веб-сайт Нажмите , если вы не можете смотреть программу. FAWC

    
ответ дан geezanansa 13.04.2017 в 14:24
3

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

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

    
ответ дан Scott Ritchie 02.11.2010 в 20:00
3

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

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

    
ответ дан Marius Gedminas 03.11.2010 в 12:36