Как передать Ctrl-C гостю при запуске qemu с -nographic?

11

Я настроил Gem в Qemu следующим образом:

GRUB_TERMINAL="serial console"
GRUB_SERIAL_COMMAND="serial"
GRUB_CMDLINE_LINUX="..console=ttyS0"

и запустите qemuпроцесс с параметром -nographicкомандной строки. Это позволяет использовать текущий терминал для последовательной консоли и qemuконсоли монитора. Однако теперь, когда я нажимаю Ctrl+ Cвнутри работающей виртуальной машины, она перехватывается qemuи останавливает процесс.

Как я должен пройти Ctrl+ Cили любое другое нажатие клавиши CTRLв Qemu?

отметка
источник

Ответы:

16

В вашей оболочке, прежде чем запускать qemu, запустите "stty intr ^]", чтобы изменить ключ прерывания с ^ c на ctrl-]

Таким образом, ctrl-c будет передан qemu, но вы все равно можете прервать само qemu, нажав ctrl-]

Майкл Браун
источник
2
Чтобы переопределить Ctrl-Z (фон) тоже есть stty susp ^]. Для Ctrl- \ (выйти) используйте stty quit ^]. С несколькими определениями для одного символа это порядок приоритета: intr quit susp.
Лекенштейн
4

Вы можете попробовать использовать sendkeyкоманду, используя -monitor stdio. Хотя, видимо, -display none -serial mon:stdioвариант должен пройти Ctrl+ cдо гостя.

Вы также можете создать разъем для монитора , например так:

qemu -display none -monitor unix:/tmp/qemu-monitor,server,nowait

А затем подключитесь к монитору, чтобы использовать sendkey с socatтаким образом:

socat - UNIX-CONNECT:/tmp/qemu-monitor

Теперь вы можете отправить свои ключи, например так:

(qemu) sendkey ctrl-c
sendkey ctrl-c
Кривети Михай
источник
Спасибо. Не могли бы вы сказать мне, как я могу «прыгнуть» в консоль монитора qemy (т.е. какое нажатие клавиши я должен нажать), если я запускаю qemu в терминале PuTTY?
Отметить
В GUI - Ctrl + Alt, затем Shift + 2 для переключения на монитор или Shift-1 для переключения на гостевую ОС. Это не работает в консоли. Там вы можете использовать сокетный подход, открыть другое screenокно и подключиться к нему через socat. Вы также можете использовать -monitor stdioдля перенаправления на ваш терминал вместо этого.
Кривети Михай
3

Удалить -monitorили добавить-serial mon:stdio

Начиная с QEMU 2.10.1, Ubuntu 17.10 Ctrl-Cпо умолчанию передается гостю без проблем при использовании -nographic.

Однако, если вы также используете эту -monitorопцию, поведение изменится, и Ctrl-Cвместо этого убивает QEMU.

Как -monitorэто обычно используется: Как переключиться на панель управления QEMU с помощью -nographics? | Супер пользователь

Если вам нужно -monitor, вы можете вернуть Ctrl + C с помощью -serial mon:stdio: Как запустить qemu с -nographic и -monitor, но при этом иметь возможность отправить Ctrl + C гостю и выйти с помощью Ctrl + AX? | Переполнение стека

Сиро Сантилли 冠状 病毒 审查 六四 事件 法轮功
источник