问题描述
有时,我的笔记本电脑卡住了,所以我使用了Alt
+ SysRq
+ REISUB
的魔术组合来执行安全重启。但是,它似乎对我不起作用,因为当我按下B
键完成魔术键命令它简单地说,”resetting…”并没有做任何事情。
所有其他键似乎工作正常,因为它重置键盘布局,杀死所有任务等,但它似乎没有完成重启。
我的印象是我的笔记本电脑应该按照REISUB的顺序按下魔术键后重新启动。
最佳解决思路
Alt + SysRq已被禁用以修复错误。 Magic-SysRq的禁用被认为是一个错误,因此它已经是re-enabled(#1025467)。如果它仍然为您禁用,您可以re-enable:
Ubuntu 12.04及更早版本
编辑文件/etc/sysctl.conf以包含该行
kernel.sysrq=1
Ubuntu 12.10和更新版本
从Ubuntu 12.10开始,可以启用更多fine-grained控件,其中启用了Magic-SysRq功能。只需编辑文件/etc/sysctl.d/10-magic-sysrq.conf即可。
该文件已有详细记录,并告诉您如何启用哪些功能。出于安全目的选择了当前默认值,并且只有在您知道需要时才应更改(出于安全隐患,请参阅#194676)。
次佳解决思路
键盘是这里的问题!
-
有些人不喜欢同时使用4-keys-down而只是停止使用键盘直到你释放一些键盘。
-
发送SysRq信号时,所有键盘都会变为QWERTY布局。这使得很难在具有其他布局的键盘上找到正确的命令。 Wikipedia: SysRq commands显示了一个表格,可以找到适用于常见替代布局的表格。
-
有些
SysRq
在PrtSc
之外的另一个键上用一个功能键保存。在我的笔记本电脑上,这是Fn
+End
。持有Alt
+PrtSc
只有在某些系统进程(窗口管理器?)为我翻译时才有效。在完全崩溃时,只有真正的SysRq
才有效! -
有些只有在您按住正确的
Alt
+PrtSc
(通过硬件)后才会触发SysRq
键。由于与上述相同的原因,左侧Alt-key在这种情况下不起作用。这就是我的USB键盘的工作原理。 -
提示:尝试按
Shift
+Alt
+SysRq
以查看虚拟终端上的’help’输出。这对于查看它是否有效而没有任何伤害是有用的: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任务(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撰写的Credits的原创作品Adam Sulmicki更新由Jeremy M. Dolan更新2001/01/28 10:15:59由Crutcher Dunnavant添加
https://askubuntu.com/a/11194/102029 mneiss提供了LaunchPad的链接。
Contents
什么是sysrq?为什么RESIUB(O)不起作用?
1如何使sysrq按照我想要的方式运行? 1.1什么是神奇的SysRq密钥? 1.2如何启用神奇的SysRq密钥? 1.3如何使用神奇的SysRq键? 1.4什么是’command’键? 1.5好的,那么我可以用它们做什么?
1.6故障排除
1.6.1在initscripts之前挂起运行1.6.2有时SysRq在使用后似乎得到了’stuck’,我该怎么办? 1.6.3我打了SysRq,但似乎什么也没发生,怎么回事? 1.6.4我想将SysRQ键事件添加到模块中,它是如何工作的? 1.6.5结论1.6.6附录注。您可以使用Ctrl
+ F
来使用目录。
什么是SysRq?
它冻结或与limitising磁盘损坏导致系统文件损坏或丢失数据的风险锁定后重新获得使用机器的一个常见公知的,使用的方法是使用Alt
+ SysRq
+ r
然后s
然后e
然后i
然后是u
,然后是b
和/或如果需要(o
)
通过从> = 8.04LTS到当前13.04版本的所有风格,这对于许多人(即我自己和詹姆斯)来说并没有像预期的那样工作。
为什么RESIUB(O)不起作用?
考虑一下在LaunchPad Bug 194676找到的这个错误描述:
Description of the problem:
By default SysRq is enabled by default on Ubuntu desktop systems which is invaluable when a system has locked up and you want to stop it as gently as possible or debug the issue. However many people are surprised that you can also ask it to dump the contents of current memory to the console (or dmesg) albeit only from the keyboard.
openSUSE sets a default bitmask of 176 on its SysRq that by default restricts you to sync, reboot and “remount read-only”. This stops people using sysrq by default to inspect memory which sounds sensible.
Ubuntu开发人员认为需要对此做些什么,考虑到上述观察可能出现的复杂情况,最佳解决方案是默认情况下应用bitmask 176 sysrq创建需要用户输入来设置sysrq。位掩码176仅允许S
,U
,B
进行同步,重新安装分区并重启。阅读完整的错误报告和评论将突出显示可能适用于您的系统的一些选项。
不同硬件,内核,键盘和位掩码的累积影响意味着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密钥?
它是一个’magical’键组合,你可以命中内核将响应它,无论它正在做什么,除非它被完全锁定。
1.2如何启用神奇的SysRq密钥?
sysrq内置于Ubuntu内核中,但在启动时被禁用,默认情况下使用10-magic-sysrq.conf。
要在re-enable启动时,你必须编辑/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调用任何操作(由具有以下管理员privileges-see的用户)。
1.3如何使用神奇的SysRq键?
Ubuntu桌面
按组合键Alt
+ SysRq
+ command key
。
N.B.-有关其他系统和键盘的其他可能的默认设置,请参阅本节和“故障排除”部分中的说明。
可以设置您选择的任何字符:所有体系结构
写一个字符到/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什么是’command’键?
'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程序。)注意。在它的真实形式中,它不是真正的SAK,就像符合c2标准的系统中那样,并且不应该被误认为是这样。
当你无法关闭时,重新b
是好的。注意。一般认为u
安装首先是一个好习惯
当系统挂起时,Crashdump可用于手动触发c
rashdump。注意。内核需要在启用CONFIG_KEXEC的情况下构建!
当您的系统被锁定时,同步很棒,它允许您对磁盘进行s
,并且肯定会减少数据丢失和fscking的可能性。警告在您看到”OK”和”Done”出现在屏幕上之前,尚未进行同步。 (如果内核确实处于冲突状态,您可能无法获得OK或Done消息。
U
安装基本上与S
ync一样有用。
当您的控制台充斥着您不想看到的内核消息时,日志级别0
– 9
非常有用。选择0
将阻止除最紧急的内核消息之外的所有内容消息到达您的控制台。注意。如果syslogd /klogd处于活动状态,它们仍将被记录
T e
rm和k i
ll非常有用,如果你有某种失控过程你无法以任何其他方式杀死,特别是如果它产生其他进程。注意。当遇到错误的内核恐慌做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在使用后似乎得到了’stuck’,我该怎么办?
在键盘两侧点击shift
,alt
和control
,再次点击无效的sysrq序列将解决问题。 (即,类似于alt
+ sysrq
+ z
)。
切换到另一个虚拟控制台(Ctrl
+ Alt
+ Fn1
– Fn6
)然后再返回Ctrl
+ Alt
+ Fn7
也应该有所帮助。
1.6.3我打了SysRq
,但似乎什么也没发生,怎么了?
有些键盘为SysRq
发送的扫描码不同于pre-defined 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),这将从密钥’key’中删除’op_p’指向的密钥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以允许在编辑/proc后尝试应用Alt
+ SysRq
+ B
(或/和O
) /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
相对有趣的info-After观看了2013年BBC节目“Click”和”cyberwarfare”文章的2013年8月真的引起了我的注意。如果您无法观看该节目,该节目也有自己的网站Click。 FAWC
第四种思路
前几天我遇到了这个问题,花了几秒钟才完成工作。我甚至可能完成了两次整个REISUB序列。
此外,请确保您使用的是sysrq密钥(大多数笔记本电脑都需要您按住功能,因此您实际上只需按住4个键)
第五种思路
几年前,我曾经使用Alt
+ SysRq
+ S
,U
,B
,O
重启或关机卡住机器,因为我喜欢你,Alt
+ SysRq
+ B
有时不想工作。
(另外,我需要养成使用Alt
+ SysRq
+ E
,I
的习惯。我没有看到使用Alt
+ SysRq
+ R
的重点,因为键盘模式为什么重新启动并重置它无论如何?)