通过 Ventoy vtoyboot 实现 Void to Go

简介

用于 Ventoy vtoyboot 的 Void 制作全流程,使用 void-mklive 自定义镜像,并使用 vlnk 启动本地硬盘文件,实现 all in one 的效果。

流程

  • 使用 void-mklive 构建自定义 Live CD1
git clone https://github.com/void-linux/void-mklive && cd void-mklive

# 替换默认的龟速镜像源为官方维护的高速 tier 1 mirror
sed -i 's|repo-default.voidlinux.org|repo-fastly.voidlinux.org|g' $(git grep -l repo-default)

# 自用镜像构建脚本,已包含下供参考软件包
_genshin_void.sh

# 安装完整 grub
xi grub-i386-coreboot grub-utils
# vtoyboot command not found 补全
xi mksh keyutils dmraid pcsclite
  • 用 VirtualBox 安装,注意启动 UEFI2 和使用预分配全部空间的 VHD/VDI/RAW,不能动态分配,也不能使用其他格式(虽然有 hack 但不建议)
  • SSH 进新系统,配置 GRUB3
# Void 默认没有 /boot/efi/EFI/boot/bootx64.efi
$ tree /boot/efi/EFI
/boot/efi/EFI
└── void_grub
    └── grubx64.efi

2 directories, 1 file

# 手动复制 EFI 文件
sudo mkdir -p /boot/efi/EFI/boot
cd /boot/efi/EFI
sudo cp void_grub/grubx64.efi boot/bootx64.efi

# 重新创建 EFI
sudo efibootmgr -c
  • 继续配置私有 repo 和 xdeb,并导入 xfce4-panel-profiles 备份
  • 在新系统挂载 vtoyboot ISO4,复制并解压到 ~/.local/bin/vtoyboot,然后运行即可
# 虚拟机运行
sudo bash vtoyboot.sh
  • 创建 vlnk5,复制到 Ventoy USB 即可直接在 Ventoy 中启动本地硬盘,避免来回拷贝大大的硬盘文件
# 宿主机运行

# 重命名 VHD,添加 vtoy 后缀
cd /path/to/Void.vhd
mv Void.vhd Void.vhd.vtoy

# 创建 vlnk
cd /path/to/Ventoy
sudo bash VentoyVlnk.sh -c /path/to/Void.vhd.vtoy

由于 Linux 内核限制,默认情况下启动到 Linux vDisk 中包含 VHD 的分区会无法使用 6,建议使用 VentoyPlugson 配置 VTOY_LINUX_REMOUNT 参数

sudo fdisk -l
sudo bash VentoyPlugson.sh /dev/sda
  • Ventoy v1.1.01 重新实现了 Linux Remount 功能,理论上该参数已弃用,配合 vtoyboot 1.0.36+ 即可挂载包含 VHD 的分区,实测 Void 已可正常挂载
sudo lsblk

$ sudo mount /dev/sdb1 /mnt
"报错"
$ sudo mount /dev/mapper/sdb1 /mnt
$ ls /mnt
"可行"

至此完结,理论上现在关机启动 Ventoy 就可以通过 vlnk 启动本地磁盘上的 VHD 中的自定义 Void Linux。 如果觉得意犹未尽,还可以将 VHD 挪到网络地址,然后使用 iVentoy 实现类似 PXE 的效果,本机甚至不需要安装系统,全程网络启动。


  1. void-mklive 在 Regarding the Perfect GPG Keychain 已有介绍,这里不再赘述,注意安装本机相关驱动即可 ↩︎

  2. 这里一定要启用:一点是 Void Live CD 无法在 BIOS 正常安装(仅限 Void);另一点是 vtoyboot 为保证能够在 BIOS/UEFI 都能正常启动,对任何系统都要求在安装阶段启用 UEFI(任何系统都如此,不仅限于 Void) ↩︎

  3. 由于 Void 默认没有 /boot/efi/EFI/boot/bootx64.efi,不配置的话 Ventoy 无法识别到 VHD 中的系统 ↩︎

  4. 注意是在 VirtualBox 的虚拟机中执行命令,不是在宿主机上执行 ↩︎

  5. 总结一下 Linux vDisk 文件启动插件 麻烦的点,除了前面提到的要使用 UEFI,部分发行版需要额外装 grub 相关软件包,需要在 VM(不是宿主机)执行 vtoyboot,完了还得改名,加上 .vtoy 后缀才能被 vlnk 识别,不然人家压根就不认你 ↩︎

  6. 这点相当重要,如果为了存放 VHD 而单独建立一个分区,那不如直接双系统…… ↩︎

Vinfall's Geekademy

Sine īrā et studiō