无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站广告联系 微信:wuyouceo QQ:184822951
楼主: ksjifjui

[分享] Ventoy也可与你的操作系统和谐共存于同一硬盘,体验不一样的玩法

    [复制链接]
发表于 2022-11-3 12:03:48 | 显示全部楼层
ksjifjui 发表于 2022-11-3 10:51
不清楚我这么讲,能不能更好的帮助你理解

首先rEFInd和GRUB2等工具都可用于多系统引导,比如你的硬盘 ...

收到,晚点回家慢慢学习,谢了先!
回复

使用道具 举报

发表于 2022-11-3 14:31:21 | 显示全部楼层
感谢分享
回复

使用道具 举报

发表于 2022-11-3 16:09:08 | 显示全部楼层
感谢分享。
回复

使用道具 举报

 楼主| 发表于 2022-11-3 18:00:02 | 显示全部楼层
回复

使用道具 举报

 楼主| 发表于 2022-11-3 18:00:13 | 显示全部楼层
回复

使用道具 举报

发表于 2022-11-3 22:20:58 | 显示全部楼层
顶一个
回复

使用道具 举报

发表于 2022-11-3 23:28:19 | 显示全部楼层
谢谢分享
回复

使用道具 举报

 楼主| 发表于 2022-11-4 19:54:03 | 显示全部楼层
回复

使用道具 举报

发表于 2022-11-7 15:58:32 | 显示全部楼层
我以前是通过修改不同bootx64.efi来用不同方式启动
不用的时候都重命名先屏蔽掉
回复

使用道具 举报

发表于 2022-11-8 23:27:29 | 显示全部楼层
本帖最后由 pda8888 于 2022-11-8 23:29 编辑

我用一个VHD文件模拟硬盘来做实验(模拟容量是1TB)。
用Virtualbox 6.1.34,装入VHD为一个硬盘,然后用PVE 7.2.1的ISO文件启动,在VHD上面安装PVE。
接着,在PVE(debian 10.2.1)里面,安装refind 1.36。
再启动的时候,有了refind的启动菜单。
此时,再用做任意的PE ISO引导VHD,进入到PE,在PE里,用Diskgenius打开VHD(此时在模拟的一个硬盘),看到VHD模拟出的硬盘分区顺序为:1GB的BIOS分区,接着是500M的ESP分区(分区格式是FAT32),我把楼主的1.81手工部署的压缩包按要求解压到这个分区。
然后重启,以VHD7启动,可以看到有Ventoy的启动项了,提示是:\efi\ventoy\bootx64_real.efi,选中并回车,以为有惊喜,结果是直接进入到一个grub的命令行。
唉!
不知道问题出在哪里了。
编辑了refind.conf,写入 loader /EFI/VENTOY/grubx64_real.efi ,也是一样。是因为由PVE自动规划出来的ESP分区是FAT32导致的吗?或者,第一个分区不是EFI分区,而是BIOS分区?

点评

对的,根据你描述的情况分析,是因为你测试的VHD分区结构的问题,不满足手动部署的前提条件。 虽然你的rEFInd菜单中出现了Ventoy,但是由于Ventoy是基于grub2的,grub2在调用EFI镜像文件时,会根据EFI镜像文件中  详情 回复 发表于 2022-11-9 11:13
回复

使用道具 举报

发表于 2022-11-9 07:02:42 | 显示全部楼层
谢楼主分享

点评

希望你完美部署成功  详情 回复 发表于 2022-11-9 11:14
回复

使用道具 举报

 楼主| 发表于 2022-11-9 11:13:05 | 显示全部楼层
本帖最后由 ksjifjui 于 2022-11-9 11:29 编辑
pda8888 发表于 2022-11-8 23:27
我用一个VHD文件模拟硬盘来做实验(模拟容量是1TB)。
用Virtualbox 6.1.34,装入VHD为一个硬盘,然后用PV ...

对的,根据你描述的情况分析,是因为你测试的VHD分区结构的问题,不满足手动部署的前提条件。

虽然你的rEFInd菜单中出现了Ventoy,但是由于Ventoy是基于grub2的,grub2在调用EFI镜像文件时,会根据EFI镜像文件中的特定分区来加载分区里面的grub2的配置文件,图片等资源

这样才能顺利启动到Ventoy的图形界面,找不到配置文件等资源,就会默认进入命令行界面

而你的第1分区是BIOS分区,第2分区才是FAT分区,要让硬盘手工部署成功,第1分区必须是FAT分区

你的这种情况,要想让Ventoy能顺利启动到图形界面,只能考虑将BIOS分区和FAT分区合并成一个FAT分区,然后在这个FAT分区下手动部署

点评

非常感谢您耐心指正,方向明确了,这就干活去。  发表于 2022-11-9 14:14
回复

使用道具 举报

 楼主| 发表于 2022-11-9 11:14:24 | 显示全部楼层

希望你完美部署成功
回复

使用道具 举报

发表于 2022-11-9 14:59:03 | 显示全部楼层
报告楼主,删除最前面的BIOS分区,再调整EFI分区,把前面删除的分区合并了,搞定,ventoy菜单出来了。

点评

非常Nice!  详情 回复 发表于 2022-11-9 16:33
回复

使用道具 举报

 楼主| 发表于 2022-11-9 16:33:24 | 显示全部楼层
pda8888 发表于 2022-11-9 14:59
报告楼主,删除最前面的BIOS分区,再调整EFI分区,把前面删除的分区合并了,搞定,ventoy菜单出来了。

非常Nice!
回复

使用道具 举报

发表于 2022-11-9 20:44:32 | 显示全部楼层
问题又来了,ventoy不支持lvm?所以ventoy菜单出来了,但是搜索不到放在lvm上的ISO文件
但是PVE的安装过程,是没有机会选择分区格式的......
晕!

点评

是的,Ventoy识别不了Linux LVM文件系统,存放ISO的分区必须是ext2,ext3,ext4这些常规类型的文件系统  详情 回复 发表于 2022-11-9 21:13
回复

使用道具 举报

 楼主| 发表于 2022-11-9 21:13:44 | 显示全部楼层
本帖最后由 ksjifjui 于 2022-11-9 22:46 编辑
pda8888 发表于 2022-11-9 20:44
问题又来了,ventoy不支持lvm?所以ventoy菜单出来了,但是搜索不到放在lvm上的ISO文件
但是PVE的安装过程 ...

是的,Ventoy识别不了Linux LVM文件系统,存放ISO的分区必须是ext2,ext3,ext4这些常规类型的文件系统
但是你可以通过自定义启动菜单的方式,手动配置启动项参数,手工添加lvm模块,这个相对就麻烦太多了

点评

“手工添加lvm模块”?还有这种神操作? 请指导一下如何添加,或者有官方文档的链接吗?  详情 回复 发表于 2022-11-10 09:59
回复

使用道具 举报

发表于 2022-11-10 07:29:13 | 显示全部楼层

谢谢楼主分享
回复

使用道具 举报

 楼主| 发表于 2022-11-10 08:33:10 | 显示全部楼层
回复

使用道具 举报

发表于 2022-11-10 09:59:50 | 显示全部楼层
ksjifjui 发表于 2022-11-9 21:13
是的,Ventoy识别不了Linux LVM文件系统,存放ISO的分区必须是ext2,ext3,ext4这些常规类型的文件系统
...

“手工添加lvm模块”?还有这种神操作?
请指导一下如何添加,或者有官方文档的链接吗?

点评

对的,可以手工添加LVM模块,这个就需要用到Ventoy的自定义菜单插件,本质就是回归原始grub2引导,grub2是支持Linux LVM文件系统的 第一步 需要根据官方说明文档添加一个自定义菜单的配置文件ventoy_grub.cfg[/b  详情 回复 发表于 2022-11-10 13:32
回复

使用道具 举报

 楼主| 发表于 2022-11-10 13:32:45 | 显示全部楼层
本帖最后由 ksjifjui 于 2022-11-10 13:58 编辑
pda8888 发表于 2022-11-10 09:59
“手工添加lvm模块”?还有这种神操作?
请指导一下如何添加,或者有官方文档的链接吗?

对的,可以手工添加LVM模块,这个就需要用到Ventoy的自定义菜单插件,本质就是回归原始grub2引导,grub2是支持Linux LVM文件系统的

第一步
需要根据官方说明文档添加一个自定义菜单的配置文件ventoy_grub.cfg具体如何添加ventoy_grub.cfg配置文件,可参照说明 https://www.ventoy.net/cn/plugin_grubmenu.html


第二步
需要在ventoy_grub.cfg中手工添加在LVM文件系统中的ISO文件,下面用ubuntu20.04的ISO镜像为例
  1. menuentry 'Ubuntu 20.04' {
  2.     insmod part_gpt   #加载gpt模块
  3.     insmod lvm   #加载lvm模块,这里是解决你遇到问题的关键模块
  4.     insmod ext2  
  5.     set iso_path="/ubuntu-20.04.3-desktop-amd64.iso"  #这个是iso文件在lvm文件系统中具体路径
  6.     search --no-floppy --fs-uuid --set=root 0185e365-86ff-444f-a71b-8a3044ff568a
  7.     loopback loop ($root)$iso_path

  8.     linux (loop)/casper/vmlinuz  file=/cdrom/preseed/ubuntu.seed boot=casper iso-scan/filename=${iso_path} quiet splash ---
  9.     initrd (loop)/casper/initrd
  10. }
复制代码


第三步

重启到Ventoy的图形界面, F6 快捷键加载上面添加的自定义菜单,然后选择对应的启动菜单,这样即可加载LVM中对应的ISO文件并启动


补充建议
如果你在以后的真实使用环境中,也是将所有ISO文件都放到LVM文件系统中来启动的话,那完全就没有使用Ventoy的必要了,可以考虑直接用grub2来引导iso了,这样就少了Ventoy这一层多余启动了,用grub2就会更直接一点

点评

真乃神人也! 马上去试试 。  详情 回复 发表于 2022-11-10 15:17
回复

使用道具 举报

发表于 2022-11-10 14:43:32 | 显示全部楼层
本帖最后由 2011atguutu 于 2022-11-10 15:13 编辑

首先感谢楼主!有个问题如下:

Ventoy启动之后,指定的文件夹内有多个ISO文件。

但Ventoy启动后,列表里面只显示出了一小部分。

ISO是我一直在用的,应该不会有问题。
请问这如何解决?
回复

使用道具 举报

发表于 2022-11-10 15:17:38 | 显示全部楼层
ksjifjui 发表于 2022-11-10 13:32
对的,可以手工添加LVM模块,这个就需要用到Ventoy的自定义菜单插件,本质就是回归原始grub2引导,grub2 ...

真乃神人也!
马上去试试 。
回复

使用道具 举报

发表于 2022-11-10 16:05:21 | 显示全部楼层
本帖最后由 pda8888 于 2022-11-10 16:33 编辑

还有一个没看明白:0185e365-86ff-444f-a71b-8a3044ff568a,这一串是ISO文件的UUID吗?或者是lvm分区的uuid?

点评

对应的是lvm的UUID  详情 回复 发表于 2022-11-10 17:05
回复

使用道具 举报

 楼主| 发表于 2022-11-10 17:05:18 来自手机 | 显示全部楼层
pda8888 发表于 2022-11-10 16:05
还有一个没看明白:0185e365-86ff-444f-a71b-8a3044ff568a,这一串是ISO文件的UUID吗?或者是lvm分区的uuid ...

对应的是lvm的UUID
回复

使用道具 举报

发表于 2022-11-10 17:27:35 | 显示全部楼层
本帖最后由 pda8888 于 2022-11-10 17:28 编辑

如果把ventoy_grub.cfg放在EFI分区的ventoy目录下,启动ventoy的时候会被提示:
  1. ventoy_grub.cfg 放错分区了,请放到镜像分区里的 ventoy 目录下(此目录需要手动创建)!
  2. press ENTER to continue (请按 回车 键继续) ...
复制代码

然则此时并没有加载lvm,也即是镜像分区根本没有被识别。
鸡和蛋谁先有?我陷入了一个古老的哲学悖论中了……

在楼主的手工部署包中,grub目录下有一个grub.cfg,其中有这样的代码:

  1. for vtTFile in ventoy.json ventoy_grub.cfg; do
  2.     if [ -f $vtoy_efi_part/ventoy/$vtTFile ]; then
  3.         clear
  4.         echo -e "\n You need to put $vtTFile in the 2st partition which hold the ISO files.\n"
  5.         echo -e " $vtTFile 放错分区了,请放到镜像分区里的 ventoy 目录下(此目录需要手动创建)!\n"
  6.         echo -e "\n press ENTER to continue (请按 回车 键继续) ..."
  7.         read vtInputKey
  8.     fi
  9. done
复制代码


报错的根源在这里吧。

点评

给你想了个办法,就是调整ventoy_grub.cfg文件的默认加载位置,现在默认从第1个FAT分区中的ventoy目录下查找ventoy_grub.cfg文件,你可以下载附件中的文件到本地,然后解压替换FAT分区下对应的文件即可 注意:ven  详情 回复 发表于 2022-11-10 21:12
回复

使用道具 举报

发表于 2022-11-10 17:30:45 | 显示全部楼层
看来只有另辟蹊径,在EFI里面的某个文件里面加载可以识别lvm的模块才行。
回复

使用道具 举报

发表于 2022-11-10 19:07:31 来自手机 | 显示全部楼层
你可以尝试在生成core.img或者efi文件时,把lvm模块弄进去
回复

使用道具 举报

发表于 2022-11-10 19:39:23 | 显示全部楼层
本帖最后由 pda8888 于 2022-11-10 19:41 编辑

3.2 Linux 系统使用条件
3.2.1. 原盘内可以有多个分区、但必须要有1个空闲的分区表。
Ventoy 需要插入 VTOYEFI 分区,因此需要占用1个分区表。比如对于 MBR 分区格式,如果U盘上已经有4个分区了,就不行了。
类似的,对于 GPT 分区格式,如果U盘上已经有 128 个分区了,也不行(当然一般不会有这么多)。

3.2.2. 第1个分区必须是从 1MB 位置开始
对于MBR和GPT都有这个要求。这是为了符合 Ventoy 的分区布局需要。Windows 下新建的分区默认一般都是从 1MB 开始的。

3.2.3. 第1个分区支持 NTFS 或 EXT2/3/4 格式,不支持其他格式.
如果是 NTFS 格式,则系统中需要安装 ntfs-3g 包。 如果是 EXT2/3/4 格式,则系统中需要安装 e2fsprogs 包。

3.2.4. 第1个分区内必须要有一定的剩余空间。
有剩余空间才有可能进行压缩调整。如果第1个分区已经完全用满了,则肯定就无法压缩调整了。
当然如果你原本第1个分区后面就有空闲空间的话,那也可以。总之要能找到空闲的空间来放 VTOYEFI 分区。
回复

使用道具 举报

 楼主| 发表于 2022-11-10 21:12:05 | 显示全部楼层
本帖最后由 ksjifjui 于 2022-11-10 21:35 编辑
pda8888 发表于 2022-11-10 17:27
如果把ventoy_grub.cfg放在EFI分区的ventoy目录下,启动ventoy的时候会被提示:

然则此时并没有加载lvm ...

给你想了个办法,就是调整ventoy_grub.cfg文件的默认加载位置,现在默认从你的第1个EFI分区中的ventoy目录下查找ventoy_grub.cfg文件,这样可以做到加载自定义配置文件时与lvm分区不产生关联,这个办法代码的改动最小
你可以下载附件中的文件到本地,然后解压替换EFI分区下对应的文件即可

注意:ventoy目录中的ventoy_grub.cfg文件中的内容,同时修改成对应你的lvm的uuid和iso对应的路径


最后啰嗦一句,在真实应用中,如果你还是坚持从LVM中启动iso文件,还是强烈建议你直接使用grub2,不建议使用ventoy,使用ventoy反而是在走弯路

EFI分区配置文件.7z

13.41 KB, 下载次数: 35, 下载积分: 无忧币 -2

解压后覆盖原压缩包中的grub.cfg文件

点评

谢谢您的改版 非常不错 能不能把ventoy.json改的也放在EFI分区么? 麻烦您能抽时间把efi32和ARMX32和x64EFI也支持下 谢谢~~~  详情 回复 发表于 2023-3-26 18:54
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-5-23 04:00

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表