Ventoy是一个制作可启动U盘的开源工具。有了Ventoy你就无需反复地格式化U盘,你只需要把ISO文件拷贝到U盘里面就可以启动了,无需其他操作。 你可以一次性拷贝很多个不同类型的ISO文件,在启动时Ventoy会显示一个菜单来选择。 无差异支持Legacy BIOS和UEFI模式。目前已经测试了各类超过200+ 个ISO文件,
背景介绍
从相关文档中可以知道,Ventoy在启动时会基于ISO文件创建一个虚拟设备然后启动它。 但是这个虚拟设备仅仅是BIOS层面的(Legacy或者UEFI)。大多数情况下它只在启动阶段存在。 绝大多数现代操作系统的内核在启动之后都是使用它们自身的驱动来访问硬件,因此这个虚拟设备对于内核来说是不可见的。 一般情况下,ISO里面的系统起来之后会遍历所有的硬件设备(CDROM/USB/HD …) 去寻找安装源。 但是在Ventoy启动的环境下是找不到的,因为没有这样一个实际的安装介质,是虚拟的设备嘛。但是系统内核不知道这个情况,它们不知道当前是 Ventoy使用虚拟设备引导起来的,并不是传统的物理光驱或者U盘引导起来的。所以,如果不做特殊处理的话,大部分ISO文件启动以后就会报找不到安装源的错误而停止。 因此,Ventoy必须做很多hook的工作,帮助内核找到、挂载安装源。其实就是告诉内核,当前是Ventoy从一个虚拟的设备引导起来的,你的安装源并不在常规的介质中,而是在XX硬盘的XXX.iso文件, 你把它挂载起来当做安装源就可以啦。。。。。 但是这个hook工作是非常枯燥而且麻烦的,因为系统种类实在太多而且有各种各样的特殊情况。
Ventoy Compatible 概念
实际上,Ventoy在启动之前,把相关的信息都保存在了运行时内存中(保留内存段),同时还提供了一个工具可以在系统下获取这些信息。 这样,操作系统调用一下这个工具就可以知道,当前是Ventoy环境启动的,而且还能详细知道是基于哪个磁盘的哪个ISO文件启动而来的。 这样,系统就可以直接去找到对应的ISO文件,挂载起来作为安装源就可以了。不需要再用常规的方式去寻找。 当然,如果是常规方式启动起来的,系统下调用这个工具是获取不到任何数据的,这种情况下就按照常规的启动步骤往下走就可以了。
因此,如果ISO里面的系统集成了这个工具,并且做了上述处理的话,对于Ventoy就很简单了,只需要做好这个虚拟设备就可以了,不用再费力做那些hook工作了。 另一方面,还有一个问题就是,就算ISO里面的系统做了这些工作,Ventoy怎么知道呢?因此Ventoy提供了几种方式让ISO文件来标识自己。
我把集成了这个工具并且做了上述处理的操作系统或者ISO文件称之为 “Ventoy Compatible” 的。
Ventoy 特点
- 100% 开源 (许可证)
- 使用简单 (使用说明)
- 快速 (拷贝文件有多快就有多快)
- 直接从ISO文件启动,无需解开
- 无差异支持Legacy + UEFI 模式
- UEFI 模式支持安全启动 (Secure Boot) (1.0.07版本开始) 说明
- 支持超过4GB的ISO文件
- 保留ISO原始的启动菜单风格(Legacy & UEFI)
- 支持大部分常见操作系统, 已测试200+ 个ISO文件
- 不仅仅是启动,而是完整的安装过程
- ISO文件支持列表模式或目录树模式显示 说明
- 提出 “Ventoy Compatible” 概念
- 支持插件扩展
- 支持自动安装部署(1.0.09+) 说明
- 启动过程中支持U盘设置写保护
- 不影响U盘日常普通使用
- 版本升级时数据不会丢失
- 无需跟随操作系统升级而升级Ventoy
使用说明
Windows系统安装 Ventoy
下载安装包,例如 ventoy-1.0.00-windows.zip 然后解压开。
直接执行 Ventoy2Disk.exe
如下图所示,选择U盘设备,然后点击 Install 按钮即可。
安装包内 Ventoy 版本:当前安装包中的Ventoy版本号
设备内部 Ventoy 版本:U盘中已安装的Ventoy版本号,如果为空则表示未安装
安装:把Ventoy安装到U盘,只有第一次的时候需要,其他情况就只需要Update升级即可
升级:升级U盘中的Ventoy版本,升级不会影响ISO文件
Linux系统安装 Ventoy
下载安装包,例如 ventoy-1.0.00-linux.tar.gz, 然后解压开.
在终端以root权限执行 sh Ventoy2Disk.sh -i /dev/XXX
其中 /dev/XXX 是U盘对应的设备名,比如 /dev/sdb
Ventoy2Disk.sh 选项 /dev/XXX 选项含义: -i 安装ventoy到磁盘中 (如果对应磁盘已经安装了ventoy则会返回失败) -I 强制安装ventoy到磁盘中,(不管原来有没有安装过) -u 升级磁盘中的ventoy版本
针对Linux系统有几点需要特殊说明一下:
1. 执行脚本时需要有root权限, 对一些系统比如ubuntu/deepin 执行的时候需要在前面加 sudo 比如 sudo sh Ventoy2Disk.sh -i /dev/sdb
2. 必须cd到ventoy解压之后的目录下执行此脚本
3. 请务必输入正确的设备名称,ventoy不会检查你输入的设备是U盘还是本地硬盘,如果输错了有可能会把你的系统盘格式化掉哦!
请注意:选择安装的时候,U盘将会被格式化,里面所有的数据都会丢失!
你只需要安装一次Ventoy即可,剩下的就只需要把各种ISO文件拷贝到U盘中就可以了.
你也可以把它当成普通U盘使用,保存普通文件,不会影响Ventoy的功能。
拷贝ISO文件
安装完成之后,U盘会被分成两个区。第一个分区将会被格式化为exFAT文件系统,你只需要把ISO文件拷贝到这里面即可。你可以把ISO文件放在任意目录以及子目录下。 Ventoy会遍历所有的目录和子目录,找出所有的ISO文件,并按照字母排序之后显示在菜单中。
请注意:ISO文件的全路径中(包括目录、子目录和文件名)不能包含中文或者空格
升级 Ventoy
如果Ventoy发布了新版本之后,你可以点击 Update 按钮进行升级,或者Linux系统中使用 -u 选项进行升级。
需要说明的是,升级操作是安全的,不会影响原有的ISO文件
更新日志
- 2021/06/13 --- 1.0.46 发布
- 改善Legacy BIOS模式下启动某些Linux ISO的兼容性
vtoyboot-1.0.13
发布。 说明- Windows VHD(x) 启动插件
vhdimg v3.0
更新 说明 - 修复了一个当VTOY_DEFAULT_IMG 设置为 F6>xxx 时,ventoy 版本信息显示位置错乱的BUG
- 优化启动 CRUX 系统的过程
menu class
插件中 key 的优先级高于 parent- languages.ini 更新
- 新增镜像文件支持
- Lakka-Generic.x86_64-3.1.img (Legacy + UEFI)
- Lakka-Generic.x86_64-3.0.img (Legacy + UEFI)
- 2021/05/08 --- 1.0.43 发布
- 语言文件由UTF-16的 ini 格式改为 UTF-8的 json 格式。
- 当 VTOYEFI 分区中的文件损坏时也允许进行升级操作。
- 在 Ventoy2Disk.exe 界面点击安装按钮弹出的确认框中,默认焦点改到
否
上面。 - 修复了使用新版本 vhdimg 启动 Windows VHD(x) 时的一个BUG
- 支持启动本地硬盘上的 Windows VHD(x) 文件。说明
- 2021/04/27 --- 1.0.42 发布(五一快乐)
menu_alias/image_list/auto_install/persistence ...
插件中增加 * 模糊匹配功能。说明menu_class
插件中新增parent
选项。说明menu_class
插件中新增F4boot
F5tool
内置类型。- 在
F4 boot
和F5 tool
菜单中,默认情况下下级菜单自动应用上级菜单的 class 类型。