简介
用于 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
# 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 的效果,本机甚至不需要安装系统,全程网络启动。
void-mklive 在 Regarding the Perfect GPG Keychain 已有介绍,这里不再赘述,注意安装本机相关驱动即可 ↩︎
这里一定要启用:一点是 Void Live CD 无法在 BIOS 正常安装(仅限 Void);另一点是 vtoyboot 为保证能够在 BIOS/UEFI 都能正常启动,对任何系统都要求在安装阶段启用 UEFI(任何系统都如此,不仅限于 Void) ↩︎
由于 Void 默认没有
/boot/efi/EFI/boot/bootx64.efi
,不配置的话 Ventoy 无法识别到 VHD 中的系统 ↩︎注意是在 VirtualBox 的虚拟机中执行命令,不是在宿主机上执行 ↩︎
总结一下 Linux vDisk 文件启动插件 麻烦的点,除了前面提到的要使用 UEFI,部分发行版需要额外装 grub 相关软件包,需要在 VM(不是宿主机)执行 vtoyboot,完了还得改名,加上
.vtoy
后缀才能被 vlnk 识别,不然人家压根就不认你 ↩︎这点相当重要,如果为了存放 VHD 而单独建立一个分区,那不如直接双系统…… ↩︎