在VMware ESXi

时间:2016-12-04 04:34:57

标签: vmware virtualization xen esxi hypervisor

我目前正在使用Simics module(参见第6章)来监听指令提取和数据访问,并对所有这些事件运行回调,以便检测在Simics x86上运行的内核。例如,我可以创建一个Simics模块,如下所示:

/* Initialize our Simics module. */
void init_local(void)
{
    const class_data_t funcs = {
        .new_instance = ls_new_instance,
        .class_desc = "desc",
        .description = "A simics module."
    };

    /* Register the empty device class. */
    conf_class_t *conf_class = SIM_register_class(SIM_MODULE_NAME, &funcs);

    /* Register our class class as a trace consumer. */
    static const trace_consume_interface_t trace_int = {
        .consume = (void (*)(conf_object_t *, trace_entry_t *))my_tool_entrypoint
    };
    SIM_register_interface(conf_class, TRACE_CONSUME_INTERFACE, &trace_int);
}

通过这样做,Simics将在每条指令和每次数据访问时调用my_tool_entrypoint;允许我检测内核,我按照自己的意愿运行。毋庸置疑,这是一个非常酷且非常强大的功能。

我的问题是:

  1. 此类功能是否适用于在VMware ESXi(或VMware Workstation)Hypervisor上运行的程序?如果是,该功能的文档在哪里?
  2. 如果它在ESXi上不可用,是否可以在Xen等任何其他虚拟机管理程序上使用?
  3. 请注意,我 NOT 询问如何在VMware,Xen,Bochs等下运行Simics。我在询问是否可能/如何运行回调关于指令提取和内存访问(正如我在Simics上展示的那样)在另一个平台上,如VMware,Xen,Bochs,Qemu等。

1 个答案:

答案 0 :(得分:1)

听起来你想要使用" vProbes"。 vProbes允许您动态检测来宾操作系统中的任何指令或数据访问,然后回调脚本。 (不确定你是否听说过" Dtrace"对于Solaris,但它是类似的)我用它来跟踪Linux调度程序内部的函数调用。脚本必须用类似C语言的Emmett编写。这篇文章很好地介绍了该技术以及可能的内容:https://labs.vmware.com/vmtj/vprobes-deep-observability-into-the-esxi-hypervisor

此外,这里还有工作站和Fusion参考指南的链接。它似乎有点旧,但我认为它没有太大变化。 (顺便说一句,它适用于ESXi以及工作站和Fusion) http://www.vmware.com/pdf/ws7_f3_vprobes_reference.pdf