Por que há uma interface de soquete no host e uma interface de dispositivo de caractere no guest para o virtio-serial?

4

Estou tentando estabelecer um canal de comunicação entre o host e uma de suas máquinas virtuais convidadas usando o kvm como um hypervisor. Para isso, estou usando o virtio-serial .

Para criar a máquina virtual, emiti o seguinte comando:

qemu-system-x86_64 \
-m 2048 -name ubuntu \
-hda ubuntu_image \
-device virtio-serial \
-chardev socket,path=/tmp/foo,server,nowait,id=foo \
-device virtconsole,name=jobsfoo,chardev=foo,name=org.ubuntu.foo \

E, em seguida, para comunicação, no convidado, uso:

socat /dev/hvc0 -

E no host:

socat /tmp/foo -

Eu entendi que /tmp/foo é um soquete e /dev/hvc0 um dispositivo de caractere.

Por que existe uma interface simétrica para comunicação: um soquete no host e um dispositivo de caractere no convidado?

    
por jobin 31.01.2014 / 13:46

1 resposta

0

Você tem um dispositivo de caractere no convidado porque os sistemas operacionais Unix e Unix representam portas seriais como dispositivos convidados e o fazem há tanto tempo quanto o Unix existe e você solicitou explicitamente uma porta serial virtual em O convidado. A porta é criada por um driver de dispositivo do kernel, portanto, deve ser um dispositivo especial de caracteres.

Você tem um soquete no host porque solicitou explicitamente um. Presumivelmente, você quer uma comunicação bidirecional de algum programa no host para algum programa no guest que compreende as portas seriais. A outra extremidade deste soquete é tratada, é claro, pelo processo qemu executando a máquina virtual. Você também pode ter conectado isso a um pty para emular um console serial ou para um arquivo simples para registrar tudo que sai da porta.

    
por 04.02.2014 / 15:29