Ventoy 数据持久化插件

很多发行版本(比如 Ubuntu、MX、LinuxMint 等)都提供了数据持久化的支持。这样你就可以在Live环境中保存一些数据,比如用户密码、IP参数等等。这些数据在你下次启动的时候就可以直接使用了,无需再重新配置。正常情况下,我们一般是单独创建一个分区来保存持久化数据,不是非常灵活。
现在Ventoy提供了一个新的功能。你无需再单独创建分区、也无需添加 persistent 启动参数,只需要在第一个分区里面放一个数据文件,然后通过json配置和对应ISO关联上就可以了。对于第1个分区的格式没有要求,NTFS/exFAT等都可以。
你可以同时放很多个不同的数据文件,分别关联到不同的ISO文件上。你也可以同一个数据文件关联到不同的ISO文件上,只要ISO内的系统支持就行。甚至你还可以为一个ISO文件同时指定多个数据文件,在启动时 Ventoy会提供一个菜单,你可以选择本次启动是否使用数据文件以及使用哪一个数据文件。

  • 1. 支持的发行版

Arch/Ubuntu以及基于它的衍生版本。实际测试过的发行版如下表所示:(持续更新中)

发行版 测试过的ISO文件 文件系统 Label 备注
Arch Linux archlinux-2021.03.01-x86_64.iso vtoycow Arch/ArchMan/ArchBang/ArchLabs/BlackArch... are also supported.
Ubuntu ubuntu-20.04-desktop-amd64.iso casper-rw
MX Linux MX-19.1_x64.iso MX-Persist
LinuxMint linuxmint-19.3-xfce-64bit.iso casper-rw
elementary OS elementaryos-5.1-stable.20200405.iso casper-rw
Zorin Zorin-OS-15.1-Core-64-bit-r2.iso casper-rw
Kaspersky Rescue Disk krd18.iso casper-rw
Kali kali-linux-2020.2-live-amd64.iso persistence Need -c persistence.conf option. And use Live USB Persistence boot option.
CloneZilla clonezilla-live-20200703-focal-amd64.iso persistence Need -c persistence.conf option
Fedora Fedora-Workstation-Live-x86_64-33-1.2.iso vtoycow Need to add selinux=0 in the boot option
  • 2. Json 配置

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

{
    "persistence": [
        {
            "image": "/ISO/MX-19.1_x64.iso",
            "backend": "/persistence/MX-19.1_x64.dat"
        },
        {
            "image": "/ISO/ubuntu-20.04-desktop-amd64.iso",
            "backend": [
                "/persistence/ubuntu_20.04_1.dat",
                "/persistence/ubuntu_20.04_2.dat",
                "/persistence/ubuntu_20.04_3.dat"
            ],
            "autosel": 2
        },     
        {
            "image": "/ISO/kali-linux-2020.2-live-amd64.iso",
            "backend": [
                "/persistence/kali-linux-1.dat",
                "/persistence/kali-linux-2.dat",
                "/persistence/kali-linux-3.dat",
                "/persistence/kali-linux-4.dat"
            ],
            "autosel": 2,
            "timeout": 10
        },    
        {
            "image": "/linuxmint-19.3-xfce-64bit.iso",
            "backend": "/persistence/linuxmint_19.03.dat",
            "autosel": 1            
        }
    ]
}

关键字 类型 说明
image 字符串 iso文件的全路径。本参数支持模糊匹配,请参考 插件路径匹配说明
backend 字符串 或 字符串数组 对应iso文件的持久化数据文件的全路径。可以是一个字符串或者是一个字符串数组。
autosel 整数 可选的,可以不设置。不设置的情况下默认选择的就是1,即 使用第1个持久化数据文件 这一项。
0: 默认选择 不使用持久化数据文件 这一项
1: 默认选择 使用第1个持久化数据文件 这一项
2: 默认选择 使用第2个持久化数据文件 这一项
3: 默认选择 使用第3个持久化数据文件 这一项
......
timeout 整数 选择菜单倒计时(秒)。可选的,可以不设置。设置时数值需要大于或等于0。
大于0时: 弹出确认菜单,默认选项参考 autosel 说明,倒计时结束后自动选择对应选项。
等于0时: 弹出确认菜单,默认选项参考 autosel 说明,没有倒计时,一直等用户选择。
不设置时: 如果 autosel 设置了,则会自动选择对应项,不会再弹出提示菜单。 如果 autosel 没有设置则,则和timeout等于0时效果相同。
  • 3. 多模式选项

支持。可以分别针对 x86 Legacy BIOS、IA32 UEFI、x86_64 UEFI 和 ARM64 UEFI 模式做不同的设置。详细说明请参考 多模式选项

  • 4. 持久化数据文件

持久化数据文件其实就是一个磁盘镜像文件。你可以直接下载已创建好的模板使用或者自己使用脚本创建。
直接下载
你可以直接从 https://github.com/ventoy/backend/releases 下载已经创建好的镜像文件使用。
新创建
这里提供了一个 CreatePersistentImg.sh 脚本用来创建持久化镜像文件。
把它下载下来,在Linux shell中执行 sudo bash CreatePersistentImg.sh (默认会创建一个 1GB 大小的 persistence.dat 文件,ext4文件格式,label为 casper-rw)。

sh CreatePersistentImg.sh  [ -s SIZE_IN_MB ] [ -t FSTYPE ] [ -l LABEL ] [ -c CFG ]  例如:

sh CreatePersistentImg.sh                 ---->  persistence.dat, 1GB 大小, ext4 文件系统, label 为 casper-rw
sh CreatePersistentImg.sh -l MX-Persist   ---->  persistence.dat, 1GB 大小, ext4 文件系统, label 为 MX-Persist
sh CreatePersistentImg.sh -s 2048         ---->  persistence.dat, 2GB 大小, ext4 文件系统, label 为 casper-rw
sh CreatePersistentImg.sh -s 4096 -t xfs  ---->  persistence.dat, 4GB 大小,  xfs 文件系统 (当前只支持 ext2/ext3/ext4/xfs), label 为 casper-rw

sh CreatePersistentImg.sh -l persistence -c persistence.conf  ---->  persistence.dat, 1GB 大小,  ext4 文件系统, label 为 persistence 最后还会在 persistence.dat里面会创建一个
persistence.conf 文件,文件内容只有一行,为 "/ union" 对于有一些发行版有这种要求,比如 Debian、KALI、CloneZilla等。

  1. 在生成数据文件以及拷贝文件到U盘时,注意使用sync把数据完全写入磁盘。
  2. 不同的发行版本使用的默认Label不同,可以通过 -l 参数指定,比如ubuntu默认为casper-rw, MX Linux默认为 MX-Persist等。
  3. 持久化数据文件必须放在镜像分区中,可以是根目录下,也可以是其他子目录下。另外并不需要和对应iso文件放在同一目录下。
  4. 持久化数据文件制作好后,可以作为一个模板,压缩后保存在电脑上(压缩后非常小),这样就无需每次都新建一个。
  • 5. 扩展持久化数据文件

有些情况下,可能在使用一段时间之后发现持久化空间不足。如果使用一个新的持久化数据文件,又需要备份恢复原有数据,比较耗时。
这里提供了一个 ExtendPersistentImg.sh 脚本用来无损扩展持久化数据文件。 把它下载下来,在 Linux shell 中按照说明执行即可。

sudo bash ExtendPersistentImg.sh  datfile extend_size_mb  例如:
sudo bash ExtendPersistentImg.sh  persistent.dat 2048
表示把 persistent.dat 文件扩展 2048MB,即如果原始 persistent.dat 文件大小是 1GB,则扩展之后变成 3GB

  • 6. 缩小持久化数据文件 (1.0.53+)

尽管不是很常见,但可能也存在这种情况。比如你一开始创建了一个很大的持久化数据文件,现在想无损缩小它。
此时你可以给 ExtendPersistentImg.sh 一个负数作为参数,例如:

sudo bash ExtendPersistentImg.sh  persistent.dat -2048
表示把 persistent.dat 缩小 2048MB (-2GB)。即如果原始文件大小是 8GB,则缩小之后变为 6GB

1. 只支持 ext4 文件系统格式的文件。XFS 文件系统不支持,因为 XFS 文件系统只支持扩大、不支持缩小。
2. 你必须保证缩小之后的空间仍然能够容纳的下原来 dat 文件里面的所有数据。

  • 7. 启动前的提示 (1.0.12+)

在启动配置了数据持久化的ISO文件时会显示一个提示菜单。你可以选择本次启动是否使用持久化以及使用哪一个持久化数据文件。