Como uso as chaves mágicas do sysreq em um Mac?

8

Eu só recentemente descobri as chaves de solicitação do sistema mágico . Como faço para usá-los a partir do teclado em Macs com um sistema operacional baseado em Linux instalado, ou em outros casos onde o teclado não tem uma chave SysReq ? Existe uma seqüência que é equivalente a meta - SysReq , ou uma maneira de criar uma?

    
por Blacklight Shining 30.09.2013 / 17:58

2 respostas

5

Sem uma chave gerando o mesmo código de verificação, o que você não tem, a única opção é echo <char> > /proc/sysrq-trigger , em que <char> é a chave que você pressionaria com M-SysRq . (Isso obviamente pressupõe que você esteja executando um kernel com a mágica SysRq compilada nele e que tenha feito anteriormente echo 1 > /proc/sys/kernel/sysrq in /etc/rc.local ou similar.)

Se você quer a funcionalidade SysRq mágica real, ao invés da pálida imitação obtida ao ecoar em entradas aleatórias / proc, você vai querer encontrar um teclado USB estilo PC com uma chave SysRq. O Linux interpretará o código de verificação corretamente, não importando em qual arquitetura ele está sendo executado; a parte complicada, nesse caso, está gerando o código de varredura em primeiro lugar, o que não pode ser feito a partir de um teclado Mac padrão.

(Por outro lado, parece provável que um kernel poderia ser compilado para reconhecer um código de varredura diferente, como o da chave de ejeção do Mac, no lugar do SysRq; nunca senti o desejo de fazer downgrade do meu MBP, então não saberia em primeira mão, mas imagino que alguém tenha feito isso. Ou talvez você seja o primeiro; afinal, hackear seu kernel com customização é metade da diversão de rodar o Linux, ou então eu sou capaz de entender.)

Atualização : Aparentemente isso pode ser feito do userspace :

Best way to go currently is to install (manually compile) the keyfuzz program and put

echo "786616 99" | keyfuzz -s -d /dev/input/by-id/usb-Apple_Inc._Apple_Internal_Keyboard___Trackpad-event-kbd

in your /etc/profile for instance. This maps Alt-Eject on a typical Apple Macbook Pro (mine is mid-2010, 6,2), to the Alt-SysRq combination.

Se você está procurando por uma experiência mais antiquada, "Two-Fisted Tales of Linux", existem alguns patches de kernel vinculados a esse thread de comentários, que podem oferecer orientação no remapeamento de códigos de teclas no nível do kernel. .

    
por 30.09.2013 / 18:46
4

Esta resposta também foi publicada aqui .

Após 3 ou 4 horas de pesquisa, leitura e tentativa e erro, aqui está uma resposta mais completa e genérica que deve funcionar para qualquer computador ou teclado Apple / Mac

Muito obrigado ao Bengt Olsson por suas excelentes instruções aqui que me deram o começo necessário para descobrir os detalhes que faltavam.

Esta solução é feita no espaço do usuário e NÃO requer a recompilação do kernel como algumas sugestões.

  1. Faça o download da fonte para o keyfuzz ( link ) e extraia-o (posso corrigir -clique e vá para "Extract Here" para extraí-lo no meu gerenciador de arquivos GUI, por exemplo). Para ler mais sobre o keyfuzz, veja aqui . É lançado sob a licença GNU GPL 2.0 ou mais recente (fonte aberta yaaay!).

    • Não use um diretório muito profundo (ou com espaços possivelmente), senão o comando ./configure abaixo falhará.
  2. Instale dependências, caso contrário, a execução de ./configure abaixo poderá gerar alguns erros:

    sudo apt-get update
    sudo apt-get install lynx xmltoman gengetopt
    
  3. Compile e instale o keyfuzz com os comandos habituais:

    ./configure
    make
    sudo make install
    
  4. Navegue até /dev/input/by-id e encontre o teclado da Apple que termina em "-event-kbd":

    cd /dev/input/by-id
    ls
    
    • For me it's "usb-Apple_Computer_Apple_Internal_Keyboard___Trackpad-event-kbd"
  5. Adicione a seguinte linha ao seu arquivo /etc/rc.local , para fazer com que este comando seja executado toda vez que o seu computador inicializar e carregar este usuário. Observe que estamos usando a entrada de teclado da Apple que acabamos de encontrar acima. Este comando usa keyfuzz para mapear F12 ou F13 no teclado ou laptop da Apple para o sistema " Chave do Magic SysRq " , para reinicializações suaves.

    • Para mapear F12 para SysRq: 458821 99 . Muito obrigado ao "pjjjv" por descobrir isso aqui! link
    • Para mapear F13 para SysRq: 458856 99 .
    • Como meu MacBook 2008 não tem F13, estou usando a opção F12 acima. Lembre-se também de usar sua entrada de teclado apropriada que encontramos acima. O comando que eu adicionei ao rc.local para o meu caso é: echo "458821 99" | keyfuzz -s -d /dev/input/by-id/usb-Apple_Computer_Apple_Internal_Keyboard___Trackpad-event-kbd .
    • Aqui está todo o meu arquivo /etc/rc.local , com a entrada apropriada:
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.

echo "458821 99" | keyfuzz -s -d /dev/input/by-id/usb-Apple_Computer_Apple_Internal_Keyboard___Trackpad-event-kbd

exit 0
  1. Reinicie.

Agora eu posso pressionar Alt + F12 (ou você pode usar Alt + F13 como descrito acima) e emitir o REISUB para reinicializar o seu computador. Funciona perfeitamente no meu laptop MacBook 2008 rodando o Xubuntu 16.04 LTS .

Observe que você pode ver os resultados retornados emitindo o REISUB ao pressionar cada tecla, primeiro pulando para uma sessão alternativa com Ctrl+Alt+F1 (F1 through F6 work actually) antes de emitir o comando. Para voltar à sua sessão principal do X Window, use Ctrl+Alt+F7 .

Se você obtiver um resultado que diz "Esta operação do sysrq está desativada", isso é normal para vários dos comandos, pois eles representam um possível risco à segurança. O Boot ainda deve funcionar, no entanto, permitindo que você reinicie o seu computador. Aqui está mais algumas informações sobre isso, da Mniess aqui :

Starting with Ubuntu 12.10 a more fine-grained control of which Magic- SysRq features are enabled is possible. Just edit the file /etc/sysctl.d/10-magic-sysrq.conf.

The file is well documented and tells you exactly how to enable which features. The current default was picked for security purposes and should only be changed if you know why you need to (for security implications see bug #194676).

    
por 25.03.2017 / 18:02