Alt + sysrq + O REISUB não reinicia meu laptop

53

Ocasionalmente, meu laptop ficou preso, então usei a combinação de teclas mágicas de Alt + SysRq + REISUB para executar um reinicialização segura. No entanto, parece que não funciona para mim quando pressiono a tecla B para completar o comando da magic key que simplesmente diz, "resetting ..." e não faz nada.

Todas as outras teclas parecem funcionar bem, pois redefine o layout do teclado, mata todas as tarefas, etc., mas não parece concluir com uma reinicialização.

Tive a impressão de que meu laptop deveria ser reinicializado depois que as teclas mágicas fossem pressionadas na ordem de REISUB.

    
por James White 02.11.2010 / 17:24

5 respostas

52

Alt + SysRq foi desativado para corrigir um bug. A desativação do Magic-SysRq foi considerada um bug em si e, desde então, foi reativada ( # 1025467 ). Se ainda estiver desativado, reative-o:

Ubuntu 12.04 e mais antigos

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 detalhado sobre quais recursos do Magic-SysRq são ativados. Basta editar o arquivo /etc/sysctl.d/10-magic-sysrq.conf .

O arquivo está bem documentado e informa exatamente como habilitar 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, veja # 194676 ).

    
por mniess 03.11.2010 / 16:45
25

Os teclados são o problema aqui!

  • Alguns simplesmente não gostam do teclado com 4 teclas ao mesmo tempo e simplesmente param de ser um teclado até você liberar algum.
  • Todos os teclados se transformam em layout QWERTY quando você envia o sinal SysRq. Isso dificulta encontrar os comandos certos nos teclados com outro layout. Comandos do SysRq da Wikipedia mostra uma tabela para encontrar os corretos para layouts alternativos comuns.
  • Alguns têm SysRq em outra chave que PrtSc para manter com uma tecla de função. No meu laptop isto é Fn + End . Segurar Alt + PrtSc só funciona se algum processo do sistema (gerenciador de janelas?) O traduzir para mim. No crash total, somente o real SysRq funciona!
  • Alguns só acionam a chave SysRq quando você mantém o direito Alt + PrtSc (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 + SysRq para ver uma saída de 'ajuda' em um terminal virtual. Isso é útil para ver se está funcionando sem causar danos:

      

    SysRq: HELP: loglevel (0-9) reBoot Falha em todas as tarefas (E) memória-cheia-oom-kill (F) kill-all-tasks (I) descongelamento de sistemas de arquivos (J) show de sak backtrace-all-active-cpus (L) show-uso de memória (M) nice-todas-tarefas-RT (N) powerOff show-registradores (P) show-todos-timers (Q) unRaw Sincronização show-task-states (T) desmontar tarefas mostradas-bloqueadas (W) dump-ftrace-buffer (Z)

Em todos os casos que eu vi, não funcionou, trocar o teclado funcionou perfeitamente e mostrou que nada estava errado com qualquer configuração do kernel.

    
por gertvdijk 13.01.2013 / 13:58
13

ATRIBUIÇÕES : link que foi baseado no trabalho original de
Créditos Escrito por Mydraal Review Atualizado por Adam Sulmicki
Atualizado por Jeremy M. Dolan 2001/01/28 10:15:59
Adicionado por Crutcher Dunnavant

link 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 como eu quero?
1.1 Qual é a chave mágica do SysRq?
1.2 Como habilitar a chave mágica do SysRq?
1.3 Como uso a chave mágica do SysRq?
1.4 Quais são as teclas 'command'?
1.5 Ok, então, para que posso usá-los?

1.6 Solucionar problemas

1.6.1 Pendurado antes de executar o initscripts
1.6.2 Algumas vezes o SysRq parece ficar 'preso' depois de usá-lo, o que posso fazer?
1.6.3 acertei o SysRq, mas nada parece acontecer, o que está errado?
1.6.4 Eu quero adicionar eventos chave SysRQ a um módulo, como funciona?
1.6.5 Conclusão
1.6.6 APÊNDICE
Nota.
Você pode encontrar usando Ctrl + F para usar o Sumário útil.

O que é o SysRq?

Um método bem conhecido e conhecido de recuperar o uso da máquina após o congelamento ou travamento com a limitação do risco de corrupção de disco que causa danos ao arquivo do sistema ou perda de dados é usar o Alt + SysRq + r e ent˜ao s e ent˜ao e e ent˜ao i e ent˜ao u e depois b e / ou se necessário ( o )

Isto não tem funcionado como esperado para muitos (ie eu e James) através de todos os tipos de & gt; = 8.04LTS para a versão 13.04 atual.

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

Considere esta descrição de bug encontrada no LaunchPad Bug 194676 :

  

Descrição do problema:
  Por padrão, o SysRq é habilitado por padrão nos sistemas de desktop Ubuntu, o que é inestimável quando um sistema é bloqueado e você deseja pará-lo com a maior suavidade 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 para o console (ou dmesg), embora apenas a partir do teclado.   O openSUSE define um bitmask padrão de 176 em seu SysRq que, por padrão, o restringe a sincronizar, reinicializar e "remontar somente leitura". Isso impede que as pessoas usem 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 smasrq bitmask 176 por padrão, criando a necessidade de entrada do usuário para definir o sysrq como desejarem. Bitmask 176 somente permite S , U , B que é sync, remontar partições montadas e reinicializar.
A leitura do relatório de erros completo 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 bitmasks significa que o sysrq está se comportando de maneira diferente para pessoas diferentes.

Um método para obter a saída do txt em relação a como o seu sistema está usando o sysrq é aplicar os comandos sysrq a partir do tty (quando o sistema não sofre de bloqueios / congelamentos). Isso pode indicar que o sysrq não foi completamente desativado, mas está usando o bitmask 176.

Procurando por / proc / sys / kernel / sysrq em uma área de trabalho 13.04 amd64 liveDVD e uma instalação 13.04 Desktop amd64 confirma que o padrão é deixar o sysrq no bitmask 176.

Se o sysrq funciona 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 como eu quero?

O que segue é um copiar e colar editados do link .

1.1 Qual é a chave mágica do SysRq?

É uma combinação de tecla 'mágica' que você pode atingir, a qual o kernel responderá independentemente de qualquer outra coisa que esteja fazendo, a menos que esteja completamente bloqueada.

1.2 Como habilitar a chave mágica do SysRq?

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

Para reativá-lo no momento da inicialização, você precisa editar o arquivo /etc/sysctl.d/10-magic-sysrq.conf. ou seja, descomentar esta linha irá 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 através da chave 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 habilitar totalmente, seria.

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

Ou também pode ativá-lo fazendo.

sysctl -w kernel.sysrq=1  

Nota.
O valor de / proc / sys / kernel / sysrq influencia apenas a invocação 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 eu uso a chave mágica do SysRq?

Ubuntu Desktop

Você pressiona a tecla de comando Alt + SysRq + . .

N.B.- Consulte 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

configuraria o T se comportando como SysRq
Nota.
Alguns teclados podem não ter uma chave com o rótulo SysRq . A chave SysRq é também conhecida como tecla Print Screen . Além disso, alguns teclados não podem manipular tantas teclas pressionadas ao mesmo tempo, então você pode ter mais sorte com Alt + SysRq - SysRq e pressione chave de comando solte tudo. Veja a escrita completa do QA que este guia é baseado no link para mais informações a respeito.

1.4 Quais são as 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.
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?

Um r aw é muito útil quando o seu servidor X ou um programa svgalib trava.

O k (Chave de Acesso Seguro) é útil quando você quer ter certeza de que não há nenhum programa de trojan rodando no console que possa pegar sua senha quando você tentaria logar. Ele matará todos os programas em determinado console, permitindo que você verifique se o prompt de login que você vê é realmente o do init, não algum programa de trojan. Outros acham que é útil como (tecla de atenção do sistema), que é útil quando você deseja sair de um programa que não permite alternar os consoles. (Por exemplo, X ou um programa svgalib.)
Nota.
Na sua verdadeira forma, não é um verdadeiro SAK como o de um sistema compatível com c2, e não deve ser confundido como tal.

Re b oot é bom quando você não consegue desligar.
Note.
É geralmente considerado uma boa prática u montar primeiro

O Crashdump pode ser usado para disparar manualmente um rashdump c quando o sistema estiver travado.
Observação.
O kernel precisa ter sido construído com o CONFIG_KEXEC ativado!

A sincronização é ótima quando o seu sistema está bloqueado, permite-lhe s ync os seus discos e irá certamente diminuir a possibilidade de perda de dados e fscking.
Aviso
A sincronização não ocorreu até que você veja "OK" e "Concluído" na tela. (Se o kernel estiver realmente em conflito, você pode nunca receber a mensagem OK ou Concluído.

A montagem

U é basicamente útil da mesma maneira que S ync.

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

T e rm ek i ll são úteis se você tiver algum tipo de processo de fuga que não consiga matar de outra maneira, especialmente se estiver gerando outros processos.
Nota.
Quando experimentando um mau kernel panic, faça Alt + Sysrq + e então Alt + Sysrq + u ent˜ao Alt + Sysrq + i e finalmente Alt + Sysrq + b

1.6 Solucionar problemas

1.6.1 Pendurado antes dos scripts entrarem em execução

Se a máquina estiver travada antes que os initscripts sejam executados, inicialize com sysrq_always_enabled=1

1.6.2 Algumas vezes o SysRq parece ficar 'preso' depois de usá-lo, o que posso fazer?

Tocando shift , alt , e control em ambos os lados do teclado, e acertando uma seqüência inválida de sysrq novamente irá corrigir o problema. (isto é, algo como alt + sysrq + z ).

Alternando para outro console virtual ( Ctrl + Alt + Fn1 - Fn6 ) e, em seguida, novamente < kbd> Ctrl + Alt + Fn7 também deve ajudar.

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

Existem alguns teclados que enviam diferentes scancodes para SysRq que o 0x54 pré-definido. Portanto, se o SysRq não funcionar fora da caixa para um determinado teclado, execute showkey -s para descobrir a sequência apropriada do scancode. Em seguida, use setkeycodes <sequence> 84 para definir essa sequência para o código usual SysRq (84 é decimal para 0x54). Provavelmente é melhor colocar esse comando em um script de inicialização.
Aviso
Você sai do showkey sem digitar nada por dez segundos.

1.6.4 Eu quero adicionar eventos chave SysRq a um módulo, como funciona?

Para registrar uma função básica com a 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 chaves que você usará.

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

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

Depois que o sysrq_key_op é criado, você pode chamar a função kernel register_sysrq_key (int key, struct sysrq_key_op * op_p); isso registrará a operação apontada por 'op_p' na chave da tabela 'key', se esse slot na tabela estiver em branco. No tempo de 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 naquele slot. Este é o caso do slot ter sido sobrescrito desde que você o registrou.

O sistema Magic SysRq funciona registrando as operações chave em uma tabela chave de consulta, que é definida em 'drivers / char / sysrq.c'. Esta tabela de chaves tem um número de operações registradas em tempo de compilação, mas é mutável, e 2 funções são exportadas para interface para o register_sysrq_key e unregister_sysrq_key. Claro, nunca deixe um ponteiro inválido na tabela. ie; quando o módulo que se chama register_sysrq_key () sai, ele deve chamar unregister_sysrq_key () para limpar a entrada da tabela de chaves sysrq que ele usou.
Note.
Ponteiros nulos na tabela estã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 por 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 durma! ), então você deve chamar __handle_sysrq_nolock.

1.6.5 Conclusão

Use Alt + SysRq + S e entà £ o U e entà £ o B para sincronizar, tente remontar todos os sistemas de arquivos montados e, em seguida, reinicialize, se necessário. Sem alterar uma coisa para arquivos do sistema.
Se Alt + SysRq + B não reinicializar o sistema, pode ser necessário editar /etc/sysctl.d/10-magic-sysrq. conf para permitir a tentativa de aplicar Alt + SysRq + B (ou / e O após a edição / proc / sys / kernel / sysrq bitmask para habilitar a reinicialização e desligamento do sistema pelo uso de sysrq. Você poderia fazer isso por qualquer um dos métodos descritos acima.

1.6.6 APÊNDICE: Veja também - link e link

Para aqueles com problemas de teclado do Apple MacBook em relação ao sysrq, consulte: link e link

Relative info interessante- Depois de assistir 17 08 2013 episódio do programa da BBC "Click" e o artigo "cyberwarfare" realmente me chamaram a atenção. O programa também tem seu próprio site Clique em se você não puder assistir ao programa. FAWC

    
por geezanansa 13.04.2017 / 14:24
3

Eu corri para isso no outro dia e demorou alguns segundos para o trabalho. Eu posso até ter feito toda a sequência REISUB duas vezes.

Além disso, verifique se você está usando a chave sysrq (a maioria dos laptops exigirá que você mantenha pressionada a função, então você está realmente pressionando 4 teclas de uma só vez)

    
por Scott Ritchie 02.11.2010 / 20:00
3

Alguns anos atrás eu costumava usar Alt + SysRq + S , U , B , O para reiniciar ou desligar uma máquina emperrada, porque para você, Alt + SysRq + B às vezes não queria trabalhar.

(Além disso, eu preciso adquirir o hábito de usar Alt + SysRq + E , I Primeiro, eu não vejo muito sentido em usar Alt + SysRq + R , porque o modo de teclado importa se vai ser reinicializado e redefinir mesmo assim?)

    
por Marius Gedminas 03.11.2010 / 12:36