Comment passer Ctrl-C à l'invité lors de l'exécution de qemu avec -nographic?

11

J'ai configuré le ver de Qemu de la manière suivante:

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

et exécutez le qemuprocessus avec l' -nographicoption de ligne de commande. Cela permet d'utiliser le terminal actuel pour la console série et la qemuconsole moniteur. Cependant, chaque fois que j'appuie sur Ctrl+ Cà l'intérieur de la machine virtuelle en cours d'exécution, il est intercepté qemuet arrête le processus.

Comment suis-je censé passer Ctrl+ Cou toute autre frappe de touche impliquant CTRLdans Qemu?

marque
la source

Réponses:

16

Dans votre shell, avant d'exécuter qemu, exécutez "stty intr ^]" pour changer la clé d'interruption de ^ c en ctrl-]

De cette façon, ctrl-c sera transmis à qemu, mais vous pouvez toujours interrompre qemu lui-même en appuyant sur ctrl-]

Michael Brown
la source
2
Pour remplacer Ctrl-Z (arrière-plan) aussi, il y en a stty susp ^]. Pour Ctrl- \ (quitter), utilisez stty quit ^]. Avec plusieurs définitions pour un seul caractère, voici l'ordre de priorité: intr quit susp.
Lekensteyn
4

Vous pouvez essayer d'utiliser la sendkeycommande avec -monitor stdio. Bien qu'apparemment l' -display none -serial mon:stdiooption doit passer Ctrl+ cpar l'invité.

Vous pouvez également créer une prise moniteur , comme ceci:

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

Et puis, connectez-vous au moniteur pour utiliser sendkey avec socatcomme ceci:

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

Vous pouvez maintenant envoyer vos clés, comme ceci:

(qemu) sendkey ctrl-c
sendkey ctrl-c
Criveti Mihai
la source
Merci. Pourriez-vous me dire comment puis-je «sauter» dans la console du moniteur qemy (c'est-à-dire sur quelle touche dois-je appuyer), si j'exécute qemu dans le terminal PuTTY?
Mark
Dans l'interface graphique - Ctrl + Alt puis Shift + 2 pour basculer vers le moniteur, ou Shift-1 pour revenir au système d'exploitation invité. Cela ne fonctionne pas dans la console. Là, vous pouvez utiliser l'approche socket, ouvrir une autre screenfenêtre et vous y connecter via socat. Vous pouvez également utiliser -monitor stdiopour rediriger vers votre terminal à la place.
Criveti Mihai
3

Supprimer -monitorou ajouter-serial mon:stdio

À partir de QEMU 2.10.1, Ubuntu 17.10 Ctrl-Cest transmis par défaut à l'invité sans problème lors de l'utilisation -nographic.

Cependant, si vous utilisez également l' -monitoroption, les changements de comportement et le Ctrl-Ctue QEMU à la place.

Voici comment -monitorutiliser normalement: Comment basculer vers le panneau de contrôle QEMU avec -nographics? | Super utilisateur

Si vous en avez besoin -monitor, vous pouvez récupérer Ctrl + C avec -serial mon:stdio: Comment exécuter qemu avec -nographic et -monitor tout en pouvant envoyer Ctrl + C à l'invité et quitter avec Ctrl + AX? | Débordement de pile

Ciro Santilli 冠状 病毒 审查 六四 事件 法轮功
la source