virsh: La console de la machine virtuelle ne montre aucune sortie

J'ai une machine virtuelle avec laquelle je peux commencer

virsh

. Selon

virsh dumpxml VM1

, Ceci est un objet sélectionné:

<serial type="pty">
<source path="/dev/pts/6"/>
<target port="0"></target>
<alias name="serial0"></alias>
</serial>
<console tty="/dev/pts/6" type="pty">
<source path="/dev/pts/6"/>
<target port="0" type="serial"></target>
<alias name="serial0"></alias>
</console>

La machine virtuelle fonctionne:

# virsh list
Id Name State
----------------------------------
7 VM1 running

À l'intérieur de la machine virtuelle est une configuration grub:

kernel          /boot/vmlinuz-2.6.24-28-virtual root=UUID=7a1685b9-ecc8-4b70-932c-459a6faac07d ro quiet splash console=tty0 console=ttyS0,9600n8

Et ceci est la ligne de commande, lancée virsh Pour démarrer une machine virtuelle:

/usr/bin/kvm -S -M pc-0.12 -enable-kvm -m 256 -smp 1,sockets=1,cores=1,threads=1 -name VM1 -uuid 47ff6ec2-a748-4738-16b9-2ffe5780e456 -nodefaults -chardev socket,id=monitor,path=/var/lib/libvirt/qemu/VM1.monitor,server,nowait -mon chardev=monitor,mode=readline -rtc base=utc -boot c -drive file=/var/VMs/VM1.qcow2,if=none,id=drive-ide0-0-0,boot=on,format=raw -device ide-drive,bus=ide.0,unit=0,drive=drive-ide0-0-0,id=ide0-0-0 -device virtio-net-pci,vlan=0,id=net0,mac=52:54:00:12:34:50,bus=pci.0,addr=0x3 -net tap,fd=64,vlan=0,name=hostnet0 -chardev pty,id=serial0 -device isa-serial,chardev=serial0 -usb -vnc 127.0.0.1:0 -k de -vga cirrus -device virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x4

Mais si je lie à

virsh console VM1

, ou moi

cat /dev/pts/6

, Dans la console de VM, rien n'est affiché.

Y a-t-il autre chose que je dois envisager?

Rafraîchir

J'ai deux machines virtuelles, dont l'une est dirigée directement avec

kvm

, Autre

virsh

. La course dirigée directement a une console de travail. J'ai vérifié les fichiers ouverts dans les deux cas:

root@host1:~# lsof | grep 25093 | grep dev
kvm 25093 root DEL REG 0,4 3758780 /dev/zero
kvm 25093 root DEL REG 0,4 3758779 /dev/zero
kvm 25093 root DEL REG 0,4 3758777 /dev/zero
kvm 25093 root 0u CHR 136,3 0t0 6 /dev/pts/3
kvm 25093 root 1u CHR 136,3 0t0 6 /dev/pts/3
kvm 25093 root 2u CHR 136,3 0t0 6 /dev/pts/3
kvm 25093 root 3u CHR 10,232 0t0 8025 /dev/kvm
kvm 25093 root 7u CHR 10,200 0t0 4983 /dev/net/tun
root@host1:~# lsof | grep 8341 | grep dev
kvm 8341 libvirt-qemu DEL REG 0,4 9743486 /dev/zero
kvm 8341 libvirt-qemu DEL REG 0,4 9743485 /dev/zero
kvm 8341 libvirt-qemu DEL REG 0,4 9743483 /dev/zero
kvm 8341 libvirt-qemu 0r CHR 1,3 0t0 4640 /dev/null
kvm 8341 libvirt-qemu 4u CHR 5,2 0t0 4897 /dev/ptmx
kvm 8341 libvirt-qemu 5u CHR 10,232 0t0 8025 /dev/kvm
kvm 8341 libvirt-qemu 64u CHR 10,200 0t0 4983 /dev/net/tun

Comme vous pouvez le constater, dans l'une des machines virtuelles (Pas si) Aucun descripteur de fichier 1 et 2, Un descripteur de fichier 0 Redirigé sur / dev / null. Je pense que c'est ça le problème.

La question est de savoir comment me dire virsh Ne fais pas ça?
Invité:

Babette

Confirmation de:

<serial type="pty">
<target port="0"></target>
</serial>
<console type="pty">
<target port="0" type="serial"></target>
</console>

C'est ce que j'ajoute d'habitude à la définition de machines virtuelles en utilisant

virsh edit

alors

console=ttyS0

Ajouté à une chaîne de noyau de machine virtuelle dans grub.conf

Ne me laisse jamais tomber jusqu'à présent

Emilie

Confirmation de:

Exemple de travail d'utilisation Debian jessie En tant que système d'exploitation hôte et invité.

Créer une machine virtuelle avec virt-install ou virt-manager. Dans tous les cas, vous recevrez les opérateurs de console série ajoutés au fichier. VM.xml.

Dans la machine virtuelle invité, exécutez ce qui suit

systemctl enable serial-getty@ttyS0.service
systemctl start serial-getty@ttyS0.service

Dans la VM invité dans

/etc/default/grub

remplacer

GRUB_CMDLINE_LINUX_DEFAULT="quiet"
#GRUB_TERMINAL=console

par

GRUB_CMDLINE_LINUX_DEFAULT="console=tty0 console=ttyS0"
GRUB_TERMINAL="serial console"

Dans la machine virtuelle invité, exécutez ce qui suit

guest# update-grub

La console vm pour démarrer VM peut être obtenue

host# virsh console VM

Ou exécuter la machine virtuelle avec une console connectée

host# virsh start VM --console

Sources:

http://www.keypressure.com/blo ... -tls/
http://0pointer.de/blog/projec ... .html

Catherine

Confirmation de:

J'ai trouvé la réponse la plus appropriée
https://askubuntu.com/question ... ponse
:

Supposons votre domaine virtuel

myGuest

, Votre éditeur préféré

vi

, et votre invité est serti avec

grub2

et utilise

systemd

. Si la dernière hypothèse est incorrecte, vous pouvez jeter un coup d'œil à
https://wiki.archlinux.org/ind ... nsole
.

Première installation

libguestfs-tools

Sur l'hôte:

sudo apt install libguestfs-tools

. Il vous sera nécessaire lorsque vous travaillez avec les invités sans tête.

Deuxièmement, éteignez l'invité:

virsh shutdown myGuest

.

Suivant Montez le disque virtuel:

guestmount -d myGuest -i /mnt

(ou utilisez tout autre répertoire existant comme point de montage). En ce moment dans

/mnt

Vous devez voir le système de fichiers invités.

Avec

grub2

et

systemd

, Vous devez seulement modifier la configuration. grub:

vi /mnt/etc/default/grub

et changer comme

GRUB_CMDLINE_LINUX='console=tty0 console=ttyS0,19200n8'
GRUB_TERMINAL=serial
GRUB_SERIAL_COMMAND="serial --speed=19200 --unit=0 --word=8 --parity=no --stop=1"

Comment devez-vous courir

update-grub

En invité, pour le premier lancement, vous devez également changer

/mnt/boot/grub/grub.cfg

. Recherchez l'élément de menu Télécharger par défaut et ajoutez des informations sur la console à

linux

enregistrement comme

linux   /boot/vmlinuz-4.4.0-75-generic root=UUID=76f3e237-d791-4e9d-8ad7-fe5c9165ae55 ro console=ttyS0,19200 earlyprint=serial,ttyS0,19200

Vous avez peut-être besoin de droits root Pour monter et modifier des fichiers.

Redémarrez maintenant l'invité et exécutez la console virtuelle:

virsh start myGuest && virsh console myGuest

Vous devez voir le journal du noyau, puis une invitation à se connecter. Après autorisation, n'oubliez pas de courir

sudo update-grub

.

Pour répondre aux questions, connectez-vous ou registre