Como iniciar o qemu diretamente no console (* não * em maldições ou SDL)

18

Eu me lembro de poder iniciar o qemu apenas com a saída do emulador de terminal, com a janela gráfica desativada. E aqui não me refiro à interface ncurses, essa é legal, mas quero que a saída flua diretamente para o meu terminal, para facilitar o corte e a colagem.

Eu tentei:

qemu -nographic binary.img # simply no display
qemu -curses binary.img # nice text output, but not directly flowing in the terminal
qemu -noframe -curses binary.img # same as above
qemu -nographic -curses binary.img

Eu acho que uma solução aceitável seria para eu poder redimensionar o console de maldições para caber no terminal que estou usando. No momento, é irritante porque não se encaixa no tamanho do terminal ...

qemu -curses  binary.img



           SeaBIOS (version 1.7.0-20120603_194846-gandalf)



           iPXE (http://ipxe.org) 00:03.0 C900 PCI2.10 PnP PMM+07FC86A0+07F886A0 C900


           Booting from Hard Disk...
           [...]

Observe como o display é recuado 12 espaços? Irritante. :)

anarcat
fonte
Use um terminal de 80 colunas?
Michael Hampton
Eu poderia ter jurado que havia uma maneira de deixar esse fluxo corretamente, talvez eu não me lembro esse direito ...
anarcat
11
Eu me pergunto se isso não deve ser mesclado com stackoverflow.com/questions/19565116/... e / ou stackoverflow.com/questions/18098455/...
anarcat
related: stackoverflow.com/questions/6710555/…
Ciro Santilli escreveu:

Respostas:

18

Pergunta antiga, mas ainda pode interessar às pessoas.

Resposta curta:

qemu -nographic -serial mon:stdio -append 'console=ttyS0' binary.img

ttyS0válido na maioria dos PCs. seria algo diferente no sistema ARM.

Em seguida, a porta serial e o QEMU são multiplexados na sua saída. Você pode alternar entre eles com ctrl-A + C + ENTER.

Resposta longa: confira este blog , é incrível.

Fred
fonte
11
Parecia funcionar sem serial para mim.
Ciro Santilli escreveu: 21/05/15
sim parece assim por diante mais recente qemu ainda é interessante saber que você pode também para multiplex de série + qemu console no stdio
Fred
11
Infelizmente, isso não redireciona nenhuma saída do BIOS, incluindo a saída int 0x10 usada pelo código em modo real; você só começa a obter saída quando o kernel do Linux é inicializado o suficiente para abrir a porta serial.
David Given
@DavidGiven Suponho que seja uma questão do que o código do BIOS (que é o SeaBIOS, não o qemu adequado) realmente faz com a "saída" de 0x10.
DepressedDaniel
Você também pode adicionar console=ttyS0a GRUB_CMDLINE_LINUX_DEFAULTem /etc/grub(certifique-se chamar update-grubdepois) para que possa ocorrer automaticamente.
31518 Steve Steve
3

Instale o SGABIOS - ISTR que as versões recentes do Qemu o utilizam automaticamente quando executadas com -nographic.

sendmoreinfo
fonte
curiosamente, que não parece ser empacotado em Debian, então eu duvido que isso era o que eu estava usando ...
anarcat
1

Você pode atualizar o GRUB para passar as opções necessárias para o kernel. Estou usando o Ubuntu 18.04 e fiz o seguinte:

Atualize o grub no sistema operacional convidado:

  • sudoedit /etc/default/grub
  • Mude GRUB_CMDLINE_LINUX=""paraGRUB_CMDLINE_LINUX="console=tty0 console=ttyS0,9600n8"
  • corre sudo update-grub

Reinicie o sistema operacional convidado usando o seguinte:

qemu-system-x86_64 \
  -drive file=ubuntu-18.04-live-server-amd64.img.qcow2,format=qcow2 \
  -nographic \
  -m 4G \
;

Eu recomendo adicionar -nic user,hostfwd=tcp:127.0.0.1:2222-:22ou similar como uma opção também, isso permitirá a conectividade ssh através da ssh -p 2222 localhostqual fornece uma interface um pouco melhor do que o console.

As opções do console são copiadas do HOWTO serial remoto do tldp

Julian
fonte
a questão não era realmente sobre como configurar o grub, mas mais qemu. mas acredito que, como diz a primeira resposta, isso -nographicestá correto. obrigado por sua contirbution! :)
anarcat