问题标签 [hypervisor]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
542 浏览

linux - 将函数指针从内核驱动程序传递到 Hypervisor

我正在尝试使用 SMC 调用将函数指针从 EL1(Android 内核)传递到 EL2(管理程序),并在管理程序中捕获 SMC 调用。我知道仅仅传递 Hypervisor 的指针是行不通的,因为它是一个 VA,它对 Hypervisor 没有任何意义。

关于如何做的任何评论?我想基本上从 EL2 而不是从 EL1 调用该函数。

我的猜测是我可能需要使用 ion memory 或者可能需要转换 VA -> IPA/PA

任何帮助或指点表示赞赏,谢谢!

0 投票
1 回答
133 浏览

linux - Do Adeos and KVM only support Linux as guest?

I'd like to run multiple operating systems (i.e., Linux + a RTOS) through an hypervisor on an ARM device.

Are the Adeos and KVM hypervisors designed to only support Linux as guest OS?

0 投票
1 回答
8119 浏览

virtualbox - 在 Windows 2012 上启用 hyper-V

我有一台window7(32位)机器。我安装了 Virtual Box 并创建了一个 VM(Windows 2012 {64bit} 启用了 VT-x/AMD-V,嵌套分页)。

我想在这个虚拟机上启用 Hyper-V 有什么想法吗?

我尝试了以下链接,但对我不起作用: Link1 Link2 但在我的情况下,我使用的是 Virtual Box。

如何启用 Hyper-V 功能?

0 投票
0 回答
187 浏览

arm - 为什么 Arm v7 虚拟化扩展依赖于安全扩展

这是来自 ARM Cortex-A15 MPCore 处理器的技术参考手册:

我明白为什么虚拟化扩展可能依赖于 LPAE,但我不明白为什么它也依赖于安全扩展。

有人对此有所了解吗?

最好的,

五。

0 投票
2 回答
2308 浏览

memory - ARM:我的 ARM 管理程序相对于 Linux/Android 来宾的安全物理内存位置(保留)

我正在 ARM 上开发一个基本的管理程序(使用板 Arndale Exynos 5250)。我想以访客身份加载 Linux(ubuntu 或其他)/Android。目前我正在使用 Linaro 发行版。

我快到了,除了最后一个:为我的管理程序保留内存,以便内核在解析 FDT 或内核命令行之前不会尝试覆盖它,大多数大问题都已经解决了。

问题是我的 Linaro 发行版的 U-Boot将 R2 中的 FDT 传递给 linux 内核,但是内核试图在看到我在 FDT 中保留该内存区域之前覆盖我的管理程序的内存(通过反编译 DTB,修改 DTS 和重新编译它)。我尝试更改内核命令行参数,但在内核尝试覆盖我保留的内存部分之后,它们也会被解析。

因此,我需要的是物理 RAM 中的一个安全内存位置,以便将我的管理程序的代码放在其中,以便 Linux 内核在解析 FDT 或其内核命令行之前不会尝试访问(r/w)它

上下文细节:

  • Exynos 5250 上的系统 RAM 布局为:物理 RAM 从0x4000_0000 (=1GB)开始,长度为0x8000_0000 (=2GB)
  • linux内核在0x4000_7000加载(通过U-Boot) ,它的大小(未压缩的uImage)小于5MB,它的入口点设置为0x4000_8000
  • uInitrd0x4200_0000加载,大小小于2MB
  • FDT ( board.dtb ) 在0x41f0_0000加载(在 R2 中传递)并且大小小于35KB
  • 我目前在0x40C0_0000加载我的虚拟机管理程序,我想从该地址开始保留 200MB ( 0x0C80_0000 ),但内核在查看 FDT 或命令行之前尝试在那里写入(第 2 阶段 HYP 陷阱告诉我该区域实际上是保留的相反,如果我在0x5000_0000加载我的管理程序(甚至不修改原始 DTB 或命令行),它不会尝试覆盖我!
  • FDT 是直接传递的,而不是通过ATAGs

因为当在0x5000_0000加载我的管理程序时,内核不会尝试覆盖它,我假设在解析 FDT/命令行之前 Linux 不会触及内存区域。我需要知道这是否属实,如果属实,关于这些内存区域的一些细节。

谢谢!

相关问题:

有谁碰巧知道以下之间的优先级是什么:ATAGs / kernel-command line / FDT?例如,如果我通过内核命令行保留内存,但不在 FDT (.dtb) 中,它应该工作还是命令行被 FDT覆盖?这三者之间是否存在某种连接

0 投票
1 回答
135 浏览

virtual-machine - 谁为管理程序上托管的来宾操作系统分配私有和公共地址?

我很想知道在虚拟机管理程序上启动来宾操作系统时网络会发生什么。它如何获得公共IP。谁为其分配私有地址以及如何分配?

0 投票
1 回答
288 浏览

emulation - HYPERVISORS:不同的虚拟化技术缺乏功能

在使用 Intel 的 VMX 和 ARM 的 virt-extensions 时,我注意到缺少在实现管理程序时非常有用的功能。

在管理程序的工作中,通常需要捕获客户行为,但仅用于跟踪目的(即,客户可以正常执行指令,但我们需要先做一些事情 - 例如日志记录)。

更准确地说,举以下例子:在我前段时间实现的一个 Intel 虚拟机管理程序上(以Windows 7作为客户机),每当修改 Windows 内核结构时,我都需要记录。为此,我找到了内核结构的物理地址,并删除了 guest 对相应 EPT 页的写权限。因此,每当客户试图写入(修改)结构时,就会发生EPT 违规,从而导致管理程序陷阱。

对于每一次这样的 EPT 违规,我都会采取以下策略之一

策略一:

  • 激活监视器陷阱标志
  • 临时授予guest权限写入区域(EPT修改)
  • VMRESUME =>由于MTF被激活,客户将立即执行指令和VMEXIT
  • 在下一个VMEXIT上,我将停用MTF并重新禁止来宾写入结构(=EPT 修改 + 失效)VMRESUME再次

策略二:

  • 模拟要编写结构的指令。这意味着要编写一个模拟器(>反汇编器)。

如您所见,即使没有多处理意识,这两种策略都有些复杂。关于策略 1,如果要在多个处理器上虚拟化 Windows,我们还必须在处理 EPT 违规时将 IPI 发送到其他内核以暂停它们。另外,这是一个具体的例子,它暗示了一个具体的策略。跟踪的另一个示例可能是例如在调用内核函数时记录和/或修改内核函数的参数。在这种情况下,我们可能需要不同的策略。

我想是时候进入正题了。我的困境如下。每当我们需要跟踪客户行为时,避免复杂编程策略的一种简单方法是让虚拟化技术提供动态选择指令陷阱是在执行之前还是之后发生的可能性。

甚至在编写我的第一个虚拟机管理程序(在 Intel 上)之前,我几乎确信 VMX 会为我提供这样的功能。我的想法告诉我,这将是任何平台上的任何虚拟化技术都提供的一个显而易见的特性,所以当我发现它实际上不是时我很惊讶(也有点沮丧):不是在英特尔上,不是在 ARM 上(正如我最近发现的那样out) 并且很可能不在其他平台上因此,我的问题实际上是:为什么?为什么硬件虚拟化“设计者”不实现这样的功能?我确信之前已经考虑过,因此对我来说唯一可能的答案似乎是硬件方面的这种功能实现将非常困难甚至不可能,尽管我不明白为什么这是真的。

提前感谢您的回答:)

编辑

虽然我没有说清楚,但我还想指出这样一个事实,即在许多情况下,程序员想要以改变其效果的意图来捕获一些客人的行为(因此暗示的不仅仅是跟踪,但在这种功能仍然非常有用。

以下面的例子为例。让我们假设我希望我的虚拟机管理程序控制来宾与内存映射设备的通信(甚至完全模拟一个 - 当今虚拟机管理程序的一个非常普遍的要求)。大多数情况下,我们会告诉客人该设备在地址A上进行内存映射,并挂钩对该地址的写入/读取操作。当一条被捕获的指令试图读/写地址A的区域时,目前我们被迫反汇编并模拟它. 如果管理程序为我们提供了让指令以临时 r/w 权限执行并在其后立即捕获的可能性,那么模拟指令将变得不必要,因为我们可以让它执行并在之后“添加”所需的效果。

0 投票
1 回答
2554 浏览

virtual-machine - 如何为 esxi 虚拟机设置 cpu 限制?

我有一台运行一个虚拟机的 ESXi 5.5 服务器,该虚拟机有一个带有两个内核的插槽。我想要做的是将这些内核限制为每个 1500 MHz,以模拟慢速机器上的软件行为。我怎样才能做到这一点?

0 投票
0 回答
641 浏览

arm - ARM HYPERVISOR:执行单条指令和陷阱(相当于Intel的MTF)

我正在 ARM 上实现一个虚拟机管理程序,我需要知道是否有办法在单条指令执行后恢复 ( ERET ) 来宾和陷阱,而不依赖于调试架构 (v7.1) 。我可以通过将来宾的下一条指令修改为HVC(相当于 Intel 上的VMCALL)来使用软件方法,但我不知道如何处理导致分支的指令(JMP)。

在英特尔上,我可以使用陷阱标志(= RFLAGS中的TF位,每个操作系统线程上下文)或监视器陷阱标志(= MTFVT-x功能)。

谢谢

编辑:澄清

  • 我想避免反汇编/仿真(尽可能)
0 投票
1 回答
829 浏览

arm - ARM TrustZone、Hypervisor:没有虚拟化扩展的 Hypervisor 功能

我发现了一些关于 ARM 的 CPU 虚拟化的有趣信息,我想知道你们是否可以帮助我更多地了解它。

基本上,一家名为SierraWare的公司的人开发了一种名为SierraTEE的 ARM 安全模式操作系统(他们说),它可以虚拟化运行在非安全模式下的客户操作系统,如 Linux/Android,只需要安全扩展。他们的一份演示文档中的一条信息引起了我的注意,特别是在此 PDF http://www.sierraware.com/sierraware_tee_hypervisor_overview.pdf的第 19 页,他们指出:

Rootkit 和内核黑客的完整性检查:

  • 监控系统调用中断和中断处理程序。这将确保核心系统调用不会被篡改。

通过“系统调用中断”我了解SVC(=old SWI)指令执行(如果我错了请纠正我),但通过“监控”我不太确定,因为它可能是实时监控有时-时间监控特定事件监控。在我看来,他们可以监控SVC 处理程序以防止通过以下任一方式进行篡改:

  1. 不时检查 SVC 处理程序(例如计时器中断,因为 IRQ 和 FIQ 可以路由到监控模式) - 类似 PatchGuard 的方法,对我来说似乎不是很有用
  2. 在SVC 指令执行时检查 SVC 处理程序(=某些事件监控
  3. 陷阱SVC 处理程序内存区域写访问(=实时监控

关于方法 2:是否可以从安全模式捕获非安全 SVC 指令执行

关于方法 3 :是否可以仅使用安全扩展来挂钩非安全内存区域写入?

首先十分感谢