Por que essa sequência de chaves, usando o SyRq, não funciona?

2

Eu tenho o Fedora 20, com o desktop zshell e Mate. Acabei de encontrar este artigo sobre o uso de chaves SysRq , mas eles não fornecem os resultados mostrados lá. Eu estou usando Alt com a chave marcada "Home" com "Print Scr" acima como a combinação de teclas SysRq.

Eu também tentei segurar a tecla "FN" amarela também, mas isso não fez diferença.

Como a sequência "Reiniciar mesmo se o sistema estiver totalmente quebrado" parece muito útil, por favor, gostaria de saber o que estou fazendo errado.

    
por Harry Weston 10.10.2014 / 17:53

2 respostas

2

Normalmente, quando você pressiona um botão, o teclado gera um único código de tecla. O SO recebe códigos de teclas, aplica algum mapeamento de chaves e tenta manipular combinações de teclas independentemente do hardware subjacente.

O mecanismo do SysRq é um pouco diferente: O teclado captura a combinação e envia um código de tecla especial para o sistema operacional como se o único botão tivesse sido pressionado. O kerenel do Linux captura o código de acesso especial e o manipula internamente sem encaminhar a entrada para aplicativos de nível superior, como o servidor X. Isso implica as duas conseqüências:

  1. A combinação de teclas realmente depende do teclado. O teclado deve capturar a tecla todas as pressões por conta própria e somente o teclado "sabe" onde a chave SysRq atual está localizada e qual combinação dispara o envio do código de tecla especial. Então:

    • O SysRq não está necessariamente localizado no mesmo botão que "Home" ou "Print Screen", tente procurá-lo, geralmente ele está marcado explicitamente como "SysRq".
    • Experimente combinações diferentes: Ctrl+Alt+SysRq+b ou Ctrl+Alt+Fn+SysRq+b , etc (aviso, o sistema será reiniciado com sucesso). Em teclados que têm a chave Fn , você geralmente tem que pressioná-la para alcançar a chave SysRq real, então é provável que sua combinação envolva a chave Fn .
  2. Você realmente pode saber quando acertar a combinação. Executar xev de um terminal, focar a janela xev e apertar alguns botões no teclado, você deverá ver os eventos aparecerem no terminal. Quando você obtém uma combinação correta, você NÃO deve obter um evento porque ele é capturado pelo kernel e não entregue ao servidor X.

Consulte também a documentação: link

    
por 10.10.2014 / 18:32
3

Você provavelmente tem as combinações do SysRq desativadas. Existem algumas coisas que devem ser verdadeiras para que isso funcione:

  • Você deve ter CONFIG_MAGIC_SYSRQ ativado na configuração do seu kernel.
  • Você deve ter o kernel.sysrq sysctl definido como um valor que permita interpretar as combinações do SysRq.

kernel.sysrq é um bitmask para ativar / desativar funções:

  • 0 - Completamente desativado
  • 1 - totalmente ativado
  • 2 - Permitir o controle do nível de log do console
  • 4 - Permitir o controle do teclado
  • 8 - Permitir o controle de despejos de processo
  • 16 - Permitir controlar sync() chamadas
  • 32 - Permitir remontar somente leitura
  • 64 - Permitir sinalização de processo
  • 128 - Permitir alteração do estado de energia do sistema (reinicialização / desligamento / etc)
  • 256 - Permitir tarefas de renegociação em execução em tempo real

Supondo que você deseja ativar todos os recursos do SysRq, você pode definir o valor temporariamente usando a ferramenta sysctl :

sysctl -w kernel.sysrq=1

Para fazer isso permanentemente, adicione a seguinte linha a /etc/sysctl.conf :

kernel.sysrq = 1

Você pode fazer com que o sistema recarregue as configurações em /etc/sysctl.conf , emitindo sysctl -p .

    
por 10.10.2014 / 18:06