我在使用libvirt的虚拟机中有一个ubuntu。我配置我的guest来创建管道和unix通道以实现trace-virtio目的:
<channel type='unix'>
<source mode='connect' path='path/to/socket'/>
<target type='virtio' name='unix-name'/>
<address type='virtio-serial' controller='0' bus='0' port='1'/>
</channel>
<channel type='pipe'>
<source path='path/to/pipe'/>
<target type='virtio' name='pipe-name'/>
<address type='virtio-serial' controller='0' bus='0' port='2'/>
</channel>
我的客人一切正常,我的频道在我的虚拟机内的/ dev中,我可以使用这些频道向主机发送数据。但是当我编译内核并将其安装在我的vm中并从grub中选择它时,这些通道就会消失。当我重新启动并选择原始内核时,它有通道并正常工作。如何告诉kvm在我的虚拟机内的已编译内核中创建通道?
答案 0 :(得分:0)
确保为guest虚拟机构建的内核具有与工作内核相同的配置选项。
你可以从/proc/kconfig
获得这些内容(如果你很幸运并且内核已经编译好了)来自与内核一起分发的config
(通常在/boot
目录中。< / p>
相关的可能是here所描述的客人kvm选项。特别是,请确保VIRTIO
选项已启用。我的猜测是你缺少VIRTIO_CONSOLE
(实际上是角色设备)。