KVM Guest instalado a partir do console. Mas como chegar ao console do convidado?

27

Estou tentando instalar um convidado totalmente virtualizado (Fedora 14 x86_64) no KVM (RHEL 6), usando apenas a linha de comando (hypervisor e convidado). Vai sem erros e sem um resultado tangível. Gostaria de saber como fazer uma instalação somente de texto.

Então, aqui está o que eu fiz:

# virt-install \
--name=FE --ram=756 --vcpus=1 \
--file=/var/lib/libvirt/images/FE.img  --network bridge:br0 \
--nographics --os-type=linux  \
--extra-args='console=tty0' -v \
--cdrom=/media/usb/Fedora-14-x86_64-Live-Desktop.iso 


Starting install...
Creating domain...                                                                                                                                                        |    0 B     00:00     
Connected to domain FE
Escape character is ^]
ÿ

Agora o que? Pelo que entendi depois de googling por alguns dias, eu deveria ver a saída do convidado da instalação do texto, mas nada acontece. O virt-viewer não pode se conectar a ele, gentilmente sugerindo que eu explore todas as opções adicionando --help (o que eu fiz). Se eu me reconectar com o virsh, eu vejo isso:

Domain installation still in progress. You can reconnect to 
the console to complete the installation process.
[root@v ~]
# virsh console FEConnected to domain FE
Escape character is ^]

Isso mostra que a VM está em execução

# virsh list
 Id Name                 State
----------------------------------
  8 FE                   running

Log do Qemu:

LC_ALL=C PATH=/sbin:/usr/sbin:/bin:/usr/bin /usr/libexec/qemu-kvm -S -M rhel6.0.0 -enable-kvm -m 756 -smp 1,sockets=1,cores=1,threads=1 -name FE -uuid 6989d008-7c89-424c-d2d3-f41235c57a18 -nographic -nodefconfig -nodefaults -chardev socket,id=monitor,path=/var/lib/libvirt/qemu/FE.monitor,server,nowait -mon chardev=monitor,mode=control -rtc base=utc -no-reboot -boot d -drive file=/var/lib/libvirt/images/FE.img,if=none,id=drive-ide0-0-0,format=raw,cache=none -device ide-drive,bus=ide.0,unit=0,drive=drive-ide0-0-0,id=ide0-0-0 -drive file=/media/usb/Fedora-14-x86_64-Live-Desktop.iso,if=none,media=cdrom,id=drive-ide0-1-0,readonly=on,format=raw -device ide-drive,bus=ide.1,unit=0,drive=drive-ide0-1-0,id=ide0-1-0 -netdev tap,fd=20,id=hostnet0 -device rtl8139,netdev=hostnet0,id=net0,mac=52:54:00:0a:65:8d,bus=pci.0,addr=0x2 -chardev pty,id=serial0 -device isa-serial,chardev=serial0 -usb -device virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x3 
char device redirected to /dev/pts/1

Saída de /etc/libvirt/qemu/FE.xml

# cat /etc/libvirt/qemu/FE.xml 
<domain type='kvm'>
  <name>FE</name>
  <uuid>6989d008-7c89-424c-d2d3-f41235c57a18</uuid>
  <memory>774144</memory>
  <currentMemory>774144</currentMemory>
  <vcpu>1</vcpu>
  <os>
    <type arch='x86_64' machine='rhel6.0.0'>hvm</type>
    <boot dev='hd'/>
  </os>
  <features>
    <acpi/>
    <apic/>
    <pae/>
  </features>
  <clock offset='utc'/>
  <on_poweroff>destroy</on_poweroff>
  <on_reboot>restart</on_reboot>
  <on_crash>restart</on_crash>
  <devices>
    <emulator>/usr/libexec/qemu-kvm</emulator>
    <disk type='file' device='disk'>
      <driver name='qemu' type='raw' cache='none'/>
      <source file='/var/lib/libvirt/images/FE.img'/>
      <target dev='hda' bus='ide'/>
      <address type='drive' controller='0' bus='0' unit='0'/>
    </disk>
    <disk type='block' device='cdrom'>
      <driver name='qemu' type='raw'/>
      <target dev='hdc' bus='ide'/>
      <readonly/>
      <address type='drive' controller='0' bus='1' unit='0'/>
    </disk>
    <controller type='ide' index='0'>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x1'/>
    </controller>
    <interface type='bridge'>
      <mac address='52:54:00:0a:65:8d'/>
      <source bridge='br0'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>
    </interface>
    <serial type='pty'>
      <target port='0'/>
    </serial>
    <console type='pty'>
      <target port='0'/>
    </console>
    <memballoon model='virtio'>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
    </memballoon>
  </devices>
</domain>

Eu obviamente estou sentindo falta de algo que muitos outros não entendem, mas o que é isso? Thanx antecipadamente!

    
por badbishop 10.04.2011 / 17:17

6 respostas

9

Eu copiei --extra-args='console=ttyS0' em algum lugar da Internet da última vez, funciona!

  • Não há necessidade de dois comandos "console", que apenas abrem dois consoles em vez de um
  • Não é necessário especificar manualmente a taxa de transmissão.
  • A opção "li" "serial" foi descontinuada
  • O dispositivo de console RedHat é "/ dev / ttyS0", não "/ dev / tty0"

Veja: link

    
por 19.06.2012 / 06:42
7

--nographics é usado e você não tem nenhum console configurado no guest, além do console tty0. Se você quer um console gráfico, especialmente disponível remotamente, você precisa ativar vga e vnc, ou qxl e spice. Este é um exemplo: link

link ou link também é uma solução.

    
por 10.04.2011 / 17:31
6

Eu tive um problema semelhante ao tentar executar uma instalação somente de texto do CentOS. Tudo se resume a adicionar argumentos do kernel para especificar o console de saída serial console=ttyS0 , para que você possa se conectar a ele quando --graphics none ou --nographics for usado. Do manual de virt-install :

--graphics none

No graphical console will be allocated for the guest. Fully virtualized guests (Xen FV or QEmu/KVM) will need to have a text console configured on the first serial port in the guest (this can be done via the --extra-args option). Xen PV will set this up automatically. The command 'virsh console NAME' can be used to connect to the serial device.

Consegui resolvê-lo de duas maneiras:

  1. modificando a imagem iso e usando a opção --cdrom
  2. expondo a imagem iso como compartilhamento NFS e usando a opção --location com --extra-args

1. Modificando a imagem

Para modificar os parâmetros do kernel no disco de instalação iso:

  1. Obtenha um programa que permita manipular imagens, por exemplo, isomaster .
  2. Vá para o arquivo isolinux/isolinux.cfg na imagem, abra-o, encontre a primeira linha com initrd= e anexe console=ttyS0 a ele e a todas as outras linhas que tiverem o parâmetro mencionado.
  3. Salve o arquivo e a imagem.
  4. Use a imagem modificada com virt-install como de costume, por exemplo:

    $ sudo virt-install --name centos-vm --ram 1024 --disk path=/home/user/domains/centos-vm --cdrom /home/user/images/centos-modified.iso --os-type linux --nographics --accelerate
    

Feito.

2. Usando um compartilhamento NFS

  1. Montar a imagem:

    $ sudo mount -o loop,unhide -t iso9660 -r /home/user/images/CentOS.iso /home/user/mnt/cdrom
    
  2. Inicie o serviço NFS, se não estiver em execução: service nfs start

  3. Adicione a seguinte linha em /etc/exports para disponibilizá-la aos clientes:

    /home/user/mnt/cdrom    *(ro,insecure,all_squash)
    
  4. Atualize a tabela de exportação do sistema com:

    $ exportfs -r
    
  5. Use o compartilhamento com virt-install certificando-se de inserir o --extra-args , por exemplo:

    $ sudo virt-install --name centos-vm --ram 1024 --disk path=/home/user/domains/centos-vm --location /home/user/mnt/cdrom --os-type linux --nographics --accelerate --extra-args="console=ttyS0"
    
  6. Durante a instalação do CentOS, você recebe um aviso perguntando sobre a localização dos arquivos de instalação. Você tem que digitar o endereço da sua máquina e o caminho completo para o compartilhamento.

Feito.

    
por 08.04.2013 / 15:39
2

Você precisa executar o instalador do Fedora no modo de texto. Tente adicionar "texto" aos argumentos extras. Alternativamente, você poderia tentar adicionar "vnc", que permitirá que você se conecte ao instalador através do VNC assim que for iniciado

    
por 05.08.2011 / 23:01
1

Eu tenho feito minhas instalações por um tempo agora usando sapateiro e koan. Dentro do cobbler eu configurei minhas opções do kernel como no meu perfil Centos60-x86_64:

Kernel Options: serial console=ttyS0,115200
Kernel Options (Post Install): console=ttyS0,115200

Após a inicialização, você pode usar console = tty0 console = ttS0,115200 para que o console seja exibido em dois dispositivos; isso não funciona para a instalação. Se você editar as opções do grub em / etc / grub e regenerar o grub.conf, as configurações do console serial sobreviverão a uma atualização do kernel. Adicione "texto" à linha de comando do kernel para evitar que o instalador inicie uma GUI.

Quando minhas instâncias convidadas KVM são iniciadas, conecto-me a elas enquanto estou conectado ao host KVM e conecto-me ao console de um convidado assim:

[root@vmhost ~]# virsh console guestvm

Eu vejo isso no meu shell:

Connected to domain guestvm
Escape character is ^]

CentOS Linux release 6.0 (Final)
Kernel 2.6.32-71.el6.x86_64 on an x86_64

guestvm login: 

Uma observação final, quando digo ao koan para começar a criar um dos meus convidados do KVM, eu o chamo com a opção --nogfx assim:

koan --server 192.168.1.1 --virt --nogfx --system=guestvm
    
por 17.11.2011 / 05:05
1

Acho que você está vendo um console mal configurado.

Talvez tente isso ou algo semelhante:

First I add console line to my grub config, e.g. for an Arch guest: kernel /vmlinuz26 root=/dev/vda2 ro console=ttyS0,115200 Then I edit /etc/inittab to enable ttyS0 (same Arch guest): co:23:respawn:/sbin/agetty -8 115200 ttyS0 linux. And make sure you have ttyS0 in your /etc/securetty.

Mais informações aqui: ' link

- editar -

Você pode tentar console=ttyS0,115200 e verificar outros possíveis parâmetros do console, talvez.

    
por 10.04.2011 / 18:11