Como redirecionar a saída serial do QEMU para um arquivo e o terminal ou uma porta?

1

Eu gostaria de poder interagir com o sistema através da linha de comando, mas também obter a saída para um arquivo ao mesmo tempo.

Se eu fizer:

qemu-sysem-x86_64 -serial stdio |& tee file

então funciona principalmente, mas eu gostaria de evitar qualquer operação de Bash e deixar o QEMU fazer o trabalho pesado para mim. Por exemplo, estou usando o Python e não é tão simples implementar um confiável teelá.

Se eu fizer:

qemu-sysem-x86_64 -serial file:myfile

Ele redireciona para o arquivo e não posso dar nenhuma entrada.

Existe uma maneira de "combinar" ambos file:e stdioum único -serial?

Múltiplas -serialentradas apenas criam várias portas seriais em vez de modificar uma única.

Eu também estou interessado se funciona com telnet como em:

-serial tcp::1234,server,nowait

http://lists.nongnu.org/archive/html/qemu-discuss/2018-11/msg00011.html

Ciro Santilli 中心 改造 中心 996ICU 六四 事件
fonte

Respostas:

1

Recentemente, encontrei exatamente o mesmo problema e encontrei uma solução:

De acordo com QEMU 3.1.0 documentação , você pode usar um chardevcom opções stdioe logfilee redirecionar o seu serialpara ele.

qemu-system-x86_64 -chardev stdio,id=char0,logfile=serial.log,signal=off \
  -serial chardev:char0

Além disso, se você usar a mux=onopção dentro chardev, você pode redirecionar um monitor ( mon), outra serialou outras interfaces que suportam chardevbackend para ele simultaneamente:

qemu-system-x86_64 -chardev stdio,id=char0,mux=on,logfile=serial.log,signal=off \
  -serial chardev:char0 -mon chardev=char0

Veja o exemplo no documento. link acima.

Jan Samek
fonte
1
Impressionante!!! Você também pode fornecer a CLI completa para fazer a monconfiguração (esperançosamente algo análogo a -serial mon:stdiomas com logging)? Eu também queria isso, mas esqueci de mencionar em questão, e minhas tentativas iniciais falharam.
Ciro Santilli 中心 改造 中心 996ICU 六四 事件
1
Em particular, gostaria que o Ctrl + C fosse para guest em vez de matar o QEMU. Idealmente, a saída mon não deve ir para o arquivo de log.
Ciro Santilli 中心 改造 中心 996ICU 六四 事件
Os sinais como Ctrl + C podem ser ativados ou desativados com signal=on|offopção dentro chardev. Eu vou fornecer o monexemplo como edição.
Jan Samek
Perfeito! signal=offfaz o que eu queria.
Ciro Santilli 中心 改造 中心 996ICU 事件 事件
signal=offparece ser o caminho preferido, irá adicioná-lo como edição.
Jan Samek