Какие числовые коды клавиш мне нужно отправить для магической функции sysrq в сеансе VNC?

У меня есть доступ к системной консоли гостя KVM через VNC. Какие кодовые коды мне нужно отправить для последовательности magic sysrq ( Ctrl + Alt + «REISUB») в Linux?

Изменить: в Linux под qemu , запуская showkey и команду sendkey alt-sysrq-h в мониторе QEMU обнаруживают коды клавиш 99 ( SysRq ?), 56 ( Alt ) и 35 ( H ). С помощью команды «Отправка пользовательского ключа UltraVNC Viewer» ни один из этих числовых кодов не вышел правильно при вводе и просмотре через showkey .

2 Solutions collect form web for “Какие числовые коды клавиш мне нужно отправить для магической функции sysrq в сеансе VNC?”

Да, это возможно, по крайней мере, из NoVNC с гостем на базе KVM. Хитрость заключается в том, чтобы понять, что VNC построен для X11. Следовательно, на проводе кодами ключей, которые необходимо отправить, являются те, которые используются внутри X11.

В этом конкретном случае использования это:

 0xffe9 --> alt 0xff15 --> sysrq 0x0062 --> b 

источники

  • Спецификация протокола VNC , раздел 6.4.4 стр. 23
  • Коды клавиш X11

Документация для sysrq находится в исходном коде Linux ( https://github.com/torvalds/linux/blob/master/Documentation/sysrq.txt ). Я очень рекомендую вам прочитать его.

Включен ли ключ SysRq?

Во-первых, убедитесь, что использование волшебного ключа SysRq включено:

 $ cat /proc/sys/kernel/sysrq 1 

Если он говорит 0 то SysRq отключается. Вы можете включить его с помощью:

 $ echo 1 > /proc/sys/kernel/sysrq 

И это будет эффективно немедленно. Есть влияние безопасности на включение волшебного ключа, и на веб-сайте TLDP есть хорошая документация .

Основываясь на некоторых раскладках клавиатуры, найденных в википедии . Вы можете попробовать сочетание с PrtScr / Print Screen .

В моей системе: Alt + PrtScr + "OTHER". Это та же последовательность, что описана в этой статье в Википедии .

Получение кода ключа SysRq:

Вы можете запустить showkey для сканирования кодов клавиш / получения scancodes:

 $ showkey -s 0x38 - i'm pressing Alt 0xb8 - releasing Alt 0xe0 0x2a 0xe0 0x37 - print screen 0xe0 0xaa 0xe0 0xb7 - release print screen 0x38 - i'm pressing Alt 0x54 - i'm also pressing print screen 0x23 - letter H 0xa3 - bye bye letter H 0xd4 - releasing print screen 0xb8 - releasing Alt 

0x54 = 84 будет Alt + PrtScr, который становится SysRq .

Подтвердим, что:

 $ getkeycodes Plain scancodes xx (hex) versus keycodes (dec) for 1-83 (0x01-0x53) scancode equals keycode 0x50: 80 81 82 83 99 0 86 87 0x58: 88 117 0 0 95 183 184 185 0x60: 0 0 0 0 0 0 0 0 0x68: 0 0 0 0 0 0 0 0 ... 

Моя система сопоставляет scancode 0x54 с 0x54 99 который является KEY_SYSRQ . Двойная проверка:

 # rpm -ql kernel-headers | grep input.h | xargs grep KEY_SYSRQ /usr/include/linux/input.h:#define KEY_SYSRQ 99 

Полезные комбинации SysRq:

  • Alt + PrtScr + D – это плохой комбо для моей системы и дает мне помощь

     SysRq : HELP : loglevel(0-9) reBoot Crash terminate-all-tasks(E) memory-full-oom-kill(F) kill-all-tasks(I) thaw-filesystems(J) saK show-backtrace-all-active-cpus(L) show-memory-usage(M) nice-all-RT-tasks(N) powerOff show-registers(P) show-all-timers(Q) unRaw Sync show-task-states(T) Unmount show-blocked-tasks(W) dump-ftrace-buffer(Z) 
  • Alt + PrtScr + H – фактическое нажатие клавиши

     SysRq : HELP : loglevel(0-9) reBoot Crash terminate-all-tasks(E) memory-full-oom-kill(F) kill-all-tasks(I) thaw-filesystems(J) saK show-backtrace-all-active-cpus(L) show-memory-usage(M) nice-all-RT-tasks(N) powerOff show-registers(P) show-all-timers(Q) unRaw Sync show-task-states(T) Unmount show-blocked-tasks(W) dump-ftrace-buffer(Z) 
  • Alt + PrtScr + B – перезагрузка
  • Alt + PrtScr + C – сбой системы (с аварийным ударом)
  • Alt + PrtScr + E – SIGTERM для каждой задачи, кроме init
  • Alt + PrtScr + F – вызов OOM-убийцы
  • Alt + PrtScr + M – выводит статистику памяти / свопа
  • Alt + PrtScr + O – выключение питания
  • Alt + PrtScr + Ssync всех смонтированных файловых систем
  • Alt + PrtScr + U – перезагружает все файловые системы как доступные для чтения
  • Alt + PrtScr + T – выводит список задач со следами
  • VNC с хост-компьютера на Android-телефон под управлением Ubuntu
  • Совместное использование контента / приложений между консолью и консолью VNC
  • как использовать веб-браузер в качестве клиента VNC?
  • Право доступа Centos 7 и VNC?
  • Настроить Cent OS 6.4, чтобы рабочий стол сохранялся после закрытия сеанса VNC?
  • telnet на localhost и loopback IP работает, но не LAN ip (Xen + Ubuntu)
  • Изменение разрешения экрана / геометрии vncserver без randr в Linux
  • VNC-сервер: отключить локальный экран при подключении удаленного клиента VNC
  • Как автоматически запустить TightVNC-сервер как root при запуске Ubuntu?
  • vncserver отказывается запускать
  • Как начать x11vnc через сокет (т. Е. Только при необходимости)
  • Linux и Unix - лучшая ОС в мире.