Como conecto um terminal serial a uma instância KVM?

Como conecto um terminal serial a uma instância KVM?

Talvez eu esteja entendendo mal o que o KVM é capaz, mas a capacidade de adicionar/remover hardware na VM parece implicar que posso adicionar uma porta serial que atua como um terminal.

Então, minhas perguntas são:

  1. Quais configurações são melhores para a distribuição convidada do FreeBSD? (Existem muitos!)
  2. Como faço para acessar o referido terminal do meu host Linux?

Responder1

Agora posso responder minha própria pergunta com base emStefancomentário de e os dois artigos vinculados:

Aqui está a solução:

  • Você não precisa editar nada relacionado à configuração do host, desde que ele tenha o dispositivo serial padrão apontando para pty.
  • Certifique-se de que o parâmetro de inicialização do seu kernel tenha anexado: serial=tty0 console=ttyS0,115200n8. Geralmente conseguido por edição/boot/grub/menu.lst
  • Configure /etc/inittabe anexe a linha T0:S12345:respawn:/sbin/getty -hL ttyS0 115200 vt100para iniciar um getty e fornecer o prompt de login.

Posso confirmar que isso funciona para mim usando um sistema fedora (embora eu tenha que definir enforcing=0como um parâmetro adicional porque o sistema em questão é o fedora rawhide executando o SELinux MLS).

Acho que a partir daí provavelmente poderei descobrir como fazer o mesmo com o freebsd.

Obrigado Stefan!

Responder2

Em resposta a como configurar sua máquina FreeBSD, existem dois casos principais para obter serial. Se você estiver instalando o FreeBSD apenas com serial, as instruções seriais do bootloader serão necessárias. Se você já possui um console e deseja apenas ter acesso serial também, siga as instruções seriais pós-instalação.

Série do bootloader

  • Pressione 2na tela de opções de inicialização do FreeBSD para escapar para o prompt do carregador
  • tiposet console=comconsole
    • se você perder a interatividade neste momento, verifique se a taxa de transmissão do tty virtual é 9600
  • tipoautoboot

Isso deve permitir que o restante da instalação seja feito pela interface serial. Se você quiser continuar tendo acesso serial após a instalação do FreeBSD, antes de reinicializar no final da instalação você deverá ir para o prompt de comando.

Série pós-instalação

Na consola:

  • tipoecho 'console="comconsole"' >> /boot/loader.conf
  • carregar /etc/ttysem vi
  • Modifique a linha começando com ttyu0 (pode ser ttyd0 em outras versões do FreeBSD)
    • Nessa linha mude dialuppara vt100e offparaon
  • após a reinicialização, o terminal serial deve mostrar o processo de inicialização e terminar com um prompt de login
    • Nota: configurar console="comconsole"pode /boot/loader.conffazer com que as mensagens de inicialização apareçam apenas na interface serial. Apenas modifique /etc/ttysse não quiser o log de inicialização em serial.

Referências

http://www.freebsd.org/doc/handbook/serialconsole-setup.html

http://www.freebsd.org/doc/handbook/term.html

Responder3

Bem, você tem que emular uma porta serial dentro do emulador, é claro, e tê-la acessível no host. O sistema operacional convidado deve colocar algo em sua 'porta serial de hardware', como um prompt de login via, por exemplo, getty_ps. Agora, eu pessoalmente não tive que usá-lo dessa maneira. Principalmente a porta serial emulada no sistema operacional convidado é usada para informações de depuração (o Haiku ainda a usa por padrão) e então é capturada pelo emulador (como o VMware) como um arquivo de texto simples para ter as informações de depuração disponíveis. Tentarei aqui fazer algo rodar no console serial emulado dentro do qemu.

Responder4

A resposta do OP funciona, mas quando tentei com meu ambiente (host Linux, cliente Linux)

  1. serial=tty0não era necessário
  2. usar xterm em vez de vt100 /etc/inittabfunciona melhor (você obtém cor)

informação relacionada