Ubuntu + PrtSc + AltGr = CRASH
На Ubuntu 15.10 и 15.04 на Lenovo t440p, когда я пишу код в Netbeans и случайно нажимаю кнопки AltGr и PrtSc, в то же время происходит сбой и перезагрузка системы. Это не действие со свежей установленной Ubuntu.
Это след из системного журнала:
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 или предотвратить случайный щелчок PrintScreen на клавиатуре Lenovo? Или в чем проблема на этой трассировке?
Спасибо
1 ответ
Эта проблема:
На вашей клавиатуре экран печати (PrtSc) и системный запрос (SysRq) находятся на одной физической кнопке, как и в большинстве известных мне макетов.
Комбинации клавиш Alt+SysRq+[SPECIFIC LETTER] обычно называются Magic SysRq Commands, которые напрямую отправляют команды ядру.
В основном они используются в качестве более безопасной альтернативы "холодному" сбросу, если система полностью отказала, поскольку, например, есть команды для синхронизации и размонтирования файловой системы, чтобы предотвратить повреждение и повреждение данных, а также для сброса / перезагрузки (если вы нажмете B как 3-й ключ) или выключите питание (3-й ключ O). Дополнительную информацию и полный список комбинаций, даже в отношении различных раскладок клавиатуры, можно найти в соответствующей статье Википедии Magic SysRq Key.
Поэтому вы случайно отправляете ядру команду на перезагрузку, и это то, что он делает.
Решение:
В зависимости от того, как ваше ядро было скомпилировано, вы можете указать, какие команды SysRq должно прослушивать ядро во время работы системы. Я только что проверил это на 15.10 с ядром 4.2.0-27-generic
и это сработало, но было бы неплохо узнать с каких пор или для каких ядер это включено. Пожалуйста, прокомментируйте, если знаете.
Узнайте текущее значение фильтра команды 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