Ubuntu + PrtSc + AltGr = CRASH

2

No Ubuntu 15.10 e 15.04 no Lenovo t440p quando estou escrevendo um código no Netbeans e acidentalmente clico no botão AltGr e PrtSc ao mesmo tempo em que ele é travado e reinicializa o sistema. Isso não funciona com o novo Ubuntu instalado.

Isto é backtrace do syslog:

Feb  5 19:47:43 mycomputername kernel: [   15.485327] sysrq: SysRq : HELP : loglevel(0-9) reboot(b) crash(c) terminate-all-tasks(e) memory-full-oom-kill(f) kill-all-tasks(i) thaw-filesystems(j) sak(k) show-backtrace-all-active-cpus(l) show-memory-usage(m) nice-all-RT-tasks(n) poweroff(o) show-registers(p) show-all-timers(q) unraw(r) sync(s) show-task-states(t) unmount(u) force-fb(V) show-blocked-tasks(w) dump-ftrace-buffer(z)
Feb  5 19:47:44 mycomputername kernel: [   16.966879] sysrq: SysRq : HELP : loglevel(0-9) reboot(b) crash(c) terminate-all-tasks(e) memory-full-oom-kill(f) kill-all-tasks(i) thaw-filesystems(j) sak(k) show-backtrace-all-active-cpus(l) show-memory-usage(m) nice-all-RT-tasks(n) poweroff(o) show-registers(p) show-all-timers(q) unraw(r) sync(s) show-task-states(t) unmount(u) force-fb(V) show-blocked-tasks(w) dump-ftrace-buffer(z)
Feb  5 19:47:44 mycomputername kernel: [   17.115697] sysrq: SysRq : HELP : loglevel(0-9) reboot(b) crash(c) terminate-all-tasks(e) memory-full-oom-kill(f) kill-all-tasks(i) thaw-filesystems(j) sak(k) show-backtrace-all-active-cpus(l) show-memory-usage(m) nice-all-RT-tasks(n) poweroff(o) show-registers(p) show-all-timers(q) unraw(r) sync(s) show-task-states(t) unmount(u) force-fb(V) show-blocked-tasks(w) dump-ftrace-buffer(z)
Feb  5 19:47:44 mycomputername kernel: [   17.115844] sysrq: SysRq : HELP : loglevel(0-9) reboot(b) crash(c) terminate-all-tasks(e) memory-full-oom-kill(f) kill-all-tasks(i) thaw-filesystems(j) sak(k) show-backtrace-all-active-cpus(l) show-memory-usage(m) nice-all-RT-tasks(n) poweroff(o) show-registers(p) show-all-timers(q) unraw(r) sync(s) show-task-states(t) unmount(u) force-fb(V) show-blocked-tasks(w) dump-ftrace-buffer(z)
Feb  5 19:47:45 mycomputername kernel: [   17.644247] sysrq: SysRq : HELP : loglevel(0-9) reboot(b) crash(c) terminate-all-tasks(e) memory-full-oom-kill(f) kill-all-tasks(i) thaw-filesystems(j) sak(k) show-backtrace-all-active-cpus(l) show-memory-usage(m) nice-all-RT-tasks(n) poweroff(o) show-registers(p) show-all-timers(q) unraw(r) sync(s) show-task-states(t) unmount(u) force-fb(V) show-blocked-tasks(w) dump-ftrace-buffer(z)
Feb  5 19:47:45 mycomputername kernel: [   17.829425] sysrq: SysRq : HELP : loglevel(0-9) reboot(b) crash(c) terminate-all-tasks(e) memory-full-oom-kill(f) kill-all-tasks(i) thaw-filesystems(j) sak(k) show-backtrace-all-active-cpus(l) show-memory-usage(m) nice-all-RT-tasks(n) poweroff(o) show-registers(p) show-all-timers(q) unraw(r) sync(s) show-task-states(t) unmount(u) force-fb(V) show-blocked-tasks(w) dump-ftrace-buffer(z)
Feb  5 19:47:46 mycomputername kernel: [   18.698713] sysrq: SysRq : HELP : loglevel(0-9) reboot(b) crash(c) terminate-all-tasks(e) memory-full-oom-kill(f) kill-all-tasks(i) thaw-filesystems(j) sak(k) show-backtrace-all-active-cpus(l) show-memory-usage(m) nice-all-RT-tasks(n) poweroff(o) show-registers(p) show-all-timers(q) unraw(r) sync(s) show-task-states(t) unmount(u) force-fb(V) show-blocked-tasks(w) dump-ftrace-buffer(z)
Feb  5 19:47:47 mycomputername kernel: [   20.033534] sysrq: SysRq : HELP : loglevel(0-9) reboot(b) crash(c) terminate-all-tasks(e) memory-full-oom-kill(f) kill-all-tasks(i) thaw-filesystems(j) sak(k) show-backtrace-all-active-cpus(l) show-memory-usage(m) nice-all-RT-tasks(n) poweroff(o) show-registers(p) show-all-timers(q) unraw(r) sync(s) show-task-states(t) unmount(u) force-fb(V) show-blocked-tasks(w) dump-ftrace-buffer(z)
Feb  5 19:47:48 mycomputername kernel: [   21.061323] sysrq: SysRq : HELP : loglevel(0-9) reboot(b) crash(c) terminate-all-tasks(e) memory-full-oom-kill(f) kill-all-tasks(i) thaw-filesystems(j) sak(k) show-backtrace-all-active-cpus(l) show-memory-usage(m) nice-all-RT-tasks(n) poweroff(o) show-registers(p) show-all-timers(q) unraw(r) sync(s) show-task-states(t) unmount(u) force-fb(V) show-blocked-tasks(w) dump-ftrace-buffer(z)

Como posso desativar o PrtSc ou evitar clicar acidentalmente no PrintScreen no teclado da Lenovo? Ou qual é o problema neste backtrace?

Obrigado

    
por phreakbox 05.02.2016 / 19:54

1 resposta

3

O problema:

No seu teclado, a Tela de Impressão (PrtSc) e Solicitação do Sistema (SysRq) estão no mesmo botão físico, como na maioria dos layouts que eu conheço.

As combinações de teclas Alt + SysRq + [LETRA ESPECÍFICA] são geralmente conhecidas como Comandos Magic SysRq que diretamente enviar comandos para o kernel.

Eles são usados principalmente como uma alternativa mais segura para uma reinicialização a frio se o sistema estiver completamente quebrado, porque existem, e. comandos para sincronizar e desmontar o sistema de arquivos para evitar danos e corrupção de dados e para reiniciar / reinicializar (se você pressionar B como tecla 3) ou desligar (3a tecla O ) . Mais informações e uma lista completa de combinações, mesmo com relação a diferentes layouts de teclado, podem ser encontradas no artigo da Wikipédia correspondente Magic SysRq Key .

Então o que você está fazendo acidentalmente é enviar diretamente ao kernel o comando para reinicializar, e é isso que ele faz.

A solução:

Dependendo de como o seu kernel foi compilado , você pode especificar em quais comandos do SysRq o kernel deve escutar quando o sistema está rodando. Acabei de testar isso no 15.10 com o kernel 4.2.0-27-generic e funcionou, mas seria bom aprender desde quando ou para quais kernels isso está habilitado. Por favor, comente se você souber.

  • Descobre o valor atual do filtro de comando SysRq :

    Podemos aprender quais comandos do SysRq estão atualmente habilitados, verificando o conteúdo do arquivo virtual /proc/sys/kernel/sysrq :

    cat /proc/sys/kernel/sysrq
    

    O resultado será um número que deve ser interpretado assim:

    0 - disable SysRq
    1 - enable SysRq completely
    >1 - bitmask of enabled SysRq functions:
        2 - control of console logging level
        4 - control of keyboard (SAK, unraw)
        8 - debugging dumps of processes etc.
        16 - sync command
        32 - remount read-only
        64 - signalling of processes (term, kill, oom-kill)
        128 - reboot/poweroff
        256 - nicing of all RT tasks
    

    Meu valor padrão quando estou na área de trabalho é 176 , que é 128+32+16 . Então, de acordo com a tabela acima, eu posso reiniciar, desligar, sincronizar e remontar sistemas de arquivos para somente leitura.

  • Desativa todos os comandos SysRq :

    Execute o comando abaixo e tente se os atalhos SysRq ainda funcionam depois (por exemplo, Alt + SysRq + B para reiniciar / reiniciar):

    echo 0 | sudo tee /proc/sys/kernel/sysrq
    

    Isto deve desabilitar todos os comandos SysRq para a sessão atual, até que você reinicie da próxima vez.

  • Habilita todos os comandos SysRq :

    Para manualmente ativar todos os comandos SysRq , escrevemos o valor 1 para o mesmo arquivo virtual:

    echo 1 | sudo tee /proc/sys/kernel/sysrq
    
  • Ativar o filtro de comando padrão SysRq :

    Você restaura a configuração padrão reiniciando ou, se marcar e lembrar o valor antes de ajustá-lo, pode definir esse valor novamente em vez de 0 / 1 para ativar / desativar todos os comandos.

    Então, no meu caso, onde o valor original era 176 , eu executava:

    echo 176 | sudo tee /proc/sys/kernel/sysrq
    
por Byte Commander 05.02.2016 / 22:57