Alt + sysrq + REISUB no reinicia mi computadora portátil


59

En ocasiones, mi computadora portátil se ha atascado, así que he usado la combinación de teclas mágicas de Alt+ SysRq+ REISUBpara realizar un reinicio seguro. Sin embargo, no parece funcionar para mí, ya que cuando presiono la Btecla para completar el comando de la tecla mágica simplemente dice "reiniciando ..." y no hace nada.

Todas las otras teclas parecen funcionar bien, ya que restablece la distribución del teclado, elimina todas las tareas, etc., pero no parece completarse con un reinicio.

Tenía la impresión de que mi computadora portátil debería reiniciarse después de haber presionado todas las teclas mágicas en el orden de REISUB.

Respuestas:


58

Alt + SysRq se ha deshabilitado para corregir un error. La desactivación de Magic-SysRq se consideró un error en sí mismo y desde entonces se ha vuelto a habilitar ( # 1025467 ). Si aún está deshabilitado para usted, puede volver a habilitarlo:

Ubuntu 12.04 y anterior

Edite el archivo /etc/sysctl.conf para incluir la línea

kernel.sysrq=1

Ubuntu 12.10 y más reciente

A partir de Ubuntu 12.10, es posible un control más detallado de las funciones Magic-SysRq habilitadas. Simplemente edite el archivo /etc/sysctl.d/10-magic-sysrq.conf .

El archivo está bien documentado y le dice exactamente cómo habilitar qué características. El valor predeterminado actual se seleccionó por motivos de seguridad y solo debe cambiarse si sabe por qué lo necesita (para conocer las implicaciones de seguridad, consulte el # 194676 ).


66
No, no lo ha hecho. Funciona bien en disidente, natural, onírico y preciso.
psusi

En realidad, se desactivó para resolver un error, pero se ha vuelto a habilitar. Actualicé la respuesta. ¿Deberíamos también editar la pregunta para que sea un poco más general?
mniess

1
@geezanansa Puedes editar tus comentarios mientras aún están calientes. Evite agregar múltiples comentarios consecutivos. Además, SysRq funciona para mí el 13.04. Nunca lo probé en un DVD en vivo, solo después de la instalación. Por lo tanto, no entiendo los votos a favor de esta respuesta porque se trata de un período de tiempo muy corto (ver el informe de error). ;)
gertvdijk

1
@gertvdijk: cuando actualicé la pregunta que mencioné, etc / sysctl.d / 10-magic-sysrq.conf que incluye los parámetros sysrq para todo lo que necesita para habilitar todas las funciones respectivas. Cuando se hizo la pregunta (en 2010), en realidad era la solución porque "b" estaba desactivada por defecto debido a un error. Cambié la respuesta para que fuera más general a propósito, contesto la pregunta de que sysrq es completamente disfuncional y también parcialmente disfuncional.
mniess

1
@geezanansa, sí, creo que lo deshabilitaron en quantal, después de que
publiqué

31

¡Los teclados son el problema aquí!

  • A algunos simplemente no les gusta presionar las 4 teclas al mismo tiempo y simplemente dejan de ser un teclado hasta que sueltas algunos.
  • Todos los teclados se convierten en diseño QWERTY cuando envía la señal SysRq. Esto hace que sea difícil encontrar los comandos correctos en teclados con otro diseño. Wikipedia: los comandos SysRq muestran una tabla para encontrar los correctos para diseños alternativos comunes.
  • Algunos tienen SysRqotra tecla que PrtScmantener presionada una tecla de función. En mi computadora portátil esto es Fn+ End. Mantener Alt+ PrtScsolo funciona si algún proceso del sistema (¿administrador de ventanas?) Lo traduce para mí. En caso de choque total, ¡solo lo real SysRq funciona!
  • Algunos único desencadenante SysRqclave una vez que mantenga el derecho Alt + PrtSc(por hardware). La tecla Alt izquierda no funcionará en ese caso, por el mismo motivo que el anterior. Así es como funciona mi teclado USB.
  • Consejo: intente presionar Shift+ Alt+ SysRqpara ver una salida de 'ayuda' en un terminal virtual. Esto es útil para ver si funciona sin causar ningún daño:

    SysRq: AYUDA: loglevel (0-9) reBoot Crash terminate-all-task (E) memory-full-oom-kill (F) kill-all-task (I) thaw-filesystems (J) saK show-backtrace-all -active-cpus (L) show-memory-use (M) nice-all-RT-tareas (N) powerOff show-records (P) show-all-timers (Q) unRaw Sync show-task-states (T) Desmontar show-bloqueado-tareas (W) dump-ftrace-buffer (Z)

En todos los casos que he encontrado, no funcionó, el intercambio del teclado funcionó perfectamente y mostró que no había nada malo en la configuración del kernel.


2
@geezanansa He visto el teclado claramente incapaz de manejar ciertas combinaciones de 4 teclas. Reemplazarlo resolvió el problema. De Verdad. Sin embargo, puede funcionar para todos sus teclados. Y si no comprende los votos a favor, ¿por qué no explica por qué no?
gertvdijk

2
Teniendo en cuenta que James confirma que todos los comandos sysrq funcionan con la excepción de B. Esta respuesta no es una respuesta a la pregunta que leí como ¿Por qué sysrq B no funciona? El teclado no es el problema para James ni para muchos otros con respecto a sysrq. -1
geezanansa

17

ATRIBUCIONES :
https://fedoraproject.org/wiki/QA/Sysrq#How_do_I_use_the_magic_SysRq_key que se basó en el trabajo original de
Créditos
Escrito por Mydraal
Actualizado por Adam Sulmicki
Actualizado por Jeremy M. Dolan 2001/01/28 10:15:59
Agregado por Crutcher Dunnavant

https://askubuntu.com/a/11194/102029 mneiss proporcionó enlaces para LaunchPad.

Contenido

¿Qué es sysrq?
¿Por qué RESIUB (O) no funciona?

1 ¿Cómo consigo que sysrq se comporte como yo quiero?
1.1 ¿Cuál es la clave mágica SysRq?
1.2 ¿Cómo habilito la clave mágica SysRq?
1.3 ¿Cómo uso la tecla mágica SysRq?
1.4 ¿Qué son las teclas de 'comando'?
1.5 Bien, ¿para qué puedo usarlos?

1.6 Solucionar problemas

1.6.1 Bloqueo antes de ejecutar initscripts
1.6.2 A veces, SysRq parece quedar atascado después de usarlo, ¿qué puedo hacer?
1.6.3 Golpeé SysRq, pero parece que no pasa nada, ¿qué pasa?
1.6.4 Quiero agregar eventos clave SysRQ a un módulo, ¿cómo funciona?
1.6.5 Conclusión
1.6.6 APÉNDICE
Nota.
Puede resultarle útil usar Ctrl+ Fpara usar la Tabla de contenido.

¿Qué es SysRq?

Un método común bien conocido y usado para recuperar el uso de la máquina después de que se congele o bloquee, limitando el riesgo de corrupción del disco que conduzca a daños en el archivo del sistema o pérdida de datos es usar
Alt+ SysRq+ ry luego sy luego ey luego iy luego uy luego by / o si es necesario ( o)

Esto no ha funcionado como se esperaba para muchos (es decir, James y yo) en todos los sabores desde> = 8.04LTS hasta la versión actual 13.04.

¿Por qué RESIUB (O) no funciona?

Considere esta descripción de error que se encuentra en LaunchPad Bug 194676 :

Descripción del problema: de manera
predeterminada, SysRq está habilitado de manera predeterminada en los sistemas de escritorio de Ubuntu, lo cual es invaluable cuando un sistema se ha bloqueado y desea detenerlo lo más suavemente posible o depurar el problema. Sin embargo, muchas personas se sorprenden de que también pueda pedirle que descargue el contenido de la memoria actual en la consola (o dmesg) aunque solo desde el teclado.
openSUSE establece una máscara de bits predeterminada de 176 en su SysRq que, de manera predeterminada, le restringe a sincronizar, reiniciar y "volver a montar solo lectura". Esto impide que las personas usen sysrq de manera predeterminada para inspeccionar la memoria, que suena razonable.

Los desarrolladores de Ubuntu vieron la necesidad de hacer algo al respecto y la mejor solución teniendo en cuenta las posibles complicaciones de la observación mencionada es aplicar bitmask 176 sysrq de forma predeterminada, creando la necesidad de la entrada del usuario para configurar sysrq como lo deseen. Máscara de bits 176 sólo permite S, U, Bque es de sincronización, particiones montadas Vuelva a montar y reiniciar el sistema.
Al leer el informe completo de errores y los comentarios, se resaltarán algunas opciones que pueden ser aplicables a su sistema.

El efecto acumulativo de diferentes hardware, núcleos, teclados y máscaras de bits significa que sysrq se comporta de manera diferente para diferentes personas.

Un método para obtener la salida txt con respecto a cómo su sistema usa sysrq es aplicar los comandos sysrq desde tty (cuando el sistema no sufre bloqueos / bloqueos). Hacer esto puede indicar que sysrq no se ha deshabilitado por completo, pero está usando la máscara de bits 176.

La búsqueda de / proc / sys / kernel / sysrq en un 13.04 Desktop amd64 liveDVD y una instalación de 13.04 Desktop amd64 confirma que el valor predeterminado actualmente es dejar sysrq en bitmask 176.

Si sysrq funciona para usted; puede valer la pena preguntar: "Si no cambié la configuración de 10-magic-sysrq, ¿quién lo hizo?"

1 ¿Cómo consigo que sysrq se comporte como yo quiero?

Lo que sigue es una copia editada y pegada de https://fedoraproject.org/wiki/QA/Sysrq .

1.1 ¿Cuál es la clave mágica SysRq?

Es una combinación de teclas 'mágicas' a las que puede acceder y que el núcleo responderá independientemente de cualquier otra cosa que esté haciendo, a menos que esté completamente bloqueado.

1.2 ¿Cómo habilito la clave mágica SysRq?

sysrq está integrado en el kernel de Ubuntu pero está deshabilitado en el momento del arranque, de manera predeterminada, usando 10-magic-sysrq.conf.

Para volver a habilitarlo en el momento del arranque, debe editar el archivo /etc/sysctl.d/10-magic-sysrq.conf. es decir, descomentar esta línea habilitará todas las funciones de sysrq:

#   1 - enable all functions of sysrq

Cuando se ejecuta un kernel con SysRq compilado, / proc / sys / kernel / sysrq controla las funciones que se pueden invocar mediante la tecla SysRq. Aquí está la lista de posibles valores en / 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 

Puede establecer el valor en el archivo con el siguiente comando.

echo "number" >/proc/sys/kernel/sysrq

Entonces, para habilitarlo por completo sería.

echo "1" > /proc/sys/kernel/sysrq

O también puede habilitarlo haciendo.

sysctl -w kernel.sysrq=1  

Nota.
El valor de / proc / sys / kernel / sysrq influye solo en la invocación a través de un teclado. La invocación de cualquier operación a través de / proc / sysrq-trigger siempre está permitida (por un usuario con privilegios de administrador, ver más abajo).

1.3 ¿Cómo uso la tecla mágica SysRq?

Escritorio de Ubuntu

Presiona la tecla combo Alt+ SysRq+ command key.

NB: consulte las notas en esta sección y en la sección Solución de problemas para conocer otras posibles configuraciones predeterminadas para otros sistemas y teclados.

Es posible establecer cualquier carácter de su elección: Todas las arquitecturas

Escriba un carácter en / proc / sysrq-trigger:

echo t > /proc/sysrq-trigger

establecería el Tcomportamiento como SysRq
Nota.
Algunos teclados pueden no tener una tecla etiquetada SysRq. La SysRqclave también se conoce como la Print Screenclave. Además, algunos teclados no pueden manejar tantas teclas presionadas al mismo tiempo, por lo que puede tener mejor suerte con Alt+ SysRq, SysRqluego presione y command keyluego suelte todo. Consulte la redacción completa de QA en la que se basa esta guía en https://fedoraproject.org/wiki/QA/Sysrq#How_do_I_use_the_magic_SysRq_key.3F para obtener más información al respecto.

1.4 ¿Qué son las teclas de 'comando'?

'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.  

Nota.
Vea los comentarios importantes a continuación en la sección 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 Bien, ¿para qué puedo usarlos?

Un raw es muy útil cuando su servidor X o un programa svgalib falla.

Sa k(Clave de acceso seguro) es útil cuando desea asegurarse de que no haya ningún programa troyano ejecutándose en la consola que pueda obtener su contraseña cuando intente iniciar sesión. Eliminará todos los programas en una consola determinada, lo que le permite asegurarse de que el mensaje de inicio de sesión que ve es realmente el de init, no algún programa troyano. Otros lo encuentran útil como (Clave de atención del sistema), que es útil cuando desea salir de un programa que no le permitirá cambiar de consola. (Por ejemplo, X o un programa svgalib)
. Nota.
En su forma verdadera, no es un SAK verdadero como el de un sistema compatible con c2, y no debe confundirse como tal.

El breinicio es bueno cuando no puede apagarlo.
Nota.
En general se considera una buena práctica umontar primero

Crashdump se puede usar para activar manualmente un crashdump cuando el sistema está colgado.
Nota.
¡El núcleo debe haber sido construido con CONFIG_KEXEC habilitado!

La sincronización es excelente cuando su sistema está bloqueado, le permite ssincronizar sus discos y ciertamente disminuirá la posibilidad de pérdida de datos y fscking.
Advertencia
La sincronización no se ha llevado a cabo hasta que aparezca "Aceptar" y "Listo" en la pantalla. (Si el núcleo está realmente en conflicto, es posible que nunca reciba el mensaje Aceptar o Listo.

Umount es básicamente útil de la misma manera que Sync.

Los niveles de registro 0: 9son útiles cuando su consola se inunda con mensajes del núcleo que no desea ver. Seleccionar 0evitará que todos los mensajes del núcleo, excepto los más urgentes, lleguen a su consola.
Nota.
Todavía se registrarán si syslogd / klogd están vivos

T erm y k ill son útiles si tienes algún tipo de proceso desbocado que no puedes matar de ninguna otra manera, especialmente si está generando otros procesos.
Nota.
Cuando experimente un pánico de kernel malo, haga Alt+ Sysrq+ eluego Alt+ Sysrq+ uluego Alt+ Sysrq+ iy finalmente Alt+ Sysrq+b

1.6 Solucionar problemas

1.6.1 Colgar antes de ejecutar initscripts

Si la máquina se cuelga antes de que se ejecuten los initscripts, inicie con sysrq_always_enabled=1

1.6.2 A veces, SysRq parece quedar atascado después de usarlo, ¿qué puedo hacer?

Al tocar shift, alty controlen ambos lados del teclado, y presionar una secuencia sysrq inválida nuevamente se solucionará el problema. (es decir, algo así como alt+ sysrq+ z).

Cambiar a otra consola virtual ( Ctrl+ Alt+ Fn1- Fn6) y luego volver de nuevo Ctrl+ Alt+ Fn7también debería ayudar.

1.6.3 Golpeé SysRq, pero parece que no pasa nada, ¿qué pasa?

Hay algunos teclados que envían códigos de escaneo diferentes SysRqal 0x54 predefinido. Entonces, si SysRqno funciona fuera de la caja para un cierto teclado, ejecute showkey -spara encontrar la secuencia de código de escaneo adecuada. Luego use setkeycodes <sequence> 84para definir esta secuencia al SysRqcódigo usual (84 es decimal para 0x54). Probablemente sea mejor poner este comando en un script de arranque.
Advertencia
Sale showkeyal no escribir nada durante diez segundos.

1.6.4 Quiero agregar SysRqeventos clave a un módulo, ¿cómo funciona?

Para registrar una función básica con la tabla, primero debe incluir el encabezado include/linux/sysrq.h, esto definirá todo lo que necesita. A continuación, debe crear una estructura sysrq_key_op y llenarla con ...

  • La función del controlador de teclas que usará.

  • Una cadena help_msg, que se imprimirá cuando SysRQ imprima ayuda

  • Una cadena action_msg, que se imprimirá justo antes de que se llame a su controlador. Su controlador debe cumplir con el prototipo en 'sysrq.h'

Después de crear sysrq_key_op, puede llamar a la función del núcleo register_sysrq_key (int key, struct sysrq_key_op * op_p); esto registrará la operación a la que apunta 'op_p' en la clave de tabla 'clave', si esa ranura en la tabla está en blanco. En el momento de la descarga del módulo, debe llamar a la función unregister_sysrq_key (int key, struct sysrq_key_op * op_p), que eliminará la clave op apuntada por 'op_p' de la clave 'key', si y solo si está registrada actualmente en ese espacio. Esto es en caso de que se haya sobrescrito el espacio desde que lo registró.

El SysRqsistema Magic funciona registrando las operaciones clave en una tabla de búsqueda de operaciones clave, que se define en 'drivers / char / sysrq.c'. Esta tabla de claves tiene varias operaciones registradas en el momento de la compilación, pero es mutable, y se exportan 2 funciones para la interfaz con ella: register_sysrq_key y unregister_sysrq_key. Por supuesto, nunca deje un puntero no válido en la tabla. es decir; cuando su módulo que llamó a register_sysrq_key () salga, debe llamar a unregister_sysrq_key () para limpiar la entrada de la tabla de claves sysrq que utilizó.
Nota.
Los punteros nulos en la tabla siempre son seguros.

Si por alguna razón siente la necesidad de llamar a la función handle_sysrq desde una función llamada por handle_sysrq, debe tener en cuenta que está en un bloqueo (¡también está en un controlador de interrupciones, lo que significa que no duerma!), Entonces debes llamar a __handle_sysrq_nolock en su lugar.

1.6.5 Conclusión

Use Alt+ SysRq+ Sy luego Uy luego Bpara sincronizar, intente volver a montar todos los sistemas de archivos montados y luego reinicie si es necesario. Sin cambiar nada a los archivos del sistema.
Si Alt+ SysRq+ Bno reinicia el sistema, puede ser necesario editar /etc/sysctl.d/10-magic-sysrq.conf para permitir el intento de aplicar Alt+ SysRq+ B(o / y Odespués de editar / proc / sys / kernel / sysrq bitmask para habilitar el reinicio y el apagado del sistema mediante el uso de sysrq. Puede hacerlo mediante cualquiera de los métodos descritos anteriormente.

1.6.6 APÉNDICE: Véase también: http://ubuntuforums.org/showthread.php?t=617349 y https://www.kernel.org/doc/Documentation/sysrq.txt

Para aquellos con problemas de teclado Apple MacBook con respecto a sysrq, consulte: https://help.ubuntu.com/community/AppleKeyboard y https://bugs.launchpad.net/mactel-support/+bug/262408

Información relativamente interesante: después de ver el episodio 17 08 2013 del programa de la BBC "Click" y el artículo de "guerra cibernética" realmente me llamó la atención. El programa también tiene su propio sitio web Haga clic si no puede ver el programa. FAWC


2
En particular, acabo de probar Al + SysRq + REISUB en un sistema Quantal i386 completamente actualizado y funciona bien. ¿Está seguro de que el error de seguridad vinculado, o cualquier parte de la discusión de seguridad en esta respuesta, está realmente relacionado con el problema? Si es así, ¿es una causa suficientemente común del problema que debería aparecer primero en esta respuesta?
Eliah Kagan

El problema de seguridad es importante ya que el conjunto completo de comandos sysrq no está disponible debido a que se aplica la máscara de bits 176 en el momento del arranque; como describe el informe de error.
geezanansa

3

Me encontré con esto el otro día y tardé unos segundos en funcionar. Incluso podría haber hecho toda la secuencia REISUB dos veces.

Además, asegúrese de estar usando la tecla sysrq (la mayoría de las computadoras portátiles requerirán que mantenga presionada la función, por lo que realmente está presionando 4 teclas a la vez)


Gracias por tu respuesta Scott. De hecho, tengo que mantener presionada la tecla de función (fn) junto con alt y sysrq. Una vez que presiono la tecla B final para terminar la secuencia REISUB, mi computadora portátil parece bloquearse después de que aparece: Restablecimiento Al volver a pasar por la secuencia de teclas mágicas no hace nada, ni se muestra nada en la pantalla después. Por lo tanto, parece que el sistema se bloquea cuando debe reiniciarse.
James White el

3

Hace algunos años solía usar Alt+ SysRq+ S, U, B, Oreiniciar o apagar una máquina de pegado, porque al igual que para ti, Alt+ SysRq+ Ba veces no quieren trabajar.

(También, tengo que entrar en el hábito de usar Alt+ SysRq+ E, Ien primer lugar. No veo mucho sentido de utilizar Alt+ SysRq+ R, ya que por qué es importante el modo de teclado si se va a reiniciar y restablecer todos modos?)


1
¿Por qué importa el modo de teclado si se va a reiniciar y restablecer de todos modos? ¿Porque devuelve la capacidad de entrada al teclado? lo que podría significar que no necesita reiniciar o apagar
geezanansa
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.