手把手制作 Ventoy 多系统启动U盘:从安装到定制与故障排查
【免费下载链接】VentoyA new bootable USB solution.项目地址: https://gitcode.com/GitHub_Trending/ve/Ventoy
Ventoy 是一款开源的多架构启动盘方案:一次安装后,同一块U盘可直接启动多个 ISO/WIM/IMG/EFI 镜像,无需反复格式化。本文将带你完成 Ventoy 启动U盘在 Linux 下的完整流程——安装到真实磁盘、复制镜像、定制启动菜单,以及常见故障的处理方法。
📋 为什么选择 Ventoy:一块U盘启动多个系统
是不是每次想装个新系统,都得把U盘重新格式化一遍?传统做法是"一张U盘对应一个镜像":写入一个发行版,换另一个就得重新格式化,超过 4GB 的镜像在 FAT32 下还根本拷不进去。Ventoy 用双分区结构解决了这个问题:第一分区是引导分区(约 32MB,exFAT),存放引导加载器和配置;第二分区是数据分区,装好之后它就是一块普通磁盘,镜像文件随放随启动。
两种方式的核心差异如下:
| 对比维度 | 传统做法(每镜像写入一次) | Ventoy 启动U盘 |
|---|---|---|
| 制作操作 | 每新增镜像都要重新格式化写入 | 一次安装,镜像随时增删 |
| 文件大小限制 | FAT32 单文件上限 4GB | 数据分区默认 exFAT,无 4GB 限制 |
| 架构兼容 | 工具多只针对单一架构 | 同一块盘支持 x86/x86_64/ARM64/MIPS64EL UEFI 引导 |
| 数据保留 | 格式化清空全部数据 | 仅重建引导分区,数据分区不受影响 |
| 镜像管理 | 无 | 支持菜单别名、目录分类、自定义主题 |
🛠️ 三步安装到U盘
第一步:确认真实设备路径
先列出块设备,确认U盘是哪个。这里最容易出错的是把分区当成整盘传参:
# 查看磁盘与分区树,U盘通常是 /dev/sdb 或 /dev/sdc lsblk -o NAME,SIZE,FSTYPE,LABEL,MODEL必须传整盘设备(如/dev/sdb),不能传分区(如/dev/sdb1)。脚本内置了校验,传错会直接报错退出;但装错盘会清掉整块盘的数据,执行前请务必核对容量和型号。
第二步:执行安装
进入包含Ventoy2Disk.sh的目录(发行版安装包解压后的根目录),执行安装:
# 基本安装:-i 表示 install,目标为整盘 sudo bash Ventoy2Disk.sh -i /dev/sdb # 可选组合:GPT 分区表 + 显式开启安全启动支持 sudo bash Ventoy2Disk.sh -i -g -s /dev/sdb几个易错参数的含义:
-i:安装模式。如果目标盘已装过 Ventoy,该命令会直接失败并提示-u:升级模式,已装 Ventoy 的盘更新版本时用这个,不碰数据分区-I:强制安装,已装过也覆盖,仅在明确要重装时使用-g:用 GPT 分区表(默认 MBR)。给 UEFI 设备用时建议加上- **
-s/-S:开启/关闭安全启动支持(默认开启) -l:查看目标盘上 Ventoy 的版本信息,装完后可用
脚本会自动创建两个分区并写入引导文件,完成后数据分区会以 exFAT 格式挂出(Linux 下需系统支持 exFAT,否则可用 exfat-utils 等工具处理)。
第三步:把镜像拷进数据分区
挂载第二分区,把镜像放进去即可,支持子目录:
# 挂载数据分区(第一分区是引导分区,不要动它) sudo mkdir -p /mnt/ventoy sudo mount /dev/sdb2 /mnt/ventoy # 按发行版分目录,方便管理菜单 sudo mkdir -p /mnt/ventoy/ISO/ubuntu sudo cp ~/iso/ubuntu-22.04-live-server-amd64.iso /mnt/ventoy/ISO/ubuntu/ # 收尾卸载 sudo umount /mnt/ventoy之后每加一个镜像,重复挂载—拷贝—卸载三步就行。重启目标机,在固件启动菜单里选择U盘,Ventoy 会扫描数据分区并列出所有镜像。
⚙️ 用 ventoy.json 定制菜单、主题与自动安装
Ventoy 的定制入口是数据分区/ventoy/目录下的ventoy.json。下面是仓库中真实格式的配置文件节选,改完保存、重启生效:
{ "control": [ { "VTOY_DEFAULT_MENU_MODE": "1" } ], "theme": { "file": "/ventoy/theme/theme.txt", "display_mode": "GUI", "ventoy_left": "5%", "ventoy_top": "95%", "ventoy_color": "#0000ff" }, "menu_class": [ { "key": "ubuntu", "class": "ubuntu" }, { "dir": "rhel", "class": "red-hat" } ], "menu_alias": [ { "image": "/ISO/ubuntu-22.04.iso", "alias": "Ubuntu 22.04 测试镜像" } ], "auto_install": [ { "image": "/ISO/windows10.iso", "template": "/ventoy/script/windows_unattended.xml" } ] }逐字段说明:
control:全局行为开关的数组,元素是键值对,如控制默认菜单显示模式、是否过滤点开头的文件theme:主题配置。file指向主题描述文件;display_mode取GUI(图形菜单)或TEXT(纯文本菜单,ARM 设备兼容性更好);ventoy_*三个字段控制菜单角标 Ventoy 版本信息的位置和颜色menu_class:菜单分类。key按文件名关键字匹配镜像,dir按目录匹配,class指定分类显示名称menu_alias:给指定镜像起别名,image是数据分区内的相对路径,alias是菜单上显示的文案auto_install:无盘自动安装。选中image指定的镜像时,把template应答文件注入给安装器,实现无人值守安装
更换菜单背景与配色
theme.file指向的主题文件是 GRUB 图形主题格式,放在/ventoy/theme/下,背景图与其同目录。最小改动示例:
desktop-image: "background.png" title-text: " " message-color: "#f2f2f2" + boot_menu { left = 10% width = 80% top = 30% height = 50% item_color = "#ffffff" selected_item_color = "#f2f2f2" item_pixmap_style = "menu_*.png" selected_item_pixmap_style = "select_*.png" }left/width/top/height控制菜单框位置与大小,item_color是普通条目颜色,selected_item_color是高亮条目颜色;菜单边框由menu_*.png、select_*.png系列九宫格图片绘制,直接替换同名文件即可换边框样式。
为 Live 镜像开启持久化
需要保留安装过程中的文件改动时,先按目标发行版的要求生成持久化文件。仓库自带生成脚本:
# 在数据分区中执行;-s 是容量(MB),-l 是分区标签,-o 是输出文件名 sudo bash CreatePersistentImg.sh -s 4096 -l casper-rw -o persistence.dat # 生成的 persistence.dat 必须与目标 ISO 放在同一目录 sudo cp persistence.dat /mnt/ventoy/ISO/ubuntu/-l的标签值决定哪个发行版能识别它:Ubuntu 系认casper-rw,MX 等发行版用各自的标签。持久化是否生效取决于发行版对持久化的支持,不是所有 Live ISO 都支持。
🔧 常见故障与排查
现象1:执行安装提示Don't run Ventoy2Disk.sh here
- 可能原因:当前目录缺少完整的引导文件(如在源码目录而非发行版安装包目录中执行)
- 解决步骤:确认目录下有
boot/boot.img、ventoy/、grub/等完整安装内容;没有的话使用发行版安装包中的脚本执行
现象2:-i安装失败,提示该盘已安装 Ventoy
- 可能原因:目标盘之前装过 Ventoy,
-i拒绝覆盖 - 解决步骤:只想更新版本就用
-u;确认要推倒重装才用-I(会清空引导分区)
现象3:U盘能引导进 Ventoy,但菜单里没有刚拷的镜像
- 可能原因:镜像放进了第一分区(引导分区);或文件名不是 Ventoy 识别的扩展名(
.iso/.wim/.img/.vhd/.vhdx/.efi等);或挂载后没有真正同步落盘就拔盘 - 解决步骤:重新挂载数据分区检查镜像确实在第二分区内;核对扩展名;拷完文件执行
sudo sync再卸载
现象4:安全启动的主机拒绝启动U盘
- 可能原因:安装时未启用安全启动支持,或 MOK 密钥未注册
- 解决步骤:用
-i -s或-u重装/升级以启用安全启动支持;启动时出现 MOK 管理界面则按其提示注册密钥;排查阶段可先在固件里临时关闭 Secure Boot 验证镜像本身能否引导
总结
Ventoy 的核心思路是把"启动U盘"从一次性写入的产物变成一块可长期管理的磁盘:引导分区负责启动,数据分区负责放镜像,ventoy.json负责定制。按本文三步装好,再加别名和主题,就是一块日常可用的多系统启动盘。
下一步行动:
- ✅ 用
lsblk核对设备后,执行-i安装并记下你使用的分区表类型(MBR/GPT) - ✅ 往数据分区放 2~3 个不同架构的镜像,验证菜单扫描结果
- ✅ 创建
/ventoy/ventoy.json,至少配置一条menu_alias和menu_class - ✅ 跑通一次
CreatePersistentImg.sh生成的持久化文件,确认目标发行版能识别 - ✅ 在安全启动主机上用
-u升级一次,确认 MOK 注册流程无误
【免费下载链接】VentoyA new bootable USB solution.项目地址: https://gitcode.com/GitHub_Trending/ve/Ventoy
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考