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. :)


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

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.


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.


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


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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.