Alt + sysrq + REISUB não reinicia meu laptop

59

Na ocasião, meu laptop ficou travado, então usei a combinação de teclas mágicas de Alt+ SysRq+ REISUBpara executar uma reinicialização segura. No entanto, parece não funcionar para mim, pois quando pressiono a Btecla para concluir o comando da tecla mágica, ele simplesmente diz "redefinindo ..." e não faz nada.

Todas as outras teclas parecem funcionar bem, pois redefinem o layout do teclado, matam todas as tarefas etc., mas não parecem ser concluídas com uma reinicialização.

Fiquei com a impressão de que meu laptop deveria reiniciar após todas as teclas mágicas terem sido pressionadas na ordem do REISUB.

James White
fonte

Respostas:

58

Alt + SysRq foi desativado para corrigir um erro. A desativação do Magic-SysRq foi considerada um bug e, desde então, foi reativada ( # 1025467 ). Se ainda estiver desativado para você, você pode reativá-lo:

Ubuntu 12.04 e mais antigo

Edite o arquivo /etc/sysctl.conf para incluir a linha

kernel.sysrq=1

Ubuntu 12.10 e mais recente

A partir do Ubuntu 12.10, é possível um controle mais refinado dos recursos do Magic-SysRq ativados. Apenas edite o arquivo /etc/sysctl.d/10-magic-sysrq.conf .

O arquivo está bem documentado e informa exatamente como ativar quais recursos. O padrão atual foi escolhido para fins de segurança e só deve ser alterado se você souber por que precisa (para implicações de segurança, consulte # 194676 ).

mniess
fonte
6
Não, não tem. Funciona muito bem em independente, natty, onírico e preciso.
8133 psusi
Na verdade, ele foi desativado para solucionar um erro, mas foi reativado. Eu atualizei a resposta. Também devemos editar a pergunta para ser um pouco mais geral?
Mniess
11
@geezanansa Você pode editar seus comentários enquanto eles ainda estão quentes. Evite adicionar vários comentários consecutivos. Além disso, o SysRq funciona para mim no 13.04. Nunca tentei em um DVD ao vivo, apenas após a instalação. Portanto, não entendo os votos positivos desta resposta, porque se trata de um período muito curto de tempo (consulte o relatório de erros). ;)
gertvdijk
11
@gertvdijk: Quando atualizei a pergunta, mencionei o etc / sysctl.d / 10-magic-sysrq.conf, que inclui os parâmetros sysrq para tudo o que você precisa para ativar todas as funções respectivas. Quando a pergunta foi feita (em 2010), era na verdade a solução porque "b" foi desativado por padrão devido a um bug. Mudei a resposta para ser mais geral de propósito, respondo à questão do sysrq ser completamente disfuncional e também parcialmente disfuncional.
Mniess
11
@geezanansa, sim, eu acho que eles desactivado em quântica, depois que eu postei que
psusi
31

Os teclados são a questão aqui!

  • Alguns simplesmente não gostam das 4 teclas pressionadas ao mesmo tempo e param de ser um teclado até você soltar alguns.
  • Todos os teclados se transformam em layout QWERTY quando você envia o sinal SysRq. Isso dificulta a localização dos comandos certos nos teclados com outro layout. Wikipedia: Os comandos SysRq mostram uma tabela para encontrar as corretas para layouts alternativos comuns.
  • Alguns têm SysRqoutra tecla que não PrtSca tecla de função. No meu laptop, isso é Fn+ End. Segurar Alt+ PrtScfunciona apenas se algum processo do sistema (gerenciador de janelas?) O traduzir para mim. No acidente total, apenas o verdadeiro SysRq funciona!
  • Algumas somente acionam a SysRqtecla quando você pressiona o botão Alt + PrtSc( certo por hardware). A tecla Alt esquerda não funcionará nesse caso, pelo mesmo motivo acima. É assim que meu teclado USB funciona.
  • Dica: tente pressionar Shift+ Alt+ SysRqpara ver uma saída de 'ajuda' em um terminal virtual. Isso é útil para verificar se está funcionando sem causar nenhum dano:

    SysRq: HELP: loglevel (0-9) reBoot Crash encerra todas as tarefas (E) memória completa oom kill (F) mata todas as tarefas (I) thaw-filesystems (J) saK show-backtrace-all cpus -active (L) show-use-memory-M (M) tarefas agradáveis ​​para RT (N) powerOff show-register (P) show-all-timers (Q) unRaw Sync show-task-states (T) Desmontar show-locked-tasks (W) dump-ftrace-buffer (Z)

Em todos os casos, deparei-me que não funcionava, trocar o teclado funcionava perfeitamente e mostrava que nada estava errado com nenhuma configuração do kernel.

gertvdijk
fonte
2
@geezanansa Vi o teclado claramente incapaz de lidar com certas combinações de 4 teclas. Substituí-lo resolveu o problema. Realmente. Pode funcionar para todos os seus teclados. E se você não entende os votos positivos, por que não explica por que não entende?
gertvdijk
2
Considerando que James confirma que todos os comandos sysrq funcionam com exceção de B. Esta resposta não é uma resposta para a pergunta que li como Por que o sysrq B não funciona? O teclado não é um problema para James ou muitos outros em relação ao sysrq. -1
geezanansa
17

ATRIBUIÇÕES :
https://fedoraproject.org/wiki/QA/Sysrq#How_do_I_use_the_magic_SysRq_key que foi baseado no trabalho original de
Créditos
Escritos por Mydraal
Atualizado por Adam Sulmicki
Atualizado por Jeremy M. Dolan 28/01/2001 10:15:59
Adicionado por Crutcher Dunnavant

https://askubuntu.com/a/11194/102029 mneiss forneceu links para o LaunchPad.

Conteúdo

O que é sysrq?
Por que o RESIUB (O) não funciona?

1 Como faço para que o sysrq se comporte da maneira que eu quero?
1.1 Qual é a chave mágica do SysRq?
1.2 Como habilito a chave mágica SysRq?
1.3 Como uso a chave mágica SysRq?
1.4 O que são as chaves de 'comando'?
1.5 Ok, então para que posso usá-los?

1.6 Solucionar problemas

1.6.1 Suspenso antes da execução dos initscripts
1.6.2 Às vezes, o SysRq parece 'travado' depois de usá-lo, o que posso fazer?
1.6.3 Eu acertei o SysRq, mas nada parece acontecer, o que há de errado?
1.6.4 Quero adicionar eventos de chave SysRQ a um módulo, como isso funciona?
1.6.5 Conclusão
1.6.6 APÊNDICE
Nota.
Você pode usar o Ctrl+ Fpara usar o Índice útil.

O que é o SysRq?

Um método bem conhecido e usado comum de recuperar o uso da máquina após congelar ou travar, limitando o risco de corrupção de disco, causando danos ao arquivo do sistema ou perda de dados, é usar
Alt+ SysRq+ re então se então ee depois ie depois ue depois be / ou se necessário ( o)

Isso não tem funcionado como esperado para muitos (por exemplo, eu e James) em todos os tipos de opções, desde> = 8.04LTS até a versão 13.04 atual.

Por que o RESIUB (O) não funciona?

Considere esta descrição do erro encontrada no LaunchPad Bug 194676 :

Descrição do problema:
Por padrão, o SysRq é ativado por padrão nos sistemas de desktop Ubuntu, o que é inestimável quando um sistema é bloqueado e você deseja interrompê-lo o mais suavemente possível ou depurar o problema. No entanto, muitas pessoas ficam surpresas que você também pode pedir para despejar o conteúdo da memória atual no console (ou dmesg), embora apenas no teclado.
O openSUSE define uma máscara de bits padrão 176 no SysRq que, por padrão, restringe você a sincronizar, reiniciar e "remontar somente leitura". Isso interrompe as pessoas que usam o sysrq por padrão para inspecionar a memória que parece sensata.

Os desenvolvedores do Ubuntu viram a necessidade de fazer algo sobre isso e a melhor solução, considerando as possíveis complicações da observação mencionada, é aplicar o bitmask 176 sysrq por padrão, criando a necessidade de entrada do usuário para definir o sysrq como desejarem. Bitmask 176 só permite S, U, Bque é de sincronização, remonte partições montadas e reinicialização.
A leitura do relatório completo dos erros e dos comentários destacará algumas opções que podem ser aplicáveis ​​ao seu sistema.

O efeito acumulativo de diferentes hardwares, kernels, teclados e máscaras de bit significa que o sysrq está se comportando de maneira diferente para pessoas diferentes.

Um método para obter a saída txt sobre como o sistema está usando o sysrq é aplicar os comandos sysrq do tty (quando o sistema não sofrer bloqueios / congelamentos). Fazer isso pode indicar que o sysrq não foi completamente desativado, mas está usando a máscara de bit 176.

A pesquisa de / proc / sys / kernel / sysrq em um 13.04 Desktop amd64 liveDVD e uma instalação 13.04 Desktop amd64 confirma que o padrão atualmente é deixar o sysrq no bitmask 176.

Se o sysrq funcionar para você; pode valer a pena perguntar: "Se eu não alterei as configurações do 10-magic-sysrq, então; quem fez isso?"

1 Como faço para que o sysrq se comporte da maneira que eu quero?

O que segue é uma cópia e colar editada de https://fedoraproject.org/wiki/QA/Sysrq .

1.1 Qual é a chave mágica do SysRq?

É uma combinação de teclas 'mágica' à qual você pode bater, ao qual o kernel responderá independentemente do que estiver fazendo, a menos que esteja completamente trancado.

1.2 Como habilito a chave mágica SysRq?

O sysrq está embutido no kernel do Ubuntu, mas está desativado no momento da inicialização, por padrão, usando 10-magic-sysrq.conf.

Para reativá-lo no momento da inicialização, você deve editar o arquivo /etc/sysctl.d/10-magic-sysrq.conf. descomentar esta linha habilitará todas as funções do sysrq:

#   1 - enable all functions of sysrq

Ao executar um kernel com o SysRq compilado, / proc / sys / kernel / sysrq controla as funções que podem ser chamadas pela tecla SysRq. Aqui está a lista de valores possíveis em / 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 

Você pode definir o valor no arquivo pelo seguinte comando.

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

Então, para habilitá-lo totalmente, seria.

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

Ou também pode habilitá-lo fazendo.

sysctl -w kernel.sysrq=1  

Nota.
O valor de / proc / sys / kernel / sysrq influencia apenas a chamada através de um teclado. A invocação de qualquer operação via / proc / sysrq-trigger é sempre permitida (por um usuário com privilégios de administrador - veja abaixo).

1.3 Como uso a chave mágica SysRq?

Ubuntu Desktop

Você pressiona a tecla combo Alt+ SysRq+ command key.

NB- Veja as notas nesta seção e na seção Solução de problemas para outras configurações padrão possíveis para outros sistemas e teclados.

É possível definir qualquer caractere de sua escolha: Todas as arquiteturas

Escreva um caractere para / proc / sysrq-trigger:

echo t > /proc/sysrq-trigger

definiria o Tcomportamento como SysRq
Nota.
Alguns teclados podem não ter uma tecla rotulada SysRq. A SysRqchave também é conhecida como Print Screenchave. Além disso, alguns teclados não podem suportar tantas teclas pressionadas ao mesmo tempo; portanto, você pode ter mais sorte com Alt+ SysRq- SysRqe pressione command keye solte tudo. Veja a redação completa do controle de qualidade em que este guia se baseia em https://fedoraproject.org/wiki/QA/Sysrq#How_do_I_use_the_magic_SysRq_key.3F para obter mais informações sobre isso.

1.4 O que são as chaves 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.
Veja comentários importantes abaixo na seção 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 Ok, então para que posso usá-los?

Un raw é muito útil quando o servidor X ou um programa svgalib falha.

O Sa k(Secure Access Key) é útil quando você deseja ter certeza de que não há nenhum programa de trojan em execução no console que possa pegar sua senha quando você tentar fazer o login. Isso matará todos os programas em um determinado console, permitindo que você tenha certeza de que o prompt de login que você vê seja realmente o init, e não algum programa de trojan. Outros acham útil como (System Attention Key), que é útil quando você deseja sair de um programa que não permite alternar consoles. (Por exemplo, X ou um programa svgalib.)
Nota.
Na sua forma verdadeira, não é uma SAK verdadeira como a de um sistema compatível com c2 e não deve ser confundida como tal.

Repetir bé bom quando você não consegue desligar.
Nota.
É geralmente considerado uma boa prática umontar primeiro

O Crashdump pode ser usado para disparar manualmente um crashdump quando o sistema está travado.
Nota.
O kernel precisa ter sido construído com o CONFIG_KEXEC ativado!

A sincronização é ótima quando o sistema está bloqueado, permite que você sync seus discos e certamente diminuirá a chance de perda de dados e fscking.
Aviso
A sincronização não ocorreu até você ver "OK" e "Concluído" aparecer na tela. (Se o kernel estiver realmente em conflito, talvez você nunca receba a mensagem OK ou Concluído.

Umount é basicamente útil da mesma maneira que o Sync.

Os níveis de log 0- 9são úteis quando seu console está sendo inundado com mensagens do kernel que você não deseja ver. A seleção 0impedirá que todas as mensagens do kernel, exceto as mais urgentes, cheguem ao seu console.
Nota.
Eles ainda serão registrados se syslogd / klogd estiver ativo

T erm e k iserão úteis se você tiver algum tipo de processo descontrolado, não conseguirá matar de nenhuma outra maneira, principalmente se estiver gerando outros processos.
Nota.
Ao experimentar pânico ruim do kernel, faça Alt+ Sysrq+ ethen Alt+ Sysrq+ uthen Alt+ Sysrq+ ie finalmente Alt+ Sysrq+b

1.6 Solucionar problemas

1.6.1 Suspenso antes da execução dos initscripts

Se a máquina estiver travada antes da execução dos scripts iniciais, inicialize com sysrq_always_enabled=1

1.6.2 Às vezes, o SysRq parece "preso" depois de usá-lo, o que posso fazer?

Tocar em shift, alte controlem ambos os lados do teclado e pressionar novamente uma sequência sysrq inválida corrigirá o problema. (ou seja, algo como alt+ sysrq+ z).

Mudar para outro console virtual ( Ctrl+ Alt+ Fn1- Fn6) e depois novamente Ctrl+ Alt+ Fn7também deve ajudar.

1.6.3 Eu bati SysRq, mas nada parece acontecer, o que há de errado?

Existem alguns teclados que enviam códigos de escopo diferentes para SysRqo 0x54 predefinido. Portanto, se SysRqnão funcionar showkey -simediatamente para um determinado teclado, corra para descobrir a sequência apropriada do scancode. Em seguida, use setkeycodes <sequence> 84para definir essa sequência para o SysRqcódigo usual (84 é decimal para 0x54). Provavelmente é melhor colocar esse comando em um script de inicialização.
Aviso
Você sai showkeynão digitando nada por dez segundos.

1.6.4 Quero adicionar SysRqeventos importantes a um módulo, como funciona?

Para registrar uma função básica na tabela, você deve primeiro incluir o cabeçalho include/linux/sysrq.h, isso definirá tudo o que você precisa. Em seguida, você deve criar uma estrutura sysrq_key_op e preenchê-la com ...

  • A função do manipulador de teclas que você usará.

  • Uma string help_msg, que será impressa quando o SysRQ imprimir ajuda

  • Uma string action_msg, que será impressa imediatamente antes de seu manipulador ser chamado. Seu manipulador deve estar em conformidade com o protótipo em 'sysrq.h'

Após a criação do sysrq_key_op, você pode chamar a função do kernel register_sysrq_key (chave int, struct sysrq_key_op * op_p); isso registrará a operação apontada por 'op_p' na chave da tabela 'chave', se esse espaço na tabela estiver em branco. No momento do descarregamento do módulo, você deve chamar a função unregister_sysrq_key (chave int, struct sysrq_key_op * op_p), que removerá a chave op apontada por 'op_p' da chave 'key', se e somente se estiver atualmente registrada nesse slot. Isso ocorre caso o slot tenha sido substituído desde que você o registrou.

O SysRqsistema Magic funciona registrando operações de chave em uma tabela de consulta de chave, definida em 'drivers / char / sysrq.c'. Essa tabela de chaves possui diversas operações registradas nela em tempo de compilação, mas é mutável e 2 funções são exportadas para interface com ela: register_sysrq_key e unregister_sysrq_key. Obviamente, nunca deixe um ponteiro inválido na tabela. ie; quando o módulo que chamou register_sysrq_key () sai, ele deve chamar unregister_sysrq_key () para limpar a entrada da tabela de chaves sysrq usada.
Nota.
Ponteiros nulos na tabela são sempre seguros.

Se por algum motivo você sentir a necessidade de chamar a função handle_sysrq de dentro de uma função chamada handle_sysrq, você deve estar ciente de que está em um bloqueio (você também está em um manipulador de interrupção, o que significa que não dorme!), Portanto você deve chamar __handle_sysrq_nolock.

1.6.5 Conclusão

Use Alt+ SysRq+ Se, em seguida U, Bpara sincronizar, tente remontar todos os sistemas de arquivos montados e, em seguida, reinicie, se necessário. Sem alterar nada nos arquivos do sistema.
Se o Alt+ SysRq+ Bnão reiniciar o sistema, pode ser necessário editar o arquivo /etc/sysctl.d/10-magic-sysrq.conf para permitir a tentativa de aplicar o Alt+ SysRq+ B(ou / e Oapós editar / proc / sys / kernel / sysrq bitmask para habilitar a reinicialização e o desligamento do sistema usando o sysrq.Você pode fazer isso por qualquer um dos métodos descritos acima.

1.6.6 APÊNDICE: Veja também - http://ubuntuforums.org/showthread.php?t=617349 e https://www.kernel.org/doc/Documentation/sysrq.txt

Para aqueles com problemas no teclado do Apple MacBook em relação ao sysrq, consulte: https://help.ubuntu.com/community/AppleKeyboard e https://bugs.launchpad.net/mactel-support/+bug/262408

Informação relativa interessante - Depois de assistir ao episódio 17 08 2013 do programa BBC "Click" e o artigo "cyberwarfare" realmente me chamou a atenção. O programa também possui seu próprio site. Clique se não puder assistir ao programa. FAWC

geezanansa
fonte
2
Em particular, acabei de testar o Al + SysRq + REISUB em um sistema Quantal i386 totalmente atualizado e funciona bem. Você tem certeza de que o bug de segurança vinculado ou qualquer parte da discussão sobre segurança nesta resposta está realmente relacionado ao problema? Em caso afirmativo, é uma causa bastante comum do problema que deve aparecer primeiro nesta resposta?
Eliah Kagan
O problema de segurança é importante, pois o conjunto completo de comandos sysrq não está disponível devido à aplicação da máscara de bits 176 no momento da inicialização; como o relatório de erros descreve.
precisa saber é o seguinte
3

Encontrei isso outro dia e demorou alguns segundos para funcionar. Talvez eu tenha feito a sequência inteira do REISUB duas vezes.

Além disso, verifique se você está usando a tecla sysrq (a maioria dos laptops exige que você mantenha a função pressionada, para que você esteja pressionando 4 teclas ao mesmo tempo)

Scott Ritchie
fonte
Obrigado pela sua resposta Scott. Na verdade, tenho que pressionar a tecla de função (fn) junto com alt e sysrq. Depois que eu pressiono a tecla B final para finalizar a sequência REISUB, meu laptop parece travar após a exibição: Redefinindo À medida que a sequência de teclas mágicas novamente não faz nada, nada é exibido na tela depois. Portanto, parece que o sistema trava quando é necessário reiniciar.
James White
3

Alguns anos atrás eu costumava usar Alt+ SysRq+ S, U, B, Oreiniciar ou desligar uma máquina preso, porque como para você, Alt+ SysRq+ B, por vezes, não querem trabalhar.

(Além disso, preciso adquirir o hábito de usar Alt+ SysRq+ E, Iprimeiro. Não vejo muito sentido em usar Alt+ SysRq+ R, pois por que o modo do teclado importa se ele será reiniciado e redefinido de qualquer maneira?)

Marius Gedminas
fonte
11
por que o modo do teclado importa se ele será reiniciado e redefinido de qualquer maneira? Porque devolve a capacidade de entrada ao teclado? o que pode significar que você não precisa para reiniciar ou desligar
geezanansa