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

28

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 résultat tangible. Je voudrais 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 une recherche sur Google pendant quelques jours, je devrais voir la sortie de l'invité à partir 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 la 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!

badbishop
la source
3
Comment avez-vous pu faire fonctionner le commutateur --extra-args avec --cdrom? Selon la page de manuel virt-install --extra-args ne fonctionne qu'avec --location?
slm
4
J'ai supprimé --network bridge:br0, changé cdromen locationet extra-argsvers --extra-args='console=tty0 console=ttyS0,115200n8 serial'et cela a fonctionné!
certains
2
J'ai seulement changé cdrom en emplacement et ajouté "extra-args". Pas besoin de supprimer les options --network.
twan163
1
Pour une raison quelconque, --cdromcela ne fonctionne pas avec les arguments supplémentaires, mais --location(ou -l) le fait. Même chemin et tout.
Rick Chatham

Réponses:

9

J'ai copié --extra-args='console=ttyS0'quelque part sur 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

brayden
la source
7

--nographicsest 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.

Dyasny
la source
Merci d'avoir répondu, dyasny. Choisir vos points: 1. Non, je ne veux PAS de console graphique (voir mon article) 2. Oui, j'ai essayé ceci et des solutions similaires. Ça n'a pas marché pour moi.
badbishop
J'essaierais de demander sur linux-kvm.org ou sur la liste de diffusion libvirt
dyasny
6

J'ai rencontré un problème similaire en essayant d'effectuer une installation en texte uniquement de CentOS. Tout se résume à l'ajout d'arguments du noyau pour spécifier la console de sortie série console=ttyS0afin que vous puissiez ensuite vous y connecter quand --graphics noneou --nographicsest utilisé. Extrait virt-installdu manuel:

- 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 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' --cdromoption
  2. en exposant l'image iso en tant que partage NFS et en utilisant l' --locationoption 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 isolinux/isolinux.cfgfichier sur l'image, ouvrez-le, recherchez la première ligne avec initrd=dessus et ajoutez- console=ttyS0y 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-installcomme 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 /etc/exportspour 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 virt-installen vous assurant de 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é.

Johnny Baloney
la source
j'ai essayé votre deuxième méthode pour monter le fichier iso mais j'ai eu cette erreur Démarrage de l'installation ... Récupération du fichier .treeinfo ... | 552 B 00:00:00 ERREUR Aucune option 'noyau' dans la section: 'images-x86_64' je monte le fichier iso sur / mnt et utilise --location / mnt dans virt-install
public_name
@public_name Essayez de ne pas monter l'iso mais simplement de spécifier le chemin vers l'iso après --locationlike --location /tmp/centos6.iso.
Rick Chatham
A travaillé sur Ubuntu 16, en éditant isolinux / txt.cfg au lieu d'isolinux / isolinux.cfg.
John McGehee
2

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é

Katriel
la source
1
Vérifié, pour une nouvelle libvirt, vous ne pouvez pas utiliser -x et --cdrom. Essayez de monter quelque part le cdrom sur le réseau et en utilisant --location somewhere.com/mounted-iso --Les aucun --extra-args « console = sans tête texte ttyS0,115200 »
Katriel
1

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 suit 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 d'invité KVM 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 ma coquille:

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 un de mes invités KVM, je l'appelle avec le commutateur --nogfx comme ceci:

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

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

--modifier--

Vous pouvez essayer de console=ttyS0,115200vérifier d'autres paramètres de console possibles.

Jonathan Ross
la source
BTW --extra-args=prend également directement d'autres paramètres de console.
Jonathan Ross
Selon le texte que vous avez cité, je dois modifier / etc / inittab sur guest. Tout le problème est: comment puis-je interagir avec l'invité? Désolé, je ne comprends pas.
badbishop
Désolé voir l'édition, je n'étais pas très clair.
Jonathan Ross
Oui, j'ai également essayé --extra-args = 'console = ttyS0' avant de poster la question.
badbishop
Désolé, je voulais dire console=ttyS0,115200et il y a probablement d'autres paramètres pour cela que vous pouvez essayer. Je suppose toujours que vous avez une console mal configurée d'une certaine description.
Jonathan Ross