源代码组织
你可以在线浏览源代码此处。
include/
kBuild/
kBuild/
包含相关的 kBuild 发行版,详情请参阅kBuild页面。
out/
out/
是输出目录。构建系统将所有输出代码放入此处,并按平台和发布/调试版本进行分类。
src/
自然地,src/
是迄今为止最大、最复杂的子目录树。对于以下内容,对VirtualBox 架构的基本理解会有所帮助。以下按子目录列出:
src/libs/
包含我们依赖的各种特定版本的库。我们不能让客户陷入“依赖地狱”;因此,我们将这些库静态编译到 VirtualBox 二进制文件中。这些库随附的各种许可都记录在用户手册的附录中。
src/VBox/
包含 VirtualBox 的大部分代码,同样按子目录分类。其中包含:src/VBox/Frontends/
:各种用户界面都位于此目录下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.amd64
和darwin.x86
包含:
linux.amd64
和linux.x86
包含:bin/yasm
是YASM,一个对老牌 NASM 汇编器的重写,该项目在 BSD 许可下发布。
solaris.amd64
和solaris.x86
包含:
win.amd64
和win.x86
包含:bin/doxygen.exe
、bin/doxyindexer.exe
、bin/doxysearch.cgi,exe
、bin/libclang.dll
是 Doxygen 工具,对开发和从源代码中提取文档很有用,源代码可从此处获取。bin/iasl.exe
是 ACPI DSL 编译器,源代码可从此处获取。bin/msvcrt.dll
是 Microsoft Visual C 运行时,许多可执行文件和库都需要它。bin/xsltproc.exe
、bin/libxslt.dll
、bin/libexslt.dll
、bin/libxml2.dll
、bin/iconv.dll
、bin/zlib1.dll
是来自此处的 XSLT 处理工具和库(以及一些必需的库,这些库包含在此处的 Windows 二进制文件中)。bin/yasm.exe
是YASM,一个对老牌 NASM 汇编器的重写,该项目在 BSD 许可下发布。
注意: 查看 TracWiki 获取使用维基的帮助。