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


59

有时,笔记本电脑卡住了,所以我使用了Alt+ SysRq+ 的魔术键组合REISUB来安全重启。但是,它似乎对我不起作用,因为当我按该B键完成魔术键命令时,它只是说“正在重置...”而没有执行任何操作。

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

我的印象是,在按REISUB的顺序按完所有魔术键后,笔记本电脑应该重新启动。

Answers:


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


6
不,还没有。它对特立独行,整洁,单调和精确的效果很好。
psusi 2012年

实际上已禁用它来解决错误,但已重新启用它。我更新了答案。我们是否也应该将问题编辑得更笼统一些?
mniess

1
@geezanansa您可以在评论仍然很热的时候对其进行编辑。请避免添加多个连续的注释。另外,SysRq在13.04上为我工作。从来没有在Live DVD上尝试过它,只有在安装之后才可以。因此,我不理解该答案的投票结果,因为这是一个非常短的时间段(请参见错误报告)。;)
gertvdijk

1
@gertvdijk:更新问题时,我提到了etc / sysctl.d / 10-magic-sysrq.conf,其中包括启用所有各个功能所需的所有内容的sysrq参数。回到2010年问这个问题时,实际上是解决方案,因为默认情况下由于错误,“ b”实际上已停用。我将答案更改为更通用,我回答了sysrq完全失灵并且部分失灵的问题。
mniess 2013年

1
@geezanansa,是的,在我发布之后,我认为他们在数量上禁用了它
psusi

31

键盘是这里的问题!

  • 有些人不喜欢同时按下4键,而只是在松开某些键之前不再是键盘。
  • 发送SysRq信号时,所有键盘都变成QWERTY布局。这使得很难在具有其他布局的键盘上找到正确的命令。Wikipedia:SysRq命令显示了一个表格,用于查找常见替代布局的正确布局。
  • 有些人拥有SysRq另一个键,而不是PrtSc按住功能键。在我的笔记本电脑上是Fn+ End。控股Alt+ PrtSc仅在某些系统进程(窗口管理器?),将其翻译为我的作品。完全崩溃时,只有真实的 SysRq作品!
  • SysRq按住 Alt + PrtSc(通过硬件)时,某些仅触发键。由于与上述相同的原因,在这种情况下,左Alt键将不起作用。这就是我的USB键盘的工作方式。
  • 提示:尝试点击Shift+ Alt+ SysRq在虚拟终端上查看“帮助”输出。这对于查看它是否在工作时不会造成任何伤害很有用:

    SysRq:帮助:日志级别(0-9)reBoot崩溃终止所有任务(E)内存已满oom-kill(F)杀死所有任务(I)解冻文件系统(J)saK show-backtrace-all -active-cpus(L)show-memory-usage(M)不错的所有RT-tasks(N)powerOff show-registers(P)show-all-timers(Q)原始同步show-task-states(T)卸载show-blocked-tasks(W)dump-ftrace-buffer(Z)

在所有情况下,我都发现它不起作用,更换键盘可以正常工作,并且表明任何内核设置都没有问题。


2
@geezanansa我已经看到键盘显然无法处理某些4键组合。更换它可以解决问题。真。它可能适用于所有的你的键盘,虽然。如果您不理解投票,那么为什么不解释为什么不呢?
gertvdijk

2
考虑到James确认除B之外的所有sysrq命令均有效。该答案不是我所读问题的答案,因为sysrq B为什么不起作用?对于sysrq来说,键盘不是James或其他许多人的问题。-1
geezanansa

17

属性
https : //fedoraproject.org/wiki/QA/Sysrq#How_do_I_use_the_magic_SysRq_key 基于Mydraal撰写的
Credits 的原始作品, 由Adam Sulmicki 更新,由Jeremy M. Dolan更新2001/01/28 10:15:59 添加由Crutcher Dunnavant撰写



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在运行初始化脚本之前挂起
1.6.2有时SysRq在使用后似乎卡住了,该怎么办?
1.6.3我点击了SysRq,但是似乎什么也没发生,怎么了?
1.6.4我想将SysRQ键事件添加到模块中,它如何工作?
1.6.5结论
1.6.6附录
注释。
您可能会发现使用Ctrl+ F使用目录会有所帮助。

什么是SysRq?

在机器冻结或锁定后重新使用机器,以限制导致系统文件损坏或数据丢失的磁盘损坏风险的一种常见的众所周知的使用方法是,先使用
Alt+ SysRq+ r然后se然后iu然后再然后b和//或根据需要(o

从> = 8.04LTS到当前的13.04版本,许多人(即我和James)在所有版本中均未按预期工作。

为什么RESIUB(O)不起作用?

考虑在LaunchPad错误194676中找到的以下错误描述:

问题描述:
默认情况下,在Ubuntu桌面系统上默认启用SysRq,这在系统锁定且您希望尽可能缓慢地停止它或调试问题时非常有用。但是,许多人感到惊讶的是,即使仅从键盘上,您也可以要求它将当前内存的内容转储到控制台(或dmesg)。
openSUSE在其SysRq上将默认位掩码设置为176,默认情况下会限制您同步,重新引导和“只读挂载”。这会阻止人们默认使用sysrq来检查听起来很明智的内存。

Ubuntu开发人员认为有必要对此做些事情,考虑到上述观察结果可能带来的复杂性,最好的解决方案是默认情况下应用bitmask 176 sysrq,这会产生用户输入以根据需要设置sysrq的需求。位掩码176只允许SUB这是同步,重新装入挂载的分区和重新启动。
阅读完整的错误报告和注释将突出显示一些可能适用于您的系统的选项。

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

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

在13.04桌面amd64 liveDVD和13.04桌面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

NB-请参见本节以及用于其它系统和键盘等可能的默认设置,故障排除部分的注释。

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

将字符写入/ proc / sysrq-trigger:

echo t > /proc/sysrq-trigger

会将T行为设置为“ SysRq
注”。
某些键盘可能没有标有的键SysRq。该SysRq键也被称为Print Screen关键。还有些键盘无法处理被压在同一时间这么多钥匙,所以你可能有更好的运气Alt+ SysRq- SysRq然后按command key再放开一切。有关更多信息,请参阅本指南基于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非常方便。

k当您要确保控制台上没有运行任何木马程序时,Sa (安全访问密钥)很有用。当您尝试登录时,该木马程序可以获取您的密码。它将杀死给定控制台上的所有程序,从而使您确保看到的登录提示实际上是init上的登录提示,而不是某些特洛伊木马程序。其他人认为它很有用(系统注意键),当您要退出不允许您切换控制台的程序时,它很有用。(例如,X或svgalib程序。)
注意。
以其真实形式,它不像c2兼容系统中的那样,是真正的SAK,因此不应将其错误地认为。

重新bOOT当你无法关闭好。
注意。
一般认为先u安装是个好习惯

c当系统挂起时,可以使用Crashdump手动触发rashdump。
注意。
必须在启用CONFIG_KEXEC的情况下构建内核!

当系统被锁定时,同步非常s有用,它可以使磁盘同步,并且肯定会减少数据丢失和fscking的机会。
警告
在屏幕上看到“确定”和“完成”之前,尚未进行同步。(如果内核确实处于冲突状态,则可能永远不会收到OK或Done消息。

Umount基本上与Sync 一样有用。

日志级别0- 9在您的控制台上充满您不想看到的内核消息时很有用。选择0将阻止所有最紧急的内核消息到达控制台。
注意。
如果syslogd / klogd仍然存在,它们仍将被记录

牛逼eRM和K i,如果你有某种失控的过程中,你都无法杀死任何其他方式,特别是如果它的产卵其他进程LL是有用的。
注意。
当遇到严重的内核恐慌时,先执行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以及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模块添加关键事件,它如何工作?

为了向该表注册基本功能,您必须首先包括header 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),它将(如果且仅当)当前已在键“ key”中注册时将从“ op_p”指向的键op中删除。插槽。这是因为自您注册以来插槽已被覆盖。

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,然后UB同步,尝试重新安装所有已挂载的文件系统,然后根据需要重新启动。无需更改系统文件。
如果Alt+ SysRq+ B不重新启动系统,可能需要编辑/etc/sysctl.d/10-magic-sysrq.conf为了让应用的尝试Alt+ SysRq+ B(或/和O编辑后的/ proc / sys目录/内核/ sysrq位掩码,可通过使用sysrq来重新引导和关闭系统,您可以通过上述任何一种方法来执行此操作。

1.6.6附录: 另请参见-http://ubuntuforums.org/showthread.php?t = 617349https://www.kernel.org/doc/Documentation/sysrq.txt

对于那些与sysrq有关的Apple MacBook键盘故障的人,请参阅:https ://help.ubuntu.com/community/AppleKeyboard 和https://bugs.launchpad.net/mactel-support/+bug/262408

相对有趣的信息- 在观看了2013年8月17日的BBC节目“点击”和“网络战争”文章后,我的注意力引起了我的注意。该程序还具有自己的网站如果您不能观看该程序,请单击。一汽世界


2
特别是,我刚刚在完全更新的Quantal i386系统上测试了Al + SysRq + REISUB,并且工作正常。您确定链接的安全错误或此答案中有关安全性讨论的任何部分确实与问题有关吗?如果是这样,是否应该在此答案中首先出现该问题的足够普遍的原因?
伊利亚·卡根

由于在启动时应用了位掩码176,因此全套sysrq命令不可用,因此安全性问题非常重要。如错误报告所描述。
geezanansa

3

前几天,我遇到了这个问题,花了几秒钟来工作。我什至可能已经完成了整个REISUB序列两次。

另外,请确保您使用的是sysrq键(大多数笔记本电脑都需要按下功能键,因此您实际上一次按下了4个键)


感谢您的答复,斯科特。我确实确实必须按住alt和sysrq的功能键(fn)。一旦我按了最后一个B键以完成REISUB序列,笔记本电脑在显示后似乎就锁定了:重置再次执行魔术键序列不会执行任何操作,此后屏幕上也不会显示任何内容。因此,当它打算重新启动时,似乎系统已锁定。
James White

3

几年前,我曾经使用Alt+ SysRq+ SUBO重启或关机卡住机器,因为我喜欢你,Alt+ SysRq+ B有时候不想工作。

(另外,我要养成使用习惯Alt+ SysRq+ EI第一,我不认为使用多点Alt+ SysRq+ R,因为为什么键盘模式问题,如果它要重新启动,反正复位吗?)


1
为什么键盘模式无论如何都要重启并重设,都很重要?因为它可以将输入功能还给键盘?这可能意味着您不需要重新启动或关闭电源
geezanansa 2013年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.