Acessando o Console do Ubuntu 16.04 KVM Guest

2

Quando adicionei o Debian 8 à minha ferramenta de gerenciamento KVM , descobri que eu não pôde acessar o console, a menos que eu tenha adicionado console=ttyS0 à configuração de inicialização do grub . Não foi ótimo, mas funcionou. Estou no processo de adicionar o Ubuntu 16.04 à ferramenta de gerenciamento e, desta vez, quando o convidado está instalado, ele tem o mesmo problema, mas não consigo mais ver as opções do menu grub quando reinicia a instância enquanto conectado ao console. Portanto, não posso implementar a solução alternativa.

Consegui encontrar o endereço IP da instância do convidado executando arp -an no hypervisor e conectando aos IPs na ponte KVM até encontrar o caminho certo. Isso me permitiu confirmar que o convidado estava instalado e funcionando corretamente. Eu gostaria de poder conectar ao console usando sudo virsh console [guest ID] no caso de algo dar errado com a rede ou se o openssh de repente decidir parar de funcionar. O que eu preciso fazer para conectar-me ao console ubuntu 16.04 do convidado do hipervisor?

Meu instinto é que eu só preciso ajustar as configurações que são acessadas por sudo virsh edit [guestID] . No momento eu tenho:

...
<serial type='pty'>
  <target port='0'/>
</serial>
<console type='pty'>
  <target type='serial' port='0'/>
</console>
...

Informações extras

  • Hypervisor do KVM Ubuntu 14.04 usando o kernel 4.2.0-36-generic
  • Virsh 1.2.2
por Programster 08.06.2016 / 09:51

4 respostas

5

Atualização de 13 de março de 2017

Para aqueles que já estão na situação descrita acima, você pode consertar seu convidado existente usando a resposta original abaixo. No entanto, para aqueles de vocês que prefeririam nunca mais passar por essa dor novamente, basta adicionar o seguinte para a seção% post do seu arquivo de kickstart:

%post --nochroot
(
    sed -i "s;quiet;quiet console=ttyS0;" /target/etc/default/grub
    sed -i "s;quiet;quiet console=ttyS0;g" /target/boot/grub/grub.cfg
) 1> /target/root/post_install.log 2>&1
%end

Isso garantirá que as alterações necessárias no grub sejam feitas conforme descrito abaixo, para que os novos convidados que você implantar usando o arquivo de kickstart não sofram com esse problema.

Resposta Original

Para aqueles que conseguem se conectar via SSH depois de descobrir o IP usando arp -an no host, você pode executar os seguintes passos ( tirada da parte inferior desta página ) quando você estiver conectado ao convidado .

Edite o arquivo de configuração do grub:

sudo vim /etc/default/grub

Adicione o texto console=ttyS0 ao parâmetro GRUB_CMDLINE_LINUX_DEFAULT , conforme mostrado abaixo:

Em seguida, o menu grub deve ser reconstruído usando sua alteração executando:

sudo update-grub

Agora você deve poder se conectar a um console de trabalho com virsh console [guest ID] .

Isso continuará funcionando, pois futuros kernels serão adicionados ao sistema, mas eu prefiro ter uma solução que não exige que eu tenha acesso SSH ao convidado em primeiro lugar .

    
por 08.06.2016 / 10:29
3

Obrigado @Programster solução funciona para mim. Como eu nem tenho acesso SSH, tenho que instalar e usar o virt-edit.

sudo apt install libguestfs-tools
sudo virt-edit -d myVM /boot/grub/grub.cfg

Substitua all 'quiet' por 'quite console = ttyS0' e inicie minha VM para conexão do console.

virsh start myVM && virsh console myVM

Não se esqueça de editar e atualizar o grub per @programster após o login.

    
por 11.10.2017 / 06:22
0

Corrija a configuração do grub em uma etapa de pós-instalação, como sugerido na excelente resposta do @Programster. Aqui está como fazer isso em outras situações.

Ao instalar o Ubuntu 16.04 usando um arquivo de pré-configuração do Debconf, adicione-o ao seu arquivo de pré-configuração:

d-i preseed/late_command string ( \
    sed -i "s;quiet;quiet console=ttyS0;" /target/etc/default/grub;    \
    sed -i "s;quiet;quiet console=ttyS0;g" /target/boot/grub/grub.cfg \
) 1> /target/root/post_install.log 2>&1

Ao instalar o RHEL 7 ou o CentOS 7 usando o Kickstart, adicione isso ao seu arquivo de kickstart:

%post --nochroot --log /mnt/sysimage/root/post.log
(
    sed -i "s;quiet;quiet console=ttyS0;"  /mnt/sysimage/etc/default/grub
    sed -i "s;quiet;quiet console=ttyS0;g" /mnt/sysimage/boot/grub2/grub.cfg
) > /mnt/sysimage/root/post_install.log 2>&1
%end
    
por 11.03.2018 / 20:09