web-dev-qa-db-fra.com

KVM Invité installé à partir de la console. Mais comment accéder à la console de l'invité?

J'essaie d'installer un invité entièrement virtualisé (Fedora 14 x86_64) sur KVM (RHEL 6), en utilisant uniquement la ligne de commande (à la fois l'hyperviseur et l'invité). Cela va sans erreurs et sans un résultat tangible. J'aimerais savoir comment faire une installation en texte seul.

Alors, voici ce que j'ai fait:

# 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 ^]
ÿ

Maintenant quoi? Si je comprends bien après avoir googlé pendant quelques jours, je devrais voir la sortie de l'invité de l'installation de texte, mais rien ne se passe. virt-viewer ne peut pas s'y connecter, suggérant avec bonté que j'explore toutes les options en ajoutant --help (ce que j'ai fait). Si je me reconnecte avec virsh, je vois ceci:

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 ^]

Cela montre que VM est en cours d'exécution

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

Journal 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

Sortie 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>

De toute évidence, il me manque quelque chose que beaucoup d'autres ne font pas, mais qu'est-ce que c'est? Merci d'avance!

28
badbishop

J'ai copié --extra-args='console=ttyS0' quelque part d'Internet la dernière fois, ça marche!

  • Pas besoin de deux commandes "console", qui ouvrent juste deux consoles au lieu d'une
  • Pas besoin de spécifier manuellement le débit en bauds.
  • L'option "--serial" est déconseillée
  • Le périphérique de la console RedHat est "/ dev/ttyS0", pas "/ dev/tty0"

Voir: http://anaconda-installer.readthedocs.io/en/latest/boot-options.html

9
brayden

--nographics est utilisé, et vous n'avez aucune console configurée dans l'invité, à part la console tty0. Si vous voulez une console graphique, particulièrement disponible à distance, vous devez activer vga et vnc, ou qxl et spice. ceci est un exemple: http://www.linux-kvm.com/content/tip-how-run-headless-guest-machine-using-vnc-kvm

http://www.linux-kvm.com/content/running-kvm-nographics-no-console-output ou http://ubuntuforums.org/showpost.php?p = 9610421 & postcount = 7 est également une solution.

7
dyasny

J'ai rencontré un problème similaire en essayant d'effectuer une installation en texte uniquement de CentOS. Tout se résume à ajouter des arguments de noyau pour spécifier la console de sortie série console=ttyS0 Afin que vous puissiez ensuite vous y connecter lorsque --graphics none Ou --nographics Est utilisé. Dans le manuel de virt-install:

- graphisme aucun

Aucune console graphique ne sera allouée à l'invité. Les invités entièrement virtualisés (Xen FV ou QEmu/KVM) devront avoir une console de texte configurée sur le premier port série de l'invité (cela peut être fait via l'option --extra-args). Xen PV le configurera automatiquement. La commande "virsh console NAME" peut être utilisée pour se connecter au périphérique série.

J'ai réussi à le résoudre de deux manières:

  1. en modifiant l'image iso et en utilisant l'option --cdrom
  2. en exposant l'image iso en tant que partage NFS et en utilisant l'option --location avec --extra-args

1. Modification de l'image

Afin de modifier les paramètres du noyau sur le disque d'installation iso:

  1. Obtenez un programme qui permet de manipuler des images, par exemple, isomaster .
  2. Accédez au fichier isolinux/isolinux.cfg Sur l'image, ouvrez-le, recherchez la première ligne avec initrd= Dessus et ajoutez-y console=ttyS0 Et toutes les autres lignes qui ont le paramètre mentionné .
  3. Enregistrez le fichier et l'image.
  4. Utilisez l'image modifiée avec virt-install Comme d'habitude, par exemple:

    $ 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
    

Terminé.

2. Utilisation d'un partage NFS

  1. Montez l'image:

    $ Sudo mount -o loop,unhide -t iso9660 -r /home/user/images/CentOS.iso /home/user/mnt/cdrom
    
  2. Démarrez le service NFS s'il n'est pas en cours d'exécution: service nfs start

  3. Ajoutez la ligne suivante dans /etc/exports Pour la mettre à la disposition des clients:

    /home/user/mnt/cdrom    *(ro,insecure,all_squash)
    
  4. Actualisez la table d'exportation du système avec:

    $ exportfs -r
    
  5. Utilisez le partage avec virt-install En veillant à respecter le --extra-args, Par exemple:

    $ 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. Pendant l'installation de CentOS, vous obtenez une invite vous demandant l'emplacement des fichiers d'installation. Vous devez taper l'adresse de votre machine et le chemin d'accès complet au partage.

Terminé.

6
Johnny Baloney

Vous devez exécuter le programme d'installation de Fedora en mode texte. Essayez d'ajouter du "texte" aux arguments supplémentaires. Alternativement, vous pouvez essayer d'ajouter "vnc" qui vous permettra de vous connecter au programme d'installation via VNC une fois qu'il sera démarré

2
katriel

Je fais mes installations depuis un certain temps maintenant en utilisant cordonnier et koan. Dans cordonnier, j'ai défini mes options de noyau comme ceci sous mon profil Centos60-x86_64:

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

Après le démarrage, vous pouvez utiliser console = tty0 console = ttS0,115200 pour que la console s'affiche sur deux appareils; cela ne fonctionne pas pour l'installation. Si vous modifiez les options grub sous/etc/grub et régénérez grub.conf, les paramètres de la console série survivront à une mise à niveau du noyau. Ajoutez du "texte" à la ligne de commande du noyau pour empêcher le programme d'installation de démarrer une interface graphique.

Lorsque mes instances KVM guest démarrent, je me connecte à elles en étant connecté à l'hôte KVM et je me connecte à la console d'un invité comme ceci:

[root@vmhost ~]# virsh console guestvm

Je vois alors ceci dans mon 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: 

Une dernière note, quand je dis à koan de commencer à construire l'un de mes KVM invités, je l'appelle avec le commutateur --nogfx comme ceci:

koan --server 192.168.1.1 --virt --nogfx --system=guestvm
1
slm

Je suppose que vous voyez une console mal configurée.

Essayez peut-être ceci ou similaire:

J'ajoute d'abord la ligne de console à ma configuration grub, par ex. pour un invité Arch: kernel/vmlinuz26 root =/dev/vda2 ro console = ttyS0,115200 Ensuite, je modifie/etc/inittab pour activer ttyS0 (même invité Arch): co: 23: respawn:/sbin/agetty -8 115200 ttyS0 linux. Et assurez-vous d'avoir ttyS0 dans votre/etc/securetty.

Plus d'informations ici: ` http://www.linux-kvm.com/content/running-kvm-nographics-no-console-output

--Éditer--

Tu pourrais essayer console=ttyS0,115200et peut-être vérifier d'autres paramètres de console possibles.

1
Jonathan Ross