Que códigos de chave numérica devo enviar para a funcionalidade do magic sysrq em uma sessão VNC?

4

Eu tenho acesso ao console do sistema de um convidado do KVM por meio do VNC. Quais códigos chave eu preciso enviar para a sequência do magic sysrq ( Ctrl + Alt + "REISUB") no Linux?

Edit: No Linux em qemu , executando showkey e o comando sendkey alt-sysrq-h no monitor QEMU revela códigos de teclas 99 ( SysRq ?), 56 ( Alt ) e 35 ( H ). Usando o comando Enviar Chave Personalizada do UltraVNC Viewer, nenhum desses códigos numéricos saiu corretamente quando inserido e visto através de showkey .

    
por user314104 15.12.2013 / 23:55

2 respostas

1

Sim, isso é possível, pelo menos no NoVNC com convidado baseado no KVM. O truque é entender que o VNC foi construído para o X11. Assim, no fio, os códigos de teclas que você precisa enviar são aqueles usados internamente pelo X11.

Neste caso de uso específico, isso é:

0xffe9 --> alt
0xff15 --> sysrq
0x0062 --> b

Fontes

por 04.05.2015 / 22:56
5

A documentação para sysrq está no código-fonte do Linux ( link ) . Recomendo vivamente que o leia.

A chave do SysRq está ativada?

Primeiro, assegure-se de que o uso da chave mágica SysRq esteja ativado:

$ cat /proc/sys/kernel/sysrq
1

Se ele diz que 0 , então SysRq está desabilitado. Você pode ativá-lo com:

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

E será efetivo imediatamente. Há implicações de segurança em ativar a chave mágica e há alguma boa documentação no site do TLDP .

Baseado em alguns layouts de teclado encontrados na wikipedia . Você pode tentar a combinação envolvendo PrtScr / Imprimir Tela .

No meu sistema: Alt + PrtScr + "OTHER". Esta é a mesma sequência descrita neste artigo da Wikipedia .

Obtendo o código-chave do SysRq:

Você pode executar showkey para escanear códigos de teclas / obter scancodes:

$ showkey -s
0x38                 - i'm pressing Alt
0xb8                 - releasing Alt
0xe0 0x2a 0xe0 0x37  - print screen
0xe0 0xaa 0xe0 0xb7  - release print screen
0x38                 - i'm pressing Alt
0x54                 - i'm also pressing print screen
0x23                 - letter H
0xa3                 - bye bye letter H
0xd4                 - releasing print screen
0xb8                 - releasing Alt

0x54 = 84 seria o Alt + PrtScr que se torna SysRq .

Vamos confirmar que:

$ getkeycodes 
Plain scancodes xx (hex) versus keycodes (dec)
for 1-83 (0x01-0x53) scancode equals keycode

 0x50:   80  81  82  83  99   0  86  87
 0x58:   88 117   0   0  95 183 184 185
 0x60:    0   0   0   0   0   0   0   0
 0x68:    0   0   0   0   0   0   0   0
...

Meu sistema mapeia esse código para 0x54 para keycode 99 , que é KEY_SYSRQ . Verificação dupla:

# rpm -ql kernel-headers | grep input.h | xargs grep KEY_SYSRQ
/usr/include/linux/input.h:#define KEY_SYSRQ        99

Combinações úteis SysRq:

  • Alt + PrtScr + D - esta é uma combinação ruim para o meu sistema e me dá a ajuda

    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-tasks(N)
    powerOff show-registers(P) show-all-timers(Q) unRaw Sync show-task-states(T)
    Unmount show-blocked-tasks(W) dump-ftrace-buffer(Z)
    
  • Alt + PrtScr + H - pressionamento de tecla da ajuda real

    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-tasks(N)
    powerOff show-registers(P) show-all-timers(Q) unRaw Sync show-task-states(T)
    Unmount show-blocked-tasks(W) dump-ftrace-buffer(Z)
    
  • Alt + PrtScr + B - reboot
  • Alt + PrtScr + C - travar o sistema (com crashdump)
  • Alt + PrtScr + E - SIGTERM todas as tarefas, exceto init
  • Alt + PrtScr + F - chame o assassino de OOM
  • Alt + PrtScr + M - gera a memória / troca de estatísticas
  • Alt + PrtScr + O - desligar
  • Alt + PrtScr + S - sync todos os sistemas de arquivos montados
  • Alt + PrtScr + U - remonta todos os sistemas de arquivos como somente leitura
  • Alt + PrtScr + T - gera uma lista de tarefas com rastreios
por 18.02.2014 / 20:04