无忧启动论坛

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

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

    [复制链接]
1#
发表于 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
回复

使用道具 举报

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

点评

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

使用道具 举报

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

点评

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

使用道具 举报

4#
发表于 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
回复

使用道具 举报

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

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

使用道具 举报

6#
发表于 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
回复

使用道具 举报

7#
发表于 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
回复

使用道具 举报

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

使用道具 举报

9#
发表于 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 分区。
回复

使用道具 举报

10#
发表于 2022-11-11 10:08:14 | 显示全部楼层
本帖最后由 pda8888 于 2022-11-11 10:45 编辑

谢谢指导,牛人!
我比较了一下原来的grub.cfg,您是修改了两处:
1、原文件改 $vtoy_iso_part为$vtoy_efi_part
  1. 原文件:
  2.     set vt_plugin_path=$vtoy_iso_part
复制代码

改为
  1.     set vt_plugin_path=$vtoy_efi_part
复制代码

2、去掉对ventoy_grub.cfg文件位置的检查
  1. 原文件
  2. for vtTFile in ventoy.json ventoy_grub.cfg; do
复制代码

改为
  1. for vtTFile in ventoy.json; do
复制代码

真是厉害!
不过这个还是治不了根,要逐个对要启动的文件进行配置,很麻烦。
我昨天折腾了一天,总结了方法,今天早上只花了几十分钟就搞定了,做法是:
1、在虚拟机中正常安装PVE7.2到VHD上。
2、删除掉虚拟机的lvm部署,变成只有一个卷,即lvdiskplay命令只看到一个分区。并用blkid命令查看各个分区的UUID、记录。
3、把/etc/fstab文件备份
3、关掉虚拟机,用Diskgenius载入VHD,把它的ESP和root分区分别保存为分区备份文件。
4、把VHD所有分区删除,重新按ESP、EXT4、Swap的顺序重新分区。
5、把第3步保存的ESP和root分区分别还原到ESP和EXT4分区上。
6、用Diskgenius打开VHD,修改ESP分区的/boot/efi/BOOT/BOOTx64.EFI和/boot/efi/promox/grubx64.efi,用二进制编辑器把里面的(/lvmid/xxxxx-xxxxx-xxxxx……)/boot/grub,改成:(hd0,gpt2)/boot/grub
7、改/etc/fstab,分别用uuid表达efi、root和swap分区的挂载(uuid在第2步记录了)
8、用一个linux的救援ISO文件启动,然后:
  1. mount /dev/sda2 /mnt
  2. mount --bind /dev /mnt/dev
  3. mount --bind /proc /mnt/proc
  4. chroot /mnt
  5. mount /dev/sda1 /boot/efi
复制代码

这是建立好重建grub2的环境,然后
  1. grub-install /dev/sda --force
  2. update-grub
复制代码

重建grub2
9、重新启动虚拟机,已经成功的把lvm下的pve转换成ext4单分区的pve了。
10、在虚拟机根目录下建立ventoy目录(这是ventoy要求的,可以在这个目录下建立ventoy.json文件,放置vhd和img启动插件)
10、在虚拟机pve下,安装refind。
11、把楼主的手工部署包按要求解压到efi分区(在Diskgenius下操作)
12、完全正使用pve、refind和ventoy,而且ventoy的使用非常方便,不需要单独建立分区,跟u盘上的使用完全一样,当然,最好是在ventoy.josn文件里面规定搜索的目录只限于/ventoy,不然搜索整个根目录下又不限制深度,你就泡壶茶慢慢等吧……

点评

确实不容易,经过你这么一顿操作下来,不仅能让Ventoy正常加载EXT4分区下的ISO文件,最关键的是,你终于让自己摆脱了LVM的控制了 最终让Ventoy与pve都发挥了各自的作用,  详情 回复 发表于 2022-11-11 12:23
回复

使用道具 举报

11#
发表于 2022-11-11 12:47:22 | 显示全部楼层
您一路的指正非常有助于扩张我的脑洞。
我这样做,是因为一台掌上小电脑,要承担非常多的功能,用PVE打底,在PVE上面安装debian、windows 11、openwrt,其中debian上承载BT下载、http网站、samba服务器、nas、云笔记等功能,windows 11则是日常使用的,openwrt是作科学旁路由。
关键是,这样一台小掌上电脑,平时只有不到20W的功耗,7×24小时开机无压力,嘿嘿。
已经这样玩了N多年了,这次换更大的固态,想一步到位,既能启动pve,也能启动ventoy,才有了这些折腾。

点评

同道中人,属于爱折腾一族  详情 回复 发表于 2022-11-11 12:52
回复

使用道具 举报

12#
发表于 2022-11-11 19:15:30 | 显示全部楼层
ksjifjui 发表于 2022-11-11 12:52
同道中人,属于爱折腾一族
我本来以为你会选择放弃ventoy的,采用grub2加lvm的组合方 ...

结果折腾了个寂寞:在ext4上的VHD,不能正常启动windows。
回复

使用道具 举报

13#
发表于 2022-11-12 17:43:03 | 显示全部楼层
本帖最后由 pda8888 于 2022-11-12 17:48 编辑
bet365 发表于 2022-11-12 13:53
手动编辑,用文本一直显示语法和配置错误,进不了菜单。后来我弄个虚拟磁盘,调后好复制过去
现在可以进 ...

我提供我自己的ventoy.json,供参考,注意它位于\ventoy ,限制了搜索路径仅 \ventoy,不是整个根目录全搜索,你看到的scanning...一直卡在这里,那是必然的,特别是装了windows的C盘,几万个甚至几十上百万个文件在C盘,那是完全正常的。你泡壶老茶坐那慢慢等,老茶喝完也不一定等到它搜索完成。

  1. {
  2.     "control":[
  3.         { "VTOY_DEFAULT_MENU_MODE": "1" },
  4.         { "VTOY_MAX_SEARCH_LEVEL": "2" },
  5.         { "VTOY_WIN11_BYPASS_CHECK": "1" },
  6.         { "VTOY_DEFAULT_SEARCH_ROOT": "/ventoy" }
  7.     ],
  8.     "menu_tip":{
  9.         "tips":[
  10.             {
  11.                 "dir": "/ventoy/iso",
  12.                 "tip": "ISO启动"
  13.             },
  14.             {
  15.                 "dir": "/ventoy/vhd",
  16.                 "tip": "VHD启动"
  17.             }
  18.         ]
  19.     },
  20.     "menu_class":[
  21.         {
  22.             "key": "VHD",
  23.             "class": "VHD"
  24.         },
  25.         {
  26.             "key": "ISO",
  27.             "class": "ISO"
  28.         }
  29.     ]
  30. }
复制代码

点评

谢谢朋友,已经解决了。  详情 回复 发表于 2022-11-13 03:48
回复

使用道具 举报

14#
发表于 2022-11-16 17:59:11 | 显示全部楼层
ksjifjui 发表于 2022-11-14 22:14
谢谢你们的反馈,下载最新的压缩包,覆盖后再试试

我来试试你新出炉的。
回复

使用道具 举报

15#
发表于 2022-11-16 18:34:03 | 显示全部楼层
本帖最后由 pda8888 于 2022-11-16 18:42 编辑

还是不行。
回复

使用道具 举报

16#
发表于 2022-11-16 18:44:10 | 显示全部楼层
2011chs 发表于 2022-11-12 21:59
我测试了下,只有一个问题,麻烦楼主看看,感谢哈,就是Windows的 VHD系统不能启动,报错,但是 我用Li ...

你存放windows VHD的盘,是ntfs吗?我的是ext4的。结果跟你一样。

点评

Windows的VHD不支持ext分区启动,这个官网上有说明 https://www.ventoy.net/cn/plugin_vhdboot.html  详情 回复 发表于 2022-11-16 19:24
回复

使用道具 举报

17#
发表于 2022-11-16 20:08:14 | 显示全部楼层
ksjifjui 发表于 2022-11-16 19:24
Windows的VHD不支持ext分区启动,这个官网上有说明 https://www.ventoy.net/cn/plugin_vhdboot.html

嗯,期待升级!!!
回复

使用道具 举报

18#
发表于 2022-11-22 12:56:40 | 显示全部楼层
楼主这个可以称为手工部署高级版。
原版可以叫通用版或基础版。
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-5-4 18:13

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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