Alt + sysrq + REISUB不会重新启动我的笔记本电脑

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

所有其他键似乎工作正常,因为它重置键盘布局,杀死所有任务等,但它似乎没有完成重启。

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

Alt + SysRq已被禁用以修复错误。 Magic-SysRq的禁用本身被认为是一个错误,并且已经重新启用( #1025467 )。 如果仍然禁用它,您可以重新启用它:

Ubuntu 12.04及更早版本

编辑文件/etc/sysctl.conf以包含该行

kernel.sysrq=1 

Ubuntu 12.10和更新版本

从Ubuntu 12.10开始,可以更精细地控制Magic-SysRqfunction。 只需编辑文件/etc/sysctl.d/10-magic-sysrq.conf即可

该文件已有详细记录,并告诉您如何启用哪些function。 出于安全目的选择了当前默认值,并且只有在您知道需要时才应更改(出于安全隐患,请参阅#194676 )。

键盘是这里的问题!

  • 有些人不喜欢同时关闭4键,只是在释放一些键盘之前不再使用键盘。
  • 发送SysRq信号时,所有键盘都会变为QWERTY布局。 这使得很难在具有其他布局的键盘上找到正确的命令。 维基百科:SysRq命令显示了一个表,可以找到适用于常见替代布局的表。
  • 有些人使用另一个键而不是PrtSc上的SysRq来保持function键。 在我的笔记本电脑上,这是Fn + End 。 只有在某些系统进程(窗口管理器?)为我翻译它时,才能按住Alt + PrtSc 。 在完全崩溃时,只有真正的 SysRq才有效!
  • 有些只有在您按住 Alt + PrtSc (通过硬件)时才会触发SysRq键。 由于与上述相同的原因,左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)解冻文件系统(J)saK show-backtrace-all -active-cpus(L)show-memory-usage(M)nice-all-RT-tasks(N)powerOff show-registers(P)show-all-timers(Q)unRaw Sync show-task-states(T)卸载show-blocked-tasks(W)dump-ftrace-buffer(Z)

在所有情况下,我遇到它都没有用,交换键盘工作得很好,并表明任何内核设置都没有错。

归因
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/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然后是然后是然后b和/或如果需要的话( o

通过从= = 8.04LTS到当前13.04版本的所有口味,这对许多人(即我自己和詹姆斯)的预期效果并不如预期。

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

考虑在LaunchPad Bug 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的所有function:

 # 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 + 命令键

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

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

写一个字符到/ proc / sysrq-trigger:

 echo t > /proc/sysrq-trigger 

T设置为SysRq
注意。
某些键盘可能没有标记为SysRq的键。 SysRq键也称为Print Screen键。 还有一些键盘无法处理同时按下这么多键,所以你可能会有更好的运气使用Alt + SysRqSysRq然后按下命令键然后释放所有内容。 有关此问题的详细信息,请参阅本指南基于https://fedoraproject.org/wiki/QA/Sysrq#How_do_I_use_the_magic_SysRq_key.3F的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好的,那么我可以用它们做什么?

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

当您想要确保在控制台上没有运行木马程序时,可以使用Sa k (安全访问密钥),当您尝试登录时可以获取密码。 它将杀死给定控制台上的所有程序,从而让您确保您看到的登录提示实际上是来自init的登录提示,而不是某些木马程序。 其他人认为它很有用(系统注意键),当你想要退出一个不允许你切换控制台的程序时,这很有用。 (例如,X或svgalib程序。)
注意。
在它的真实forms中,它不是真正的SAK,就像符合c2标准的系统中那样,并且不应该被误认为是这样。

当你无法关闭时,重新开始是好的。
注意。
一般认为首先安装好的做法

Crashdump可用于在系统挂起时手动触发c rashdump。
注意。
内核需要在启用CONFIG_KEXEC的情况下构建!

当您的系统被锁定时,同步很棒,它允许您查看磁盘,并且肯定会减少数据丢失和丢失的可能性。
警告
直到您看到屏幕上出现“确定”和“完成”,才会进行同步。 (如果内核确实处于冲突状态,您可能无法获得OK或Done消息。

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之前挂起来运行

如果机器在initscripts运行之前挂起,则使用sysrq_always_enabled=1启动

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

点击键盘两侧的shiftaltcontrol ,再次点击无效的sysrq序列将解决问题。 (比如alt + sysrq + z )。

切换到另一个虚拟控制台( Ctrl + Alt + Fn1Fn6 )然后再返回Ctrl + Alt + Fn7也应该有所帮助。

1.6.3我打了SysRq ,但似乎什么也没发生,怎么回事?

有些键盘为SysRq发送的扫描码不同于预定义的0x54。 因此,如果SysRq对于某个键盘没有开箱即用,请运行showkey -s以找出正确的扫描码序列。 然后使用setkeycodes 84将此序列定义为通常的SysRq代码(84为十进制为0x54)。 最好将此命令放在启动脚本中。
警告
您不输入任何内容十秒钟退出showkey

1.6.4我想将SysRq键事件添加到模块中,它是如何工作的?

为了在表中注册基本function,必须首先包含头文件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,当且仅当它在当前注册时才插槽。 这是因为您注册后插槽已被覆盖。

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位掩码,通过使用sysrq启用系统重启和关闭。您可以通过上述任何方法执行此操作。

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

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

相关有趣的信息 – 看完英国广播公司节目“点击”的 17 08 2013年和“网络战”文章真的引起了我的注意。 该程序也有自己的网站点击,如果你不能观看该节目。 FAWC

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

此外,请确保您使用的是sysrq密钥(大多数笔记本电脑都需要您按住function,因此您实际上只需按住4个键)

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

(另外,我需要养成使用Alt + SysRq + E的习惯, 首先。我没有看到使用Alt + SysRq + R的重点 ,因为键盘模式为什么重新启动并重置它无论如何?)