web-dev-qa-db-ja.com

Ubuntu + PrtSc + AltGr =クラッシュ

Ubuntu 15.10および15.04でLenovo t440pを使用してNetbeansでコードを作成し、誤ってボタンをクリックした場合 AltGr そして PrtSc 同時にクラッシュし、システムを再起動します。これは、新しくインストールされたUbuntuではアクションを実行しません。

これは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)

PrtScを無効にしたり、LenovoキーボードのPrintScreenを誤ってクリックしないようにするにはどうすればよいですか?または、このバックトレースの問題は何ですか?

ありがとう

2
phreakbox

問題:

キーボードで、 Print Screen (PrtSc) そして System Request (SysRq) 私が知っているほとんどのレイアウトのように、同じ物理ボタン上にあります。

キーの組み合わせ Alt+SysRq+[SPECIFIC LETTER] 一般にMagic SysRq Commandsと呼ばれ、カーネルに直接コマンドを送信します。

システムが完全にクラッシュした場合、主にコールドリセットのより安全な代替手段として使用されます。ファイルシステムを同期およびマウント解除して、損傷やデータ破損を防ぎ、リセット/再起動するコマンド(押した場合 B 3番目のキーとして)または電源オフ(3番目のキー O)。さまざまなキーボードレイアウトに関する詳細情報と組み合わせの完全なリストは、対応するWikipediaの記事 Magic SysRq Key にあります。

したがって、誤ってやっているのは、リブートするコマンドをカーネルに直接送信することであり、それがそれです。


ソリューション:

カーネルのコンパイル方法に応じて、ただし、システムの実行中にカーネルがリッスンするSysRqコマンドを指定できます。カーネル4.2.0-27-genericを使用して15.10でこれをテストしましたが、動作しますが、いつ、どのカーネルでこれが有効になっているのかを知るのは良いことです。知っているならコメントしてください。

  • 現在を調べる SysRq コマンドフィルター値:

    私たちはどれを学ぶことができます SysRq コマンドは現在、仮想ファイル/proc/sys/kernel/sysrqの内容を確認することにより有効になっています。

    cat /proc/sys/kernel/sysrq
    

    結果は、次のように解釈する必要がある数値になります。

    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
    

    デスクトップにいるときのデフォルト値は、176、つまり128+32+16です。したがって、上記の表に従って、ファイルシステムを再起動、電源オフ、同期、および読み取り専用に再マウントできます。

  • すべて無効にします SysRq コマンド:

    以下のコマンドを実行し、 SysRq ショートカットはその後も機能します(例: Alt+SysRq+B リセット/再起動するには):

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

    これはすべて無効にする必要があります SysRq 次回再起動するまで、現在のセッションのコマンド。

  • 全て可能にする SysRq コマンド:

    手動ですべてを有効にするには SysRq コマンドの場合、代わりに同じ仮想ファイルに値1を書き込みます。

    echo 1 | Sudo tee /proc/sys/kernel/sysrq
    
  • 以前のデフォルトを有効にする SysRq コマンドフィルター:

    リブートしてデフォルト設定を復元するか、値を調整する前に値を確認して記憶した場合は、0/1の代わりにその値を再度設定して、すべてのコマンドを有効/無効にすることができます。

    したがって、元の値が176だった私の場合、次を実行します。

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