在kvm中编译的内核中缺少通道

时间:2015-06-28 08:33:55

标签: linux linux-kernel kvm

我在使用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在我的虚拟机内的已编译内核中创建通道?

1 个答案:

答案 0 :(得分:0)

确保为guest虚拟机构建的内核具有与工作内核相同的配置选项。

你可以从/proc/kconfig获得这些内容(如果你很幸运并且内核已经编译好了)来自与内核一起分发的config(通常在/boot目录中。< / p>

相关的可能是here所描述的客人kvm选项。特别是,请确保VIRTIO选项已启用。我的猜测是你缺少VIRTIO_CONSOLE(实际上是角色设备)。