web-dev-qa-db-fra.com

Ubuntu + PrtSc + AltGr = CRASH

Sur Ubuntu 15.10 et 15.04 sur Lenovo t440p lorsque j'écris un code dans Netbeans et que je clique accidentellement sur le bouton AltGr et PrtSc en même temps, il se bloque et redémarre le système. Cela ne prend pas d'action avec Ubuntu fraîchement installé.

C'est la trace de 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)

Comment désactiver PrtSc ou empêcher de cliquer accidentellement sur PrintScreen sur un clavier Lenovo? Ou quel est le problème sur cette trace?

Merci

2
phreakbox

Le problème:

Sur votre clavier, le Print Screen (PrtSc) et System Request (SysRq) sont sur le même bouton physique, comme sur la plupart des mises en page que je connais.

Les combinaisons de touches Alt+SysRq+[SPECIFIC LETTER] sont généralement connues sous le nom de commandes Magic SysRq qui envoient directement des commandes au noyau.

Ils sont principalement utilisés comme alternative plus sûre à une réinitialisation à froid si le système est complètement écrasé, car il y a par exemple commandes pour synchroniser et démonter le système de fichiers afin d’éviter les dommages et la corruption des données et pour réinitialiser/redémarrer (si vous appuyez sur B 3ème clé) ou éteindre (3ème clé O). Vous trouverez plus d'informations et une liste complète des combinaisons, même en ce qui concerne différentes dispositions de clavier, dans l'article correspondant de Wikipédia Magic SysRq Key .

Donc, ce que vous faites accidentellement est d’envoyer directement au noyau la commande pour redémarrer, et c’est ce que cela fait.


La solution:

En fonction de la manière dont votre noyau a été compilé , vous pouvez cependant spécifier sur quelles commandes SysRq le noyau doit écouter lorsque le système est en cours d'exécution. Je viens de tester ceci sur 15.10 avec le noyau 4.2.0-27-generic et cela a fonctionné, mais il serait bon d’apprendre depuis quand et pour quels noyaux ceci est activé. S'il vous plaît commenter si vous savez.

  • Découvrez le courant SysRq valeur du filtre de commande:

    Nous pouvons apprendre lequel SysRq les commandes sont actuellement activées en vérifiant le contenu du fichier virtuel /proc/sys/kernel/sysrq:

    cat /proc/sys/kernel/sysrq
    

    Le résultat sera un nombre qui doit être interprété comme ceci:

    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
    

    Ma valeur par défaut lorsque je suis sur le bureau est 176, qui est 128+32+16. Ainsi, selon le tableau ci-dessus, je peux redémarrer, éteindre, synchroniser et remonter les systèmes de fichiers en lecture seule.

  • Désactiver tous les SysRq commandes:

    Exécutez la commande ci-dessous et essayez de savoir si le SysRq les raccourcis fonctionnent toujours après (par ex. Alt+SysRq+B réinitialiser/redémarrer):

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

    Cela devrait désactiver tout SysRq commandes de la session en cours, jusqu’à ce que vous redémarriez la prochaine fois.

  • Activer tout SysRq commandes:

    Pour manuellement activer tout  SysRq commandes, nous écrivons la valeur 1 dans le même fichier virtuel:

    echo 1 | Sudo tee /proc/sys/kernel/sysrq
    
  • Activer la valeur par défaut précédente SysRq filtre de commande:

    Vous restaurez votre configuration par défaut en redémarrant ou, si vous avez coché et mémorisé la valeur avant de la modifier, vous pouvez redéfinir cette valeur au lieu de 0/1 pour activer/désactiver toutes les commandes.

    Donc, dans mon cas où la valeur initiale était 176, je lancerais:

    echo 176 | Sudo tee /proc/sys/kernel/sysrq
    
3
Byte Commander