本文档解释了 Ventoy 如何从 ISO 文件启动操作系统。它涵盖了从开机到固件初始化、引导加载程序阶段、ISO 选择,最后启动所选操作系统까지的完整启动序列。详细介绍了 Windows 和 Linux 的启动路径,包括用于挂载 ISO 文件和执行系统安装程序或 Live 环境的机制。
有关将 Ventoy 安装到 USB 驱动器的信息,请参阅 安装工具。
Ventoy 的启动过程包含几个阶段,这些阶段会根据系统固件类型(UEFI 或 Legacy BIOS)和要启动的操作系统类型(Windows 或 Linux)而有所不同。
来源
在 UEFI 模式下,系统固件会加载 Ventoy EFI 应用程序(ventoy_x64.efi 或相应的特定架构变体)。此 EFI 应用程序随后加载 GRUB,GRUB 继续启动过程。
在 BIOS 模式下,系统从 Ventoy 设备加载 MBR 代码,然后直接加载 GRUB。
来源
加载包含 Ventoy 模块的 GRUB 后,它会执行几项功能:
当用户选择一个 ISO 文件时,Ventoy 会确定它是基于 Windows 还是 Linux 的系统,并执行相应的启动处理程序。
Windows 启动由 vtoyjump.exe 实用程序处理,该实用程序负责挂载 ISO 文件并将控制权传递给 Windows 安装程序或环境。
来源
对于 Windows 8 及更高版本,vtoyjump.exe 使用 Windows 虚拟磁盘 API 来挂载 ISO 文件。该过程包括:
OpenVirtualDisk() 打开虚拟磁盘AttachVirtualDisk() 附加虚拟磁盘来源
对于 Windows 8 之前的系统或作为备用方法,Ventoy 使用 ImDisk 来挂载 ISO 文件。此方法:
来源
成功挂载 ISO 后,Windows 安装程序会自动从挂载的驱动器启动。vtoyjump.exe 也可能执行其他任务:
Linux ISO 文件通过一系列 shell 脚本启动,这些脚本会识别 Linux 发行版并应用相应的钩子。
来源
此脚本是启动 Linux ISO 文件的主要入口点,并执行几项关键功能:
来源
Ventoy 包含特定于发行版的钩子脚本,这些脚本处理每个 Linux 发行版的特殊要求。这些钩子位于 hook/ 目录中,并根据 ventoy_get_os_type() 识别的发行版执行。
钩子通常:
这是操作系统特定钩子脚本使用的通用实用程序库。它提供了以下功能:
来源
Ventoy 的一项关键创新是设备映射器补丁,它允许 Linux 发行版直接从 ISO 文件启动,而无需解压。
来源
钩子库首先通过查找 /proc/devices 中的 'device-mapper' 来检查设备映射器是否已可用。如果未找到,它会尝试使用以下命令加载模块:
modprobe dm_mod 和 modprobe dm-modinsmod 搜索并加载 dm-mod.ko。加载设备映射器模块后,Ventoy 会应用其自定义补丁:
/dev/mapper/ventoy 下可用此补丁使 Linux 能够直接从 ISO 文件启动,就像它是一个物理设备一样。
Ventoy 使用各种内核参数来控制启动过程:
| 参数 | 目的 | 用途 |
|---|---|---|
| vtinit | 替换 init 系统的 rdinit 参数 | Linux 内核 |
| vtoy_disk | 识别 Ventoy 磁盘设备 | Windows 和 Linux |
| vtoy_img_path | Ventoy 分区内 ISO 文件的路径 | Windows 和 Linux |
| vtoy_dm_patch | 控制设备映射器修补行为 | Linux |
| vtoy_debug | 启用调试日志记录 | Windows 和 Linux |
这些参数由 vtoyjump.exe(用于 Windows)和 ventoy_chain.sh(用于 Linux)解析,以控制启动过程。
来源
Ventoy 包含各种备用和恢复机制来处理启动失败。
来源
对于 Windows ISO 挂载:
对于 Linux 启动:
除了标准的 ISO 启动外,Ventoy 还支持几种特殊的启动模式:
| 文件类型 | 启动方法 | 备注 |
|---|---|---|
| ISO | 标准方法 | 大多数操作系统的主要格式 |
| WIM | 通过 vtoyjump 进行特殊处理 | Windows 安装文件 |
| VHD/VHDX | 特殊挂载过程 | 用于某些 Windows 和 Linux 环境 |
| IMG | 被视为 ISO 文件 | 某些 Linux 发行版使用 |
| EFI | 直接执行 EFI 应用程序 | 用于特殊启动环境 |
来源
Ventoy 的启动过程是一个复杂的系统,它连接了固件初始化、引导加载程序加载、ISO 文件管理和特定于操作系统的启动。Ventoy 独有的关键创新包括:
这些功能协同工作,在各种操作系统上提供一致可靠的启动体验。