Alt + sysrq + REISUB не перезагружает мой ноутбук
Иногда мой ноутбук зависал, поэтому я использовал волшебную комбинацию клавиш Alt + SysRq + REISUB для безопасной перезагрузки. Тем не менее, мне кажется, что это не работает, так как когда я нажимаю клавишу B, чтобы завершить команду волшебного ключа, он просто говорит "сброс..." и ничего не делает.
Все остальные клавиши работают нормально, так как сбрасывают раскладку клавиатуры, убивают все задачи и т. Д., Но, похоже, не завершаются перезагрузкой.
У меня сложилось впечатление, что мой ноутбук должен перезагрузиться после нажатия всех волшебных клавиш в порядке REISUB.
6 ответов
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).
Клавиатуры являются проблемой здесь!
- Некоторым просто не нравится одновременное нажатие четырех клавиш, и они перестают быть клавиатурой, пока вы не отпустите их.
- Все клавиатуры превращаются в раскладку 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)
Во всех случаях, с которыми я сталкивался, это не работало, замена клавиатуры работала отлично и показала, что с настройками ядра все в порядке.
АТРИБУЦИИ:
https://fedoraproject.org/wiki/QA/Sysrq, основанный на оригинальной работе
кредиты
Автор Mydraal
Обновлено Адамом Сульмицким
Обновлено Джереми М. Долан 2001/01/28 10:15:59
Добавлено в Crutcher Dunnavant
/questions/123941/alt-sysrq-reisub-ne-perezagruzhaet-moj-noutbuk/123955#123955 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 Зависание до запуска скриптов
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 + командная клавиша.
NB- См. Примечания в этом разделе и в разделе "Устранение неполадок" для других возможных настроек по умолчанию для других систем и клавиатур.
Можно установить любой персонаж по вашему выбору: Все архитектуры
Запишите символ в /proc/sysrq-trigger:
echo t > /proc/sysrq-trigger
установил бы T вести себя как SysRq
Заметка.
Некоторые клавиатуры могут не иметь клавиши с надписью SysRq. Клавиша SysRq также называется клавишей Print Screen. Кроме того, некоторые клавиатуры не могут обрабатывать столько клавиш одновременно, поэтому вам, возможно, повезет больше с Alt + SysRq - SysRq, затем нажмите клавишу Command и отпустите все. См. Полное описание QA, которое основано на этом руководстве на https://fedoraproject.org/wiki/QA/Sysrq для получения дополнительной информации об этом.
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 очень удобен, когда ваш X-сервер или программа svgalib аварийно завершают работу.
Sa k (ключ безопасного доступа) полезен, если вы хотите убедиться, что на консоли не запущена троянская программа, которая могла бы получить ваш пароль при попытке входа в систему. Он убьет все программы на данной консоли, что позволит вам убедиться, что приглашение для входа в систему, которое вы видите, на самом деле происходит от init, а не от какой-либо троянской программы. Другие находят его полезным как (Системный ключ внимания), который полезен, когда вы хотите выйти из программы, которая не позволит вам переключать консоли. (Например, X или программа svgalib.)
Заметка.
В своей истинной форме это не настоящий SAK, как в системе, совместимой с c2, и он не должен ошибаться как таковой.
Хорошо, когда ты не можешь выключиться.
Заметка.
Обычно считается хорошей практикой сначала монтировать
Crashdump можно использовать для ручного запуска c rashdump, когда система зависла.
Заметка.
Ядро должно быть собрано с включенным CONFIG_KEXEC!
Синхронизация великолепна, когда ваша система заблокирована, она позволяет синхронизировать ваши диски и, безусловно, уменьшит вероятность потери данных и fscking.
Предупреждение
Синхронизация не состоялась до тех пор, пока на экране не появятся "OK" и "Готово". (Если ядро действительно в ссоре, вы можете никогда не получить сообщение OK или Готово.
U mount в основном полезен так же, как S ync.
Уровни логирования 0 - 9 полезны, когда ваша консоль заполняется сообщениями ядра, которые вы не хотите видеть. Выбор 0 предотвратит все, кроме самых срочных сообщений ядра, доступ к вашей консоли.
Заметка.
Они все равно будут зарегистрированы, если syslogd / klogd живы
Они полезны, если у вас есть какой-то сбежавший процесс, который вы не можете убить другим способом, особенно если он порождает другие процессы.
Заметка.
При плохой панике в ядре выполните 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
Несколько лет назад я использовал Alt+SysRq+S,U,B,O для перезагрузки или выключения зависшего компьютера, потому что, как и у вас, Alt+SysRq+B иногда не хотел работать.
(Кроме того, сначала мне нужно привыкнуть использовать Alt+SysRq+E.Я не вижу особого смысла в использовании Alt+SysRq+R, так как почему режим клавиатуры имеет значение, если он собирается перезагрузиться и сбросить его тем не мение?)
Я столкнулся с этим на днях, и работа заняла несколько секунд. Я, возможно, даже сделал всю последовательность REISUB дважды.
Кроме того, убедитесь, что вы используете клавишу sysrq (большинство ноутбуков требуют, чтобы вы удерживали функцию, так что вы действительно удерживаете 4 клавиши одновременно)
Убедитесь, что вы удерживаете кнопку + . На моем компьютере, если я нажму +
print screen
и отпустите все кнопки, затем нажмите
reisub
, это не
reboot
мой компьютер. Нажатие
alt
и удерживайте ее, затем нажмите другие клавиши работает. Надеюсь, это поможет другим.