Ventoy 自动安装插件

很多操作系统都提供了无人值守、自动安装部署的方案。你只需要提供一个脚本或者模板即可。
比如 Windows 中的 unattend XML、Redhat/CentOS系列中的 Kickstart 脚本、SUSE系列中的 autoYast XML、Debian系列中的preseed脚本等等。
正常情况下,如果你想进行自动安装,你必须重新制作一个新的ISO文件,在里面放入一个自动安装的脚本才可以。

现在 Ventoy 提供了一个新的功能,通过这个插件,你不用重新制作ISO文件,只需要使用原版的ISO文件,然后在U盘中放一个自动安装的脚本即可。
你甚至可以对一个ISO文件同时设置多个自动安装脚本,在启动时会有菜单来让你选择。 你还可以随时更新这些自动安装的脚本。

  • 支持的发行版 (更新中)

理论上只要发行版支持通过脚本配置自动安装,Ventoy就可以支持,只不过需要时间来一个个的适配测试。

发行版 脚本格式 示例脚本 说明
Windows Unattend XML unattended.xml Windows系列
Deepin/UOS INI deepin.ini Deepin/UOS 系列
RHEL8/CentOS8 Kickstart script kickstart8.cfg 同时也支持基于这几个派生出来的发行版。
RHEL7/CentOS7/Fedora Kickstart script kickstart7.cfg 同时也支持基于这几个派生出来的发行版。
RHEL6/CentOS6 Kickstart script kickstart6.cfg 同时也支持基于这几个派生出来的发行版。
Debian Preseed script preseed.cfg Debian 系列的发行版.
Ubuntu Server (< 20.x) Preseed script preseed.cfg 早期 Ubuntu Server 版本
Ubuntu Server (20.x+) cloud-init cloud-init-user-data Ubuntu Server 20.x 以后的版本
SUSE autoYast XML autoYast.xml SLES and openSUSE

注意,这里的示例脚本仅供参考,需要根据实际需要修改,尤其是里面磁盘分区的部分。否则会造成磁盘被误格式化、数据丢失等问题。

  • Json 配置

推荐使用 VentoyPlugson 工具进行配置,无需手动创建、编辑json文件。请参考 VentoyPlugson
关于 ventoy.json 的位置以及相关说明,请首先参考 插件入口 (*必读)
在镜像分区 /ventoy/ventoy.json 中定义了一个 auto_install 的数组来配置自动安装。

{
    "auto_install": [
        {
            "image": "/abc/centos.iso",
            "template": "/ventoy/script/centos_kickstart.cfg"
        },
        {
            "image": "/ISO/cn_windows_server_2012_r2_vl_x64_dvd_2979220.iso",
            "template": [
                "/ventoy/script/windows_unattended1.xml",
                "/ventoy/script/windows_unattended2.xml",
                "/ventoy/script/windows_unattended3.xml",
                "/ventoy/script/windows_unattended4.xml",
                "/ventoy/script/windows_unattended5.xml",
                "/ventoy/script/windows_unattended6.xml"
            ],
            "autosel": 2
        },
        {
            "image": "/ISO/cn_windows_server_2016.iso",
            "template": [
                "/ventoy/script/windows_unattended7.xml",
                "/ventoy/script/windows_unattended8.xml",
                "/ventoy/script/windows_unattended9.xml"
            ],
            "autosel": 3,
            "timeout": 10
        },
        {
            "image": "/SLE-12-SP3-Server-DVD-x86_64-GM-DVD1.iso",
            "template": "/ventoy/script/suse_autoyast.xml"
        },
        {
            "parent": "/ISO/SUSE",
            "template": "/ventoy/script/suse_autoyast.xml"
        },
        {
            "image": "/ubuntu-16.04-server-amd64.iso",
            "template": "/ventoy/script/ubuntu_server.seed",
            "autosel": 1
        }
    ]
}

关键字 类型 描述
image 字符串 iso文件的全路径。本参数支持模糊匹配,请参考 插件路径匹配说明
parent 字符串 iso文件父目录的全路径。此目录下的所有ISO文件将会使用相同的一个自动安装脚本。 注意最后不能以斜杠结尾。
template 字符串 或 数组 自动安装脚本文件的全路径。可以是一个单独的字符串或者是字符串数组。
autosel 整数 可选的,可以不设置。不设置的情况下默认选择的就是1,即 使用第1个自动安装脚本 这一项。
0: 默认选择 不使用自动安装脚本 这一项
1: 默认选择 使用第1个自动安装脚本 这一项
2: 默认选择 使用第2个自动安装脚本 这一项
3: 默认选择 使用第3个自动安装脚本 这一项
......
timeout 整数 选择菜单倒计时(秒)。可选的,可以不设置。设置时数值需要大于或等于0。
大于0时: 弹出确认菜单,默认选项参考 autosel 说明,倒计时结束后自动选择对应选项。
等于0时: 弹出确认菜单,默认选项参考 autosel 说明,没有倒计时,一直等用户选择。
不设置时: 如果 autosel 设置了,则会自动选择对应项,不会再弹出提示菜单。 如果 autosel 没有设置则,则和timeout等于0时效果相同。
  • 脚本变量扩展 (1.0.77 版本开始支持)

在进行自动安装时,在安装脚本中有一些配置是无法固定写死的,必须根据实际环境进行调整。

最常见的就是对于安装盘的指定,比如我们在安装脚本中指定系统安装到 DISK0 或者 /dev/sda 但在有些机器上它对应的那个盘并不是我们想要的那个。
这样可能就把系统安装到错误的盘上了,甚至是安装到 Ventoy 所在的那个盘上去了。这样就导致系统也没安装对,甚至连 Ventoy 也被清除了。

还有一种情况,就是我们有时希望对于一些参数能在安装时动态输入而不是固定写死,比如 机器名 用户名 等。

针对上述需求,Ventoy 从 1.0.77 版本开始,在自动安装脚本中支持 变量扩展,变量使用 $$XXX$$ 的形式,其中 XXX 对应变量名。

注意:
1. 包含变量的自动安装脚本文件必须是 UTF-8 编码格式。
2. XXX 对应的变量名只能包含数字、下划线、字母,并且长度不能超过63个字符。例如: $$USERNAME$$
3. 自动安装脚本中每一行最多只能包含1个变量
4. 对于普通变量,选择自动安装脚本时,Ventoy 会弹出提示框,提示用户输入变量的实际值。
5. 对于内置变量,Ventoy 不会弹框,而是根据其对应的含义自动进行扩展。
6. 所有内置变量都以 VT_ 开头,所有普通变量都不能以 VT_ 开头。
7. Ventoy 会自动检测自动安装脚本内是否包含变量,对于不包含变量的脚本不会做扩展处理。
8. 变量扩展是在副本中进行的,不会修改U盘中的脚本源文件。

内置变量 扩展后示例 说明
VT_WINDOWS_DISK_1ST_NONVTOY 0 第一个非 Ventoy 盘。按照 Windows 下的磁盘编号,只能在 Windows unattend.xml 中使用。
VT_WINDOWS_DISK_1ST_NONUSB 1 第一个非 USB 盘。按照 Windows 下的磁盘编号,只能在 Windows unattend.xml 中使用。
VT_WINDOWS_DISK_MAX_SIZE 1 容量最大的盘。按照 Windows 下的磁盘编号,只能在 Windows unattend.xml 中使用。
VT_WINDOWS_DISK_CLOSEST_XXX 2 容量最接近 XXX GB的磁盘。
注意这里使用时 XXX 要换成具体的数值,比如 VT_WINDOWS_DISK_CLOSEST_300 表示容量最接近 300GB 的那个盘。
只能在 Windows unattend.xml 中使用。
VT_LINUX_DISK_SDX_1ST_NONVTOY sda sda sdb sdc ... 中第一个非 Ventoy 盘。只检测 sdX 形式的盘,不检测像 hda/vda/nvme0n1 等形式的盘。只能在 Linux 系统的安装脚本中使用。
VT_LINUX_DISK_SDX_1ST_NONUSB sdb sda sdb sdc ... 中第一个非 USB 盘。只检测 sdX 形式的盘,不检测像 hda/vda/nvme0n1 等形式的盘。只能在 Linux 系统的安装脚本中使用。
VT_LINUX_DISK_MAX_SIZE sdc 容量最大的盘。不仅限于 sdX 形式的盘,包括 hda/vda/nvme0n1 等所有形式。只能在 Linux 系统的安装脚本中使用。
VT_LINUX_DISK_CLOSEST_XXX sda 容量最接近 XXX GB的磁盘。
注意这里使用时 XXX 要换成具体的数值,比如 VT_WINDOWS_DISK_CLOSEST_256 表示容量最接近 256GB 的那个盘。
不仅限于 sdX 形式的盘,包括 hda/vda/nvme0n1 等所有形式。只能在 Linux 系统的安装脚本中使用。


普通变量的提示框:


脚本示例:unattend.xml



脚本示例:kickstart.cfg


  • 多模式选项

支持。可以分别针对不同的BIOS模式做不同的设置。详细说明请参考 多模式选项

  • 启动前的提示 (1.0.12+)

在启动配置了自动安装的ISO文件时会显示一个提示菜单。你可以选择本次启动是否使用自动安装脚本以及使用哪一个脚本。