VirtualBox

源代码组织

你可以在线浏览源代码此处

include/

kBuild/

kBuild/ 包含相关的 kBuild 发行版,详情请参阅kBuild页面。

out/

out/ 是输出目录。构建系统将所有输出代码放入此处,并按平台和发布/调试版本进行分类。

src/

自然地,src/ 是迄今为止最大、最复杂的子目录树。对于以下内容,对VirtualBox 架构的基本理解会有所帮助。以下按子目录列出:

  • src/libs/ 包含我们依赖的各种特定版本的库。我们不能让客户陷入“依赖地狱”;因此,我们将这些库静态编译到 VirtualBox 二进制文件中。这些库随附的各种许可都记录在用户手册的附录中。
  • src/VBox/ 包含 VirtualBox 的大部分代码,同样按子目录分类。其中包含:
    • src/VBox/Frontends/:各种用户界面都位于此目录下
      • src/VBox/Frontends/VBoxFB/:“帧缓冲 GUI”,一个直接位于 Linux 帧缓冲上的 GUI。目前未维护。
      • src/VBox/Frontends/VBoxSDL/:一个基于SDL 的替代前端。这对于商业用途和开发期间的测试都很有用。虚拟机随后必须通过 VBoxManage 进行控制。
      • src/VBox/Frontends/VirtualBox/:Qt GUI,如屏幕截图页面所示。
      • src/VBox/Frontends/VBoxManage/:!VBoxManage 文本界面,将 Main 中的 API 暴露给命令行。
    • src/VBox/Debugger/:一个(不完整的)客户机调试器,仍在发展中。
    • src/VBox/Devices/:用于 VMM 虚拟化的各种客户机设备的代码,例如音频、网络和显卡,以及虚拟硬盘和 USB 控制器。
    • src/VBox/Disassembler/:VirtualBox 反汇编器(VM 核心的一部分),受其他各种 VirtualBox 组件(主要来自下方的 VMM)委托分析客户机代码。
    • src/VBox/Additions/:Windows 和 Linux 的“客户机增强功能”(将来可能更多);这段代码必须安装在客户机内部,以优化其性能和可用性。构建系统将这段代码编译成一个 ISO 文件,可以作为虚拟机的虚拟 CD-ROM 驱动器挂载,如用户手册中所述。
    • src/VBox/HostServices/:
    • src/VBox/Installer/:Linux 和 Windows 安装程序代码,位于各自的子目录中。对于 Linux,我们使用一些与 tarball 捆绑的 shell 脚本;对于 Windows,我们构建一个 .MSI 包。
    • src/VBox/Main/:COM/XPCOM 后端(参见COM-XPCOM 互操作性),位于 VMM 代码之上(参见下文)。VirtualBox 的各个组件共享此部分。
    • src/VBox/HostDrivers/:在此目录下,您会找到以下在宿主系统上运行的设备驱动程序(或相应的内核模块):
      • src/VBox/HostDrivers/VBoxTAP/:包含 Windows 的 TAP 驱动程序(Linux 不需要,因为 Linux 内核自带)。(这是一个*宿主*驱动程序,因此不属于上面的Devices/。)
      • src/VBox/HostDrivers/Support/:主要的 VirtualBox 宿主驱动程序,允许 VMM 控制您的系统。一个真正的“特洛伊木马”,但它是友好的。
    • src/VBox/Runtime/VirtualBox 可移植运行时
    • src/VBox/VMM/:虚拟机监视器,VM 核心的一部分。

tools/

tools/中,我们放置了一些不希望依赖宿主平台上的工具,这主要是因为这些工具的某些版本已知存在 bug,我们希望确保使用特定版本。

这些工具按不同平台分类到子目录中:

  • darwin.amd64darwin.x86 包含:
    • bin/iasl 是 ACPI DSL 编译器,源代码可从此处获取。
    • bin/yasmYASM,一个对老牌 NASM 汇编器的重写,该项目在 BSD 许可下发布。
  • linux.amd64linux.x86 包含:
    • bin/yasmYASM,一个对老牌 NASM 汇编器的重写,该项目在 BSD 许可下发布。
  • solaris.amd64solaris.x86 包含:
    • bin/iasl 是 ACPI DSL 编译器,源代码可从此处获取。
    • bin/yasmYASM,一个对老牌 NASM 汇编器的重写,该项目在 BSD 许可下发布。
  • win.amd64win.x86 包含:
    • bin/doxygen.exebin/doxyindexer.exebin/doxysearch.cgi,exebin/libclang.dll 是 Doxygen 工具,对开发和从源代码中提取文档很有用,源代码可从此处获取。
    • bin/iasl.exe 是 ACPI DSL 编译器,源代码可从此处获取。
    • bin/msvcrt.dll 是 Microsoft Visual C 运行时,许多可执行文件和库都需要它。
    • bin/xsltproc.exebin/libxslt.dllbin/libexslt.dllbin/libxml2.dllbin/iconv.dllbin/zlib1.dll 是来自此处的 XSLT 处理工具和库(以及一些必需的库,这些库包含在此处的 Windows 二进制文件中)。
    • bin/yasm.exeYASM,一个对老牌 NASM 汇编器的重写,该项目在 BSD 许可下发布。
上次修改 5 年前 上次修改于 2020/07/02 06:51:07 PM
注意: 查看 TracWiki 获取使用维基的帮助。

© 2025 Oracle 支持 隐私 / 请勿出售我的信息 使用条款 商标政策 自动化访问礼仪