VMware

来自osdev
Zhang3讨论 | 贡献2022年3月29日 (二) 06:34的版本 (创建页面,内容为“{{Emulators}} '''VMware''' 基本上是有钱人用的 “虚拟机”。 它可以运行任意数量的“来宾操作系统(Guest Operating Systems)”,并可以从真实媒体或映像文件启动。 它带有一个图形用户界面,比BochsQEMU更容易配置。 请注意: VMware不是模拟器(emulator)。 模拟器(emulator)和虚拟机监控器(virtual machine monitor)之间有很大的区别。 模拟器,如Bochs,…”)
(差异) ←上一版本 | 最后版本 (差异) | 下一版本→ (差异)
跳到导航 跳到搜索
Emulators
PC Emulators
PC Virtual Machine Monitors
PowerPC Emulators

VMware 基本上是有钱人用的 “虚拟机”。 它可以运行任意数量的“来宾操作系统(Guest Operating Systems)”,并可以从真实媒体或映像文件启动。 它带有一个图形用户界面,比BochsQEMU更容易配置。

请注意: VMware不是模拟器(emulator)。 模拟器(emulator)和虚拟机监控器(virtual machine monitor)之间有很大的区别。 模拟器,如Bochs,模拟每条指令,而VMware(和Virtual PC)尝试直接在主机PC上运行大部分代码,并且只模拟产生无效指令错误或访问系统级内存的指令。

VMware BIOS支持从CD (使用mgisofs制作可引导CD,将cdrom设备连接到.iso文件) 或软盘驱动器 (将软盘连接到文件) 以及硬盘驱动器启动。 这些是加载自己内核的最简单选项。

版本

VMware对爱好者的有用性取决于代码的生成。 大体上说:

  • Workstation 5.0(及更早版本)。 对业余爱好者来说一点帮助都没有。 错误代码是为向VMware报告而设计的,并且没有以开发人员为中心的功能。
  • Workstation 5.5(Player 1.0,Server 1.0)。 稍微有用一点:有缺陷的来宾操作系统会跟踪到有用的错误消息。 但在现实中,去找一些更现代的东西吧。 如果您正在编写多处理器内核,它能支持SMP。 Server和Player都是免费的,这是一项额外的福利;选Server版吧。
  • Workstation 6.0 (Fusion 1.0/1.1)。 有用的特性:基于GDB的来宾调试存根(guest debug stub)支持。 有用的功能:记录重放(虽然很难使用),这可能有助于再现竞争条件。
  • ???(Server 2.0 测试版正在进行中)。 当前版;无法获得详细信息。
  • 注:VMware Player完全免费使用,体积比VMware Workstation小。 新版本的VMware Player (从3.0向上) 能够创建新的虚拟机。 因此,这个VMM是*完美的*的测试对象。

来宾调试(Guest debugging)

这些选项在Workstation 6.0中有效,应在虚拟机中设置.vmx文件。

  • debugStub.listen.guest32 = "TRUE"
  • debugStub.listen.guest64 = "TRUE"

如果使用这些选项,工作站会在VMware.log文件中打印一条消息 “vmware Workstation正在侦听端口8832上的调试连接”。 启动GDB会话(使用包含调试信息的内核副本),然后:

  • 目标远程本地主机:8832

请注意,某些版本的VMWare包含一个错误: 断开GDB与端口8832的连接后,VMWare实际上将继续侦听端口8833而不是8832。 通过查看vmware中最新的“Debug stub”条目,始终可以找到实际的vmware.log 文件:

vmx| W110: Debug stub: VMware Workstation is listening for debug connection on port 8833.

标准gdb命令在此模式下工作 (例如,printing memory,backtrace)。 请注意,这是附加到内核的调试存根,而不是用户空间程序。

其他有用的选项:

  • debugStub.listen.guest32.remote = "TRUE" # 允许从不同的计算机/VM而不是本地主机进行调试。# 远程调试的IP将是主机的IP。
  • debugStub.listen.guest64.remote = "TRUE" # 相同,但对于64位代码
  • monitor.debugOnStartGuest32 = "TRUE" # 在第一条指令上中断调试存根(警告:在BIOS中!) #这将在0xFFFF0处的第一条指令处停止虚拟机,您可以将下一个断点设置为在BIOS加载引导加载程序时中断*0x7c00
  • debugStub.hideBreakpoints = "TRUE" # 允许使用硬件断点而不是软件(INT3)断点
  • bios.bootDelay = "3000" # 延迟启动BIOS代码。

三重故障

VMware产品通过重启机器来模拟三重故障。 但是,在beta产品上,Guest三重故障会导致错误19580。 有时这代表了VMware emulation中的一个缺陷;通常,这表示自制内核中有一个bug。

Guest Tools

正文: VMware_tools

作为一款面向普通用户的虚拟化产品时,VMware通过其针对主要操作系统的“工具”包提供了许多功能,例如绝对鼠标定位和显示大小调整。

与IDE的兼容性

  • IDA Pro支持通过VMWare存根调试Windows内核 [1]
  • VisualKernel支持使用VMWare gdb存根从Visual Studio调试Linux内核[2]

另见

外部链接