Como passar Ctrl-C para o convidado ao executar o qemu com -nographic?

11

Eu configurei o grub do Qemu da seguinte maneira:

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

e execute o qemuprocesso com a -nographicopção de linha de comando. Isso permite usar o terminal atual para o console serial e qemuo console do monitor. No entanto, agora, sempre que pressiono Ctrl+ Cdentro da VM em execução, ela é interceptada qemue encerra o processo.

Como devo passar Ctrl+ Cou qualquer outro pressionamento de tecla envolvendo o CTRLQemu?

Marca
fonte

Respostas:

16

No seu shell, antes de executar o qemu, execute "stty intr ^]" para alterar a chave de interrupção de ^ c para ctrl-]

Dessa forma, ctrl-c será passado para o qemu, mas você ainda pode interromper o qemu pressionando ctrl-]

Michael Brown
fonte
2
Para substituir Ctrl-Z (plano de fundo) também, existe stty susp ^]. Para Ctrl- \ (sair), use stty quit ^]. Com várias definições para um único caractere, esta é a ordem de precedência: intr quit susp.
Lekensteyn
4

Você pode tentar usar o sendkeycomando usando -monitor stdio. Embora aparentemente a -display none -serial mon:stdioopção deva passar Ctrl+ cpara o hóspede.

Você também pode criar um soquete de monitor , como este:

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

E então, conecte-se ao monitor para usar o sendkey da socatseguinte maneira:

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

Agora você pode enviar suas chaves, assim:

(qemu) sendkey ctrl-c
sendkey ctrl-c
Criveti Mihai
fonte
Obrigado. Você poderia me dizer como posso 'pular' no console do monitor qemy (ou seja, que tecla devo pressionar), se eu executar o qemu no terminal PuTTY?
Mark
Na GUI - Ctrl + Alt e Shift + 2 para alternar para o monitor ou Shift-1 para retornar ao SO convidado. Isso não funciona no console. Lá, você pode usar a abordagem de soquete, abrir outra screenjanela e conectar-se a ela via socat. Você também pode usar -monitor stdiopara redirecionar para o seu terminal.
Criveti Mihai
3

Remover -monitorou adicionar-serial mon:stdio

A partir do QEMU 2.10.1, Ubuntu 17.10, Ctrl-Cé passado por padrão para o convidado sem problemas ao usar -nographic.

No entanto, se você também usar a -monitoropção, o comportamento será alterado e o Ctrl-CQEMU será eliminado.

É assim -monitorque normalmente seria usado: Como alternar para o painel de controle do QEMU com -nographics? | Superusuário

Se precisar -monitor, você pode recuperar Ctrl + C com -serial mon:stdio: Como executar o qemu com -nographic e -monitor, mas ainda conseguir enviar Ctrl + C ao convidado e sair com Ctrl + AX? | Estouro de pilha

Ciro Santilli adicionou uma nova foto
fonte