Ubuntu + PrtSc + AltGr = КАТАСТРОФИЧЕСКИЙ ОТКАЗ

На 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 on Lenovo? Или что такое проблема на этом следе?

Спасибо

2
задан 5 February 2019 в 05:29

1 ответ

Проблема:

На Вашей клавиатуре Print Screen (PrtSc) и Системный Запрос (SysRq) находятся на той же физической кнопке, как на большинстве разметок, которые я знаю.

Сочетания клавиш Alt+SysRq + [ОПРЕДЕЛЕННАЯ БУКВА] является общеизвестной как Волшебство Команды SysRq, которые непосредственно отправляют команды в ядро.

Они главным образом используются в качестве более безопасной альтернативы "холодному" сбросу, если система полностью разрушается, потому что существует, например, команды, чтобы синхронизировать и размонтировать файловую систему, чтобы предотвратить повреждение и повреждение данных и сбросить/перезагрузить (если Вы нажимаете B как 3-й ключ), или выключитесь (3-й ключ O). Больше информации и полный список комбинаций, даже относительно различных раскладок клавиатуры, могут быть найдены в соответствующем Волшебстве статьи Wikipedia Ключ SysRq.

Таким образом, то, что Вы случайно делаете, должно непосредственно отправить ядру команду в перезагрузку, и это - то, что это делает.


Решение:

В зависимости от того, как было скомпилировано Ваше ядро, Вы однако можете указать, на котором 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
    
3
ответ дан 2 December 2019 в 02:53

Другие вопросы по тегам:

Похожие вопросы: