【问题标题】:Channels missing in compiled kernel in kvmkvm 编译内核中缺少通道
【发布时间】:2015-06-28 08:33:55
【问题描述】:

我在使用 libvirt 的虚拟机中有一个 ubuntu。我将访客配置为创建管道和 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 在我的虚拟机内的已编译内核中创建通道?

【问题讨论】:

    标签: linux linux-kernel kvm


    【解决方案1】:

    确保您为客人构建的内核具有与有效内核相同的配置选项。

    你可以从/proc/kconfig 获得这些(如果你很幸运并且内核已经编译了)或者从随内核分发的config 获得这些(通常在/boot 目录中。

    相关的可能是here 描述的guest kvm 选项。特别是,确保VIRTIO 选项处于打开状态。我的猜测是您缺少VIRTIO_CONSOLE(实际上是字符设备)。

    【讨论】:

    • 感谢您的回答!我复制了原始内核配置,新编译的内核有通道!我不确定是哪个配置启用的,但现在我知道问题出在哪里并且可以找到正确的!
    猜你喜欢
    • 2014-03-10
    • 2013-03-17
    • 1970-01-01
    • 1970-01-01
    • 2019-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多