背景介绍
简单来说,Ventoy是一个制作可启动U盘的开源工具。
有了Ventoy你就无需反复地格式化U盘,你只需要把 ISO/WIM/IMG/VHD(x)/EFI 等类型的文件拷贝到U盘里面就可以启动了,无需其他操作。
– Ventoy官方介绍
手头有个512GB的Sandisk固态移动硬盘, 安装Ventoy后一直当系统维护盘和数据交换用, 最近想要在里面再装个Linux做开发用, 逛了一圈没找到啥完整的攻略, 只有官方Github上有个issue给了点提示
https://github.com/ventoy/Ventoy/issues/852
先试了下用vdi虚拟磁盘的方式, 结果光创建120GB大小的vdi文件就需要10来分钟, 想到后面访问vdi里面的文件也不太方便, 就放弃这个方案了, 研究了一下在移动硬盘上单独分区安装Manjaro, 然后再配置Ventoy的GRUB进行引导, 实验成功, 分享一下过程, 人生苦短, 我用Manjaro, 理论上其他Linux发行版也一样适用.
安装Ventoy
https://github.com/ventoy/Ventoy/releases/
官网下载运行Ventoy, 注意在配置选项中设置分区设置
, 在磁盘最后保留一段空间, 用来存放要安装的Manjaro系统. 注意首次安装Ventoy会清空移动设备上的所有数据, 务必做好数据备份
安装Manjaro
将Manjaro的安装镜像ISO文件直接扔到装好Ventoy的U盘/移动硬盘第一个分区(卷标为Ventoy
)里面就可以正常使用Ventoy引导安装程序了, 这里需要注意的是Manjaro安装过程中需要手工选择安装的目标磁盘和分区, 安装过程中忘了截图, 大致描述一下吧, 就是安装目标设备选择U盘/移动硬盘, 在设备末尾未分配的空间上创建一个ext4分区, 并设置挂载点为/
, 下一步的时候安装程序会提示没有引导分区什么的, 这里不用管它, 直接装完就行
配置Ventoy引导菜单
上一步安装完Manjaro后重启肯定是无法引导的, Ventoy的菜单里面只会显示ISO文件的启动项, 这时候还正常启动到Windows系统中, 使用DiskGenius访问U盘/移动硬盘中刚才安装Manjaro的ext4分区, 找到/etc/fstab
文件复制到桌面并用编辑器打开(直接在DiskGenius中预览的话不能选择内容复制的)
将fstab
文件中根位置挂载设备的UUID内容复制到剪切板备用(主要要包含UUID=
)
使用Windows的文件资源管理器打开U盘/移动硬盘的Ventoy分区, 在根目录下新建文件夹ventoy
, 然后在该文件夹里面创建配置文件ventoy_grub.cfg
, 编辑内容如下:
menuentry "Manjaro on Sandisk" --class=custom {
set root=($vtoydev,gpt3)
linux /boot/vmlinuz-5.4-x86_64 root=UUID=469b995c-b84e-40d5-ba30-7ce0027ea82a
initrd /boot/initramfs-5.4-x86_64.img
boot
}
menuentry '<-- Return to previous menu [Esc]' --class=vtoyret VTOY_RET {
echo 'Return ...'
}
配置文件里面主要是定义了两个menuentry
菜单入口配置, 第二个是返回上一页的作用, 照抄官方文档, 第一个入口是引导U盘/移动硬盘上Manjaro系统的, 其实主要就4行内容, 下面详细解释一下:
set root=($vtoydev,gpt3)
这里使用了Ventoy内置的一个变量$vtoydev
用来获取当前移动设备的名称和编号, 实际变量内容通常为hd1
之类GRUB里面对存储设备进行编号的规则.
linux /boot/vmlinuz-5.4-x86_64 root=UUID=469b995c-b84e-40d5-ba30-7ce0027ea82a
这一行指定系统root
位置的时候就用到了上面我们从fstab
中复制过来的UUID内容, 定位移动设备更方便和准确. 另外需要注意一下/boot/vmlinuz-xx
这个文件详细的名称可能会随系统更新而不同, 可以在Diskgenius里面对照改一下initrd /boot/initramfs-5.4-x86_64.img
同上, 和实际文件名保持一致
boot
引导系统
从Ventoy中引导Manjaro
做好上面的配置后重启系统, 从移动设备启动到Ventoy菜单后按F6
加载自定义菜单, 就可以看到上面我们配置的两个入口: 第一个启动Manjaro, 第二个返回上一级菜单. 直接选择第一个选项启动系统就OK啦!