Alt + sysrq + REISUB 无法重启我的笔记本电脑

Alt + sysrq + REISUB 无法重启我的笔记本电脑

有时,我的笔记本电脑会卡住,所以我使用魔法键组合Alt+ SysRq+REISUB来执行安全重启。但是,它似乎对我不起作用,因为当我按下该B键来完成魔法键命令时,它只是说“重置...”并且什么也没做。

当它重置键盘布局、终止所有任务等时,所有其他键似乎都可以正常工作,但似乎无法通过重新启动完成。

我的印象是,按照 REISUB 的顺序按下所有魔法键后,我的笔记本电脑应该会重新启动。

答案1

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)。

答案2

问题出在键盘上!

  • 有些人只是不喜欢同时按下 4 个键,直到你释放一些键时它才会停止作为键盘。
  • 发送 SysRq 信号后,所有键盘都会变成 QWERTY 布局。这使得在其他布局的键盘上很难找到正确的命令。维基百科:SysRq 命令显示一个表格来查找适合常见替代布局的正确表格。
  • 有些笔记本电脑除了按住功能键SysRq外,还带有其他按键。在我的笔记本电脑上,这个按键是+ 。只有当某个系统进程(窗口管理器?)为我翻译 + 时,按住+才有效。在完全崩溃时,只有PrtScFnEndAltPrtSc真实的 SysRq作品!
  • 有些只有SysRq在按住正确的 Alt+ PrtSc(通过硬件)。在这种情况下,左 Alt 键将不起作用,原因与上述相同。这就是我的 USB 键盘的工作方式。
  • 提示:尝试按Shift+ Alt+SysRq在虚拟终端上查看“帮助”输出。这有助于查看它是否正常工作而不会造成任何损害:

    SysRq:帮助:日志级别(0-9)重新启动崩溃终止所有任务(E)内存满载终止(F)终止所有任务(I)解冻文件系统(J)saK显示回溯所有活动cpus(L)显示内存使用情况(M)nice-all-RT-tasks(N)断电显示寄存器(P)显示所有计时器(Q)unRaw 同步显示任务状态(T)卸载显示阻塞任务(W)转储ftrace缓冲区(Z)

在我遇到的所有情况下,它都不起作用,更换键盘却能完美工作,并且表明任何内核设置都没有问题。

答案3

归因
https://fedoraproject.org/wiki/QA/Sysrq#How_do_I_use_the_magic_SysRq_key这是根据原作
改编的
,作者:Mydraal
更新者:Adam Sulmicki
更新者:Jeremy M. Dolan 2001/01/28 10:15:59
添加者:Crutcher Dunnavant

https://askubuntu.com/a/11194/102029mneiss 提供了 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 错误 194676

问题描述:
默认情况下,Ubuntu 桌面系统默认启用 SysRq,当系统锁定并且您想要尽可能温和地停止它或调试问题时,此功能非常有用。然而,许多人感到惊讶的是,您还可以要求它将当前内存的内容转储到控制台(或 dmesg),尽管只能通过键盘。openSUSE
在其 SysRq 上设置了默认位掩码 176,默认情况下限制您同步、重新启动和“以只读方式重新挂载”。这阻止人们默认使用 sysrq 检查内存,这听起来很合理。

Ubuntu 开发人员认为有必要对此采取措施,考虑到上述观察结果可能带来的复杂性,最好的解决方案是默认应用位掩码 176 sysrq,从而需要用户输入来根据需要设置 sysrq。位掩码 176 仅允许SUB即同步、重新安装已安装的分区并重新启动。
阅读完整的错误报告和评论将突出显示可能适用于您的系统的一些选项。

不同硬件、内核、键盘和位掩码的累积影响意味着 sysrq 对不同的人的行为有所不同。

获取有关系统如何使用 sysrq 的 txt 输出的一种方法是从 tty 应用 sysrq 命令(当系统没有受到锁定/冻结时)。这样做可能表明 sysrq 尚未完全禁用,但正在使用位掩码 176。

在 13.04 Desktop amd64 liveDVD 和 13.04 Desktop amd64 安装上搜索 /proc/sys/kernel/sysrq 确认默认设置当前是将 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 桌面

您按下组合键Alt+ SysRq+ command key

注意-有关其他系统和键盘的其他可能的默认设置,请参阅本节和故障排除部分中的注释。

可以设置您选择的任何字符:所有架构

向 /proc/sysrq-trigger 写入一个字符:

echo t > /proc/sysrq-trigger

将行为设置TSysRq
笔记。
有些键盘可能没有标有 的键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 好的,那么我可以用它们来做什么?

r当您的 X 服务器或 svgalib 程序崩溃时,Un aw 非常方便。

当您想确保控制台上没有运行任何木马程序时(这些程序可能会在您尝试登录时窃取您的密码), Sa k(安全访问密钥)很有用。它将终止给定控制台上的所有程序,从而让您确保您看到的登录提示实际上是来自 init 的提示,而不是某个木马程序。其他人发现它很有用(系统注意密钥),当您想要退出不允许切换控制台的程序时很有用。(例如,X 或 svgalib 程序。)
笔记。
就其真实形式而言,它并不是像 c2 兼容系统中的 SAK,并且不应误认为是 SAK。

b当您无法关机时,Re oot 是个不错的选择。
笔记。
通常认为u先安装是一种好的做法

c当系统挂起时,可以使用 Crashdump 手动触发rashdump。
笔记。
内核需要在启用 CONFIG_KEXEC 的情况下构建!

当您的系统被锁定时,同步非常有用,它允许您s同步磁盘,并且肯定会减少数据丢失和文件系统损坏的机会。
警告
直到您看到屏幕上出现“OK”和“Done”时,同步才算完成。(如果内核确实存在问题,您可能永远都收不到 OK 或 Done 消息。)

Umount 的基本作用与Sync 相同。

当您的控制台充斥着您不想看到的内核消息时,日志级别0-非常有用。选择此选项将阻止除最紧急的内核消息之外的所有消息到达您的控制台。90
笔记。
如果 syslogd/klogd 还活着,它们仍会被记录下来

如果您有某种无法通过其他方式终止的失控进程,尤其是当该进程产生其他进程时,T erm 和 k ll 很有用。i
笔记。
当遇到严重的内核恐慌时,请执行Alt+ Sysrq+e然后Alt+ Sysrq+u然后Alt+ Sysrq+i最后Alt+ Sysrq+b

1.6 故障排除

1.6.1 在启动脚本运行前挂起

如果机器在启动脚本运行之前挂起,请使用sysrq_always_enabled=1

1.6.2 有时使用 SysRq 后似乎会“卡住”,我该怎么办?

点击键盘两侧的shiftalt和,然后再次输入无效的 sysrq 序列将解决问题。(即类似++ )。controlaltsysrqz

切换到另一个虚拟控制台(Ctrl++ Alt- )然后再切换回++也应该有Fn1帮助。 Fn6CtrlAltFn7

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);如果表中的相应位置为空,则此函数将在表键“key”处注册“op_p”指向的操作。在模块卸载时,您必须调用函数 unregister_sysrq_key(int key, struct sysrq_key_op *op_p),当且仅当“op_p”当前已在该位置注册时,此函数才会从键“key”中删除“op_p”指向的键操作。这是因为在您注册该位置后,该位置已被覆盖。

MagicSysRq系统通过针对密钥操作查找表注册密钥操作来工作,该表在“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 位掩码后启用使用 sysrq 重新启动和关闭系统。您可以通过上述任何一种方法来执行此操作。

1.6.6 附录: 也可以看看 -http://ubuntuforums.org/showthread.php?t=617349https://www.kernel.org/doc/Documentation/sysrq.txt

对于那些遇到 Apple MacBook 键盘与 sysrq 相关问题的人,请参阅:https://help.ubuntu.com/community/AppleKeyboardhttps://bugs.launchpad.net/mactel-support/+bug/262408

相对有趣的信息-在观看了 2013 年 8 月 17 日的 BBC 节目后“点击”“网络战争”一文确实引起了我的注意。该节目也有自己的网站点击如果您无法观看该节目。FAWC

答案4

几年前我曾经使用++ AltSysRqSU来重新启动或BO关闭电源一台卡住的机器,因为就像你一样,Alt++有时SysRq不想B工作。

(此外,我首先需要养成使用Alt++的习惯。我认为使用SysRq++没有多大意义,因为如果无论如何都要重新启动并重置,键盘模式为什么重要?)EIAltSysRqR

相关内容