จะส่ง Ctrl-C ไปยังแขกเมื่อเรียกใช้ qemu ด้วย -nographic ได้อย่างไร


11

ฉันกำหนดค่าด้วงของ Qemu ด้วยวิธีต่อไปนี้:

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

และเรียกใช้qemuกระบวนการด้วย-nographicตัวเลือกบรรทัดคำสั่ง สิ่งเหล่านี้ช่วยให้สามารถใช้เทอร์มินัลปัจจุบันสำหรับคอนโซลอนุกรมและqemuคอนโซลการตรวจสอบ อย่างไรก็ตามตอนนี้เมื่อใดก็ตามที่ฉันกดCtrl+ Cภายใน VM ที่กำลังรันมันจะถูกขัดขวาง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 exit susp
Lekensteyn

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เพื่อเปลี่ยนเส้นทางไปยังเทอร์มินัลของคุณแทน
Criveti Mihai

3

ลบ-monitorหรือเพิ่ม-serial mon:stdio

ในฐานะของ QEMU 2.10.1, อูบุนตู 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 ​​ได้อย่างไร | กองล้นมากเกินไป

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.