qemu-discuss
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-discuss] How to run qemu with -nographic and -monitor but stil


From: Ciro Santilli
Subject: Re: [Qemu-discuss] How to run qemu with -nographic and -monitor but still be able to send Ctrl+C to the guest?
Date: Wed, 11 Apr 2018 13:33:05 +0100

On Tue, Apr 10, 2018 at 9:54 PM, Thomas Huth <address@hidden> wrote:
> On 10.04.2018 16:06, Ciro Santilli wrote:
>> On Tue, Apr 10, 2018 at 6:27 AM, Thomas Huth <address@hidden> wrote:
>>> On 10.04.2018 02:10, Ciro Santilli wrote:
>>>> On Mon, Apr 9, 2018 at 1:33 PM, Thomas Huth <address@hidden> wrote:
>>>>> On 08.04.2018 12:39, Ciro Santilli wrote:
>>> [...]
>>>>>> Is there a way to both keep my `Ctrl-C` and `-monitor` working with
>>>>>> `-nographic`?
>>>>>>
>>>>>> Full QEMU command:
>>>>>>
>>>>>>     qemu-system-x86_64 -append 'root=/dev/vda console=ttyS0' -kernel
>>>>>> 'bzImage' -drive file='rootfs.ext2.qcow2,if=virtio,format=qcow2'
>>>>>> -nographic -monitor telnet::45454,server,nowait
>>>>>
>>>>> I think you need a chardev with signal=off for that. Try something like:
>>>>>
>>>>> qemu-system-x86_64  -nographic -monitor telnet::45454,server,nowait \
>>>>>   -chardev stdio,id=s1,signal=off \
>>>>>   -serial none -device isa-serial,chardev=s1
>>>>>
>>>>
>>>> I tried that and Ctrl+C does get passed to the guest as I wanted.
>>>>
>>>> However, when I do this, I noticed that I can't pass Ctrl+A X to
>>>> easily quit QEMU (I know I can do quit on the monitor).
>>>>
>>>> Is there a way to also keep Ctrl+A X working, in addition to having
>>>> Ctrl+C passed to the guest?
>>>
>>> Yes, you need to multiplex the stdio output with a HMP monitor:
>>>
>>> qemu-system-x86_64  -nographic -monitor telnet::45454,server,nowait \
>>>      -chardev stdio,id=s1,signal=off,mux=on -serial none \
>>>      -device isa-serial,chardev=s1 -mon chardev=s1,mode=readline
>>>
>>
>> Thanks, that worked perfectly!
>>
>> Do you know how to do the same thing for `qemu-system-arm -M
>> versatilepb` or `qemu-system-aarch64 -M virt`?
>
> Not sure ... at least versatilepb seems to use an embedded UART, so
> -device likely does not work there.
>
> But you could try to simply use "-serial mon:stdio" here. Actually, now
> that I remembered that option ... that might even also work on x86
> instead of all that complicated stuff that I told you before:
>
> qemu-system-x86_64 -nographic -monitor telnet::45454,server,nowait \
>                    -serial mon:stdio
>
> (I initially didn't know that you also wanted to have a HMP monitor /
> Ctrl-A X here, too, that's why I did not think of this solution in my
> first mail)
>

Yes sorry, I only remembered Ctrl+X A halfway (because I was quitting
QEMU with Ctrl+C before).

OK! -serial mon:stdio instead of the previous options worked perfectly
on all arches!

There is now just one minor quirk which I can live with: for arm and
aarch64, if I hit Ctrl + C while the kernel is booting and spitting
out dmesg messages, then the userland terminal is dead: it does not
show any characters when I type, nor any output. This is my full
aarch64 command for example:

```
./aarch64-softmmu/qemu-system-aarch64 \
-M virt \
-append 'root=/dev/vda nokaslr norandmaps printk.devkmsg=on printk.time=y' \
-cpu cortex-a57 \
-drive 
file="${dir}/out/aarch64/buildroot/images/rootfs.ext2.qcow2,if=virtio,format=qcow2"
\
-kernel "${dir}/out/aarch64/buildroot/images/Image" \
-monitor telnet::45454,server,nowait \
-nographic \
-serial mon:stdio \
```

images at: 
https://github.com/cirosantilli/linux-kernel-module-cheat/releases/tag/uploads

@pete maybe you have some arm insight on this?

>  HTH,
>   Thomas



reply via email to

[Prev in Thread] Current Thread [Next in Thread]