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 -s
para encontrar la secuencia de código de escaneo adecuada. Luego use setkeycodes <sequence> 84
para 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 showkey
al 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