无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
楼主: longpanda
打印 上一主题 下一主题

国产开源U盘启动工具——Ventoy 【2024/06/08 1.0.99 版本发布】

    [复制链接]
241#
 楼主| 发表于 2020-4-10 11:21:32 | 只看该作者
liuzhaoyzz 发表于 2020-4-10 11:14
理解。我只是随口说说,请楼主不要介意。作为一个一般用户,我们只能就现有的方案、思路做讨论,支持和点 ...

多谢支持和鼓励!!
回复

使用道具 举报

242#
 楼主| 发表于 2020-4-10 11:44:43 | 只看该作者
星星一般般8 发表于 2020-4-9 19:28
我从网站 i tell you 下载的cn_windows_7_ultimate_with_sp1_x64_dvd_u_677408.iso和cn_windows_7_professi ...

另外还有一个问题, 你方便的话,可以用比如rufus工具刻录同一个镜像,然后同一个环境测试下是否能正常安装。排除一下硬件问题,比如会不会是Windows 7 缺少对应USB驱动之类的。
回复

使用道具 举报

243#
发表于 2020-4-10 11:45:45 | 只看该作者
i tell you下的官方win镜像,我也出现了卡winpeshl的现象

点评

也是Win7的镜像吗? 你是实体机还是虚拟机测试的?Legacy还是UEFI? 另外,卡winpeshl之后在那个cmd窗口能输入命令吗?  详情 回复 发表于 2020-4-10 12:28
回复

使用道具 举报

244#
发表于 2020-4-10 12:03:09 | 只看该作者
longpanda 发表于 2020-4-10 11:20
Linux里面有很多Everything的ISO镜像都非常大,基本上都是8GB+起步。而且不同主板、不同U盘的读取速度也 ...
4GB的文件我基本上也没测出过1s的速度(之前我也是类似的修改法,就是真读改成假读)。

一个10年前的旧U盘,算上敲命令的时间,也才两秒钟。ISO 7G

读取时间超过1秒就说明代码没改好,实际上有的地方是真读的。
grub4dos 久经考验,它采取的方法一般都是可靠的。

点评

也有这个可能。 或者和我之前在虚拟机上测试有关。或者也有可能是你这个ISO就是连续的,本身并没有分段,不需要读取很多块FS的元数据。反正原理大家都清楚,采用哪种方案都行的。Ventoy对于连续的不需要遍历,总是比  详情 回复 发表于 2020-4-10 12:12
回复

使用道具 举报

245#
 楼主| 发表于 2020-4-10 12:12:16 | 只看该作者
本帖最后由 longpanda 于 2020-4-10 12:18 编辑
wintoflash 发表于 2020-4-10 12:03
一个10年前的旧U盘,算上敲命令的时间,也才两秒钟。ISO 7G

读取时间超过1秒就说明代码没改好,实际 ...

也有这个可能。 或者和我之前在虚拟机上测试有关。或者也有可能是你这个ISO就是连续的,本身并没有分段,不需要读取很多块FS的元数据。我之前花过很长时间故意构造过一种场景, 一个文件放下来之后,在disk里面超过1000个不连续的段。获取blocklist时间是差不多的。反正原理大家都清楚,采用哪种方案都行的。Ventoy对于连续的不需要遍历,总是比遍历会快。另外,按簇跳跃也总比按sector遍历快,只是可能快的没那么明显。 至于可靠性其实两者差不多的,blocklist是从file层下到FS层,再到disk层,Ventoy这边只是直接从fs层往下来。另外,还有一点,Ventoy本身的hook机制,决定了我本来就是需要知道这个ISO文件内的元数据对应的位置,因为我要hook掉它。所以这套记录的机制是必须有的,而blocklist只是刚好复用了这套机制。
回复

使用道具 举报

246#
发表于 2020-4-10 12:16:40 | 只看该作者
longpanda 发表于 2020-4-10 09:01
感谢测试!
这两个镜像我会下载来测试一下。 另外,你的环境是虚拟机还是实体机? UEFI还是Legacy?
...

我昨天测试的环境是组装机锐龙平台和笔记本英特尔平台,磁盘都是mbr格式传统引导,然后闪迪2.0我刚刚测试了一下,先按照你说的,拔插或重启前,先安全弹出优盘,我进行了连个操作:1,删除pe,删除后,重启电脑,启动菜单该pe选项消失,多出来两个其他字母的pe选项,其中,启动第一个字母选项后跳出来两行error开头的代码,提示任意键继续,之后回到菜单,启动第二个字母选项后加载已删除的pe系统,可是我在重启前就将此pe从优盘删除了;2,剪切pe,剪切到其他磁盘后,重启电脑,该pe菜单选项消失,一切正常!后面我抽空再按你说的用rufus写一下win7iso到优盘,不过之前我用软碟通写入到朗科3.0优盘是可以正常启动该镜像的,启动后是win7安装界面
回复

使用道具 举报

247#
 楼主| 发表于 2020-4-10 12:28:59 | 只看该作者
hunanlonghao 发表于 2020-4-10 11:45
i tell you下的官方win镜像,我也出现了卡winpeshl的现象

也是Win7的镜像吗?  你是实体机还是虚拟机测试的?Legacy还是UEFI? 另外,卡winpeshl之后在那个cmd窗口能输入命令吗?
回复

使用道具 举报

248#
发表于 2020-4-10 12:35:39 | 只看该作者
呵呵
回复

使用道具 举报

249#
发表于 2020-4-10 13:08:58 | 只看该作者
longpanda 发表于 2020-4-10 12:28
也是Win7的镜像吗?  你是实体机还是虚拟机测试的?Legacy还是UEFI? 另外,卡winpeshl之后在那个cmd窗口 ...

试了win7 sp1x64,win7sp1 x64,
bios和uefi都试了一样,
在公司的联想台式上面试了G1840的平台,
用wepe直装的u盘可以进
回复

使用道具 举报

250#
发表于 2020-4-10 17:54:53 | 只看该作者
赞一个
回复

使用道具 举报

251#
发表于 2020-4-10 18:46:07 | 只看该作者
本帖最后由 Xongkoro 于 2020-4-10 18:49 编辑

实际制作U盘
BIOS UEFI都成功,ISO 直接扔U盘里,PE都成功启动。以后多准备些PEISO与系统ISO,扔里就完事了,太方便了。
多PE与多系统共存。

没测试MSDN的原版ISO安装系统。

确实非常好,启动列表ISO菜单还可以自行配置,
希望日益完善。
回复

使用道具 举报

252#
发表于 2020-4-10 21:14:40 | 只看该作者
这几天研究多系统镜 u盘启动 老是失败。,无意看到这帖子让我想到不就是我需要的吗?下载安装真的好方便直接把ios丢进去就行了 ,现在要是能把ios这分区隐藏起来就好了。其他空间存放常用软件。感谢大神无私奉献。真的很给力 而且简单  比yumi要好用简单

点评

多谢支持! 你可以把所有的ISO文件放到一个目录下,比如ISO目录,当然里面还可以再分子目录,比如Windows、Linux等。 这样U盘日常使用,存放别的文件时,看着不至于散乱。  详情 回复 发表于 2020-4-10 22:33
回复

使用道具 举报

253#
 楼主| 发表于 2020-4-10 22:33:05 | 只看该作者
jhsfgh 发表于 2020-4-10 21:14
这几天研究多系统镜 u盘启动 老是失败。,无意看到这帖子让我想到不就是我需要的吗?下载安装真的好方便直 ...

多谢支持!
你可以把所有的ISO文件放到一个目录下,比如ISO目录,当然里面还可以再分子目录,比如Windows、Linux等。 这样U盘日常使用,存放别的文件时,看着不至于散乱。
回复

使用道具 举报

254#
发表于 2020-4-11 00:36:42 | 只看该作者
一不留神又更新啦
回复

使用道具 举报

255#
发表于 2020-4-11 10:08:08 | 只看该作者
本帖最后由 liuzhaoyzz 于 2020-4-11 10:53 编辑

1.04版本分区(我更喜欢用分区这个词,用install安装这个词似乎有歧义,什么叫做安装,全新安装还是update?),老电脑,在WIN10PE下分区失败,忘了截图,我把log传上来。本来用的是1.04版本,log文件里面怎么还显示Ventoy2Disk 1.0.0.2?
log.txt (80.4 KB, 下载次数: 4)
切换到WIN7X64正常系统下分区,成功,但是启动的时候按F12键,启动项看不到优盘。

用diskgenius分区提示写扇区错误。



再次用diskgenius分区成功。
用diskgenius分区,无论是单分区还是双分区,无论是FAT32还是NTFS,启动项都可以看到USB-HDD:Generic flash disk。

然后再次用ventoy分区,启动时按F12键就可以看到启动项USB-HDD:Generic flash disk。(下图中第一个启动项)
ventoy引导,老电脑bios启动我的PE失败,左上角光标一直闪(我没有添加ventoy.dat,感觉麻烦,另外主要是为了测试1.04的hook是否针对这种情况是否有改善);新电脑BIOS启动没问题(没有添加ventoy.dat也能成功)。


感觉老电脑识别不了的原因是因为ventoy的分区格式比较特殊,diskgenius操作写入都有问题,BIOS不能识别,虽然也是两个分区,但是用diskgenius分成两个区,证明主板能够识别双分区的优盘,BIOS是可以看到启动项的,显示USB-HDD:Generic flash disk.并且用grub4dos作为主引导启动pe.iso没问题。

另外,楼主一直倡导Ventoy Compatible的概念,为什么不把ventoy.dat直接放到ventoy-1.0.04-windows.zip包中一起发布呢?





点评

另外,Ventoy 1.0.04版本增加了一个功能(不是很完善,仅用于测试) 就是直接把ISO load到内存启动,类似于grub4dos的map -mem 你有兴趣可以试试。 在启动菜单界面 ,先按 F1,右上角会显示一个红色的 "MEMDISK"  详情 回复 发表于 2020-4-11 12:30
这里其实是两个概念哈。 首先Ventoy的核心是启动文件以及相关的虚拟CDROM的处理,以及hook处理等。所以 1.XX都是 Ventoy核心的版本号。 Ventoy2Disk.exe 只是一个Windows系统中的安装器,是把U盘分区以及把这些文  详情 回复 发表于 2020-4-11 11:54
回复

使用道具 举报

256#
 楼主| 发表于 2020-4-11 11:54:59 | 只看该作者
本帖最后由 longpanda 于 2020-4-11 11:57 编辑
liuzhaoyzz 发表于 2020-4-11 10:08
1.04版本分区(我更喜欢用分区这个词,用install安装这个词似乎有歧义,什么叫做安装,全新安装还是update ...

这里其实是两个概念哈。
首先Ventoy的核心是启动文件以及相关的虚拟CDROM的处理,以及hook处理等。所以 1.XX都是 Ventoy核心的版本号。
Ventoy2Disk.exe 只是一个Windows系统中的安装器,是把U盘分区以及把这些文件写入U盘的工具,所以它的版本号和Ventoy版本号不一样。这个安装器可能没问题了就不会再更新了。
对应的,Linux版本的包,解开就没有这个exe文件,是一个Ventoy2Disk.sh脚本,这个也是一个安装器,功能和Ventoy2Disk.exe是一样的。
只是Linux系统下,我只需要通dd命令,像写文件一样,把数据以及分区表写入U盘设备中就可以了,非常简单。
而Windows下需要使用底层的Win32 API来编程,操作底层的物理磁盘,这一块其实我不是很熟悉,而且不同的Windows版本以及WinPE环境下,可能表现也不一样。所以Ventoy2Disk.exe出了不少问题。这些都是这个安装程序的问题, 和Ventoy的核心功能实际上是没关系的。

所谓install,安装就是把Ventoy的核心安装到U盘中去(当然也包括分区的过程);Update就是不用重新分区了,只是把Ventoy的核心更新一下即可,所以不影响分区以及第一个分区内的数据。

1.0.04版本的修改并没有涉及你那个PE的hook的地方,所以这个地方并没有改善。

对于老电脑识别的问题,你可以关注下,DG分的两个区,和Ventoy分的两个区,他们的每个分区的可启动标志是否有不一样的地方。

最后 Ventoy Compatible的概念是——ISO镜像里面的系统能兼容Ventoy。所以我把它放到包里是没用的。 以原版Windows镜像为例来说,Ventoy之所以做hook就是因为怕Setup.exe起来之后找不到安装源,无法安装。所以我要在它之前把ISO挂载起来。但是如果原版Windows镜像支持Ventoy的话,它用普通的方法找不到源,就可以尝试看看当前是不是Ventoy把它启动起来的,然后找到对应的信息,就可以主动去把那个ISO文件挂载起来作为安装源了。当然至于怎么知道当前是不是Ventoy把它启动起来的,以及怎么知道哪个ISO是对应的ISO,这些Ventoy都提供了工具,很简单就能实现。只要ISO里的系统愿意把这个工具以及相应的处理流程加进去,就可以了。 如果ISO里的系统是这个样子的话,Ventoy就不用费力去做hook了,我只需要做好虚拟CDROM把你启动起来就OK了。所以我把这样的ISO称之为 Ventoy Compatible的ISO。(当然现在还没有哪个ISO是这样的)。 很自然的就又有了另外一个问题,就是就算这个ISO里面的系统集成了我的工具,做了这些处理。Ventoy怎么知道呢?Ventoy怎么判断你这个ISO里面的系统是Ventoy Compatible的呢(这样Ventoy就不用做hook了)。 所以Ventoy提供了几种方式,让这个ISO来告诉Ventoy,“我是Ventoy Compatible的”, 其中在根目录下放一个 ventoy.dat文件就是其中一个方法。 所以核心在于ISO内的系统要支持。我在Ventoy的安装包里放一个ventoy.dat文件或者我在ISO里面插入一个这个文件那是没有用的。








点评

感谢耐心详细的解释。 原来1.0.04版本指的是ventoy主版本号,log文件里面1.0.02指的是写入工具等版本号,我以为二者是一致的,误会了。 DG分的两个区,和Ventoy分的两个区,他们的每个分区的可启动标志,都是1  详情 回复 发表于 2020-4-11 12:02
回复

使用道具 举报

257#
发表于 2020-4-11 11:56:40 来自手机 | 只看该作者
楼主哪个隐藏分区能用wintoflash的grub2替换不?
回复

使用道具 举报

258#
发表于 2020-4-11 12:02:43 | 只看该作者
本帖最后由 liuzhaoyzz 于 2020-4-11 12:13 编辑
longpanda 发表于 2020-4-11 11:54
这里其实是两个概念哈。
首先Ventoy的核心是启动文件以及相关的虚拟CDROM的处理,以及hook处理等。所以  ...

感谢耐心详细的解释。
在Ventoy2Disk这个小程序界面上,install和update不会有任何歧义,我说的是在论坛上面表达的时候,我更喜欢用“分区”这个词来强调重新用ventoy进行了分区,当然install=分区+写入BIOS/UEFI引导文件,update=更新写入BIOS/UEFI引导文件,这个没有歧义。
ventoy你是否用的是静态编译?用静态编译等话适用性应该更好吧,不用考虑运行库,不过文件稍大。

原来1.0.04版本指的是ventoy主版本号,log文件里面1.0.02指的是写入工具等版本号,我以为二者是一致的,误会了。

DG分的两个区,和Ventoy分的两个区,他们的每个分区的可启动标志,都是16进制,哪里看的懂啊,对这些底层数据真心不懂。

我知道把ventoy.dat放入PE.ISO才生效,我的意思是说,放到ventoy-1.0.04-windows.zip,就不用再去你的官网下载了。




点评

引导文件这些是没有动态编译的概念的,可以认为都是静态的。 你可以把DG分区之后,U盘的MBR的512个字节数据导出来发我看一下。 因为ventoy只是检测文件存不存在,并不关心文件内容,所以你可以放一个空文件,只要  详情 回复 发表于 2020-4-11 12:20
回复

使用道具 举报

259#
发表于 2020-4-11 12:03:36 | 只看该作者
谢谢分享
回复

使用道具 举报

260#
发表于 2020-4-11 12:06:11 | 只看该作者
谢谢分享
回复

使用道具 举报

261#
发表于 2020-4-11 12:15:54 | 只看该作者
jhsfgh 发表于 2020-4-10 21:14
这几天研究多系统镜 u盘启动 老是失败。,无意看到这帖子让我想到不就是我需要的吗?下载安装真的好方便直 ...

大神 我刚刚更新1.0.0.4版本 怎么ufei启动 win10 64位 启动不了  Legacy 启动卡右上角闪  win7 64位又可以。 什么情况?是我哪里操作不对

点评

你是启动的原版Windows镜像还是PE镜像? 如果是PE镜像,你可以试试先按 F1,然后再选择ISO启动  发表于 2020-4-11 13:21
回复

使用道具 举报

262#
 楼主| 发表于 2020-4-11 12:20:26 | 只看该作者
liuzhaoyzz 发表于 2020-4-11 12:02
感谢耐心详细的解释。
在Ventoy2Disk这个小程序界面上,install和update不会有任何歧义,我说的是在论坛 ...

引导文件这些是没有动态编译的概念的,可以认为都是静态的。
你可以把DG分区之后,U盘的MBR的512个字节数据导出来发我看一下。
因为ventoy只是检测文件存不存在,并不关心文件内容,所以你可以放一个空文件,只要名字是ventoy.dat即可。官网上的这个文件只是推荐使用的,里面有点ventoy的宣传,不是强制的。 当然也可以放到安装包里。

点评

我说的静态编译指的是ventoy2disk.exe是否是静态编译的,因为这个爱出错,我不清楚是不是因为运行库导致的错误。 dg分区512字节数据怎么导出来?用bootice导出0扇区发上来?  详情 回复 发表于 2020-4-11 12:42
回复

使用道具 举报

263#
发表于 2020-4-11 12:23:54 | 只看该作者
谢谢分享,不知道怎么样。
回复

使用道具 举报

264#
 楼主| 发表于 2020-4-11 12:30:05 | 只看该作者
本帖最后由 longpanda 于 2020-4-11 12:31 编辑
liuzhaoyzz 发表于 2020-4-11 10:08
1.04版本分区(我更喜欢用分区这个词,用install安装这个词似乎有歧义,什么叫做安装,全新安装还是update ...

另外,Ventoy 1.0.04版本增加了一个功能(不是很完善,仅用于测试,所以并未公开) 就是直接把ISO load到内存启动,类似于grub4dos的map -mem 你有兴趣可以试试。

在启动菜单界面 ,先按 F1,右上角会显示一个红色的 "MEMDISK" 字样,然后再选择ISO文件启动。

底层Legacy是借助memdisk,UEFI是自己做的模拟。
回复

使用道具 举报

265#
发表于 2020-4-11 12:42:26 来自手机 | 只看该作者
本帖最后由 liuzhaoyzz 于 2020-4-11 12:55 编辑
longpanda 发表于 2020-4-11 12:20
引导文件这些是没有动态编译的概念的,可以认为都是静态的。
你可以把DG分区之后,U盘的MBR的512个字节 ...

我说的静态编译指的是ventoy2disk.exe是否是静态编译的,因为这个爱出错,我不清楚是不是因为运行库导致的错误。

dg分区512字节数据怎么导出来?用bootice导出0扇区发上来?
刚才试了F1-memdisk老电脑BIOS启动pe.iso成功了。


点评

这种模式和grub4dos的map -mem 理论上是一样的,兼容性肯定是更好的。 还有就是,这种模式Ventoy是固定不做hook的,在你这个老电脑上这个才是关键。  发表于 2020-4-11 12:58
Ventoy2Disk.exe是纯Win32 API的程序,动态编译,只依赖于KERNEL32.DLL USER32.DLL等几个基本的DLL。你说的静态编译是指什么?不依赖于任何DLL吗? DG我也不是很熟悉。就是把U盘0扇区的数据导出来。  详情 回复 发表于 2020-4-11 12:55
回复

使用道具 举报

266#
 楼主| 发表于 2020-4-11 12:55:13 | 只看该作者
liuzhaoyzz 发表于 2020-4-11 12:42
我说的静态编译指的是ventoy2disk.exe是否是静态编译的,因为这个爱出错,我不清楚是不是因为运行库导致 ...

Ventoy2Disk.exe是纯Win32 API的程序,动态编译,只依赖于KERNEL32.DLL USER32.DLL等几个基本的DLL。你说的静态编译是指什么?不依赖于任何DLL吗? DG我也不是很熟悉。就是把U盘0扇区的数据导出来。

点评

这样子说来,ventoy2disk.exe就是静态编译的了,不是运行库的问题。静态编译不就是把dll里面的函数编译进入exe里面,抛弃依赖的dll啊。 我把diskgenius两个分区和ventoy分区之后的MBR导出来你看看。diskgenius导  详情 回复 发表于 2020-4-11 13:18
回复

使用道具 举报

267#
发表于 2020-4-11 13:18:11 | 只看该作者
longpanda 发表于 2020-4-11 12:55
Ventoy2Disk.exe是纯Win32 API的程序,动态编译,只依赖于KERNEL32.DLL USER32.DLL等几个基本的DLL。你说 ...

这样子说来,ventoy2disk.exe就是静态编译的了,不是运行库的问题。静态编译不就是把dll里面的函数编译进入exe里面,抛弃依赖的dll啊。

我把diskgenius两个分区和ventoy分区之后的MBR导出来你看看。diskgenius导出MBR,你那边应该也是一样可以导出啊。

ventoy-mbr.7z

968 Bytes, 下载次数: 3, 下载积分: 无忧币 -2

点评

我看了下确实是 DG分的两个分区第一个是80 (active)第二个是00 Ventoy的刚好反过来。你可以试试用附件中的这个临时版本的Ventoy2Disk.exe ,我也把它掉了过来。 看看这样,不经过DG操作,直接Ventoy分区,老电脑  详情 回复 发表于 2020-4-11 15:39
回复

使用道具 举报

268#
发表于 2020-4-11 13:59:03 | 只看该作者
jhsfgh 发表于 2020-4-11 12:15
大神 我刚刚更新1.0.0.4版本 怎么ufei启动 win10 64位 启动不了  Legacy 启动卡右上角闪  win7 64位又可 ...

原版win10 64 镜像 pe系统完美支持

点评

镜像是哪个ISO文件? 名称或者链接能发一下吗?我试一下。  详情 回复 发表于 2020-4-11 15:11
回复

使用道具 举报

269#
 楼主| 发表于 2020-4-11 15:11:49 | 只看该作者
jhsfgh 发表于 2020-4-11 13:59
原版win10 64 镜像 pe系统完美支持

镜像是哪个ISO文件? 名称或者链接能发一下吗?我试一下。
回复

使用道具 举报

270#
 楼主| 发表于 2020-4-11 15:39:07 | 只看该作者
liuzhaoyzz 发表于 2020-4-11 13:18
这样子说来,ventoy2disk.exe就是静态编译的了,不是运行库的问题。静态编译不就是把dll里面的函数编译进 ...

我看了下确实是 DG分的两个分区第一个是80 (active)第二个是00  Ventoy的刚好反过来。你有空的时候可以试试用附件中的这个临时版本的Ventoy2Disk.exe ,我也把它掉了过来。
看看这样,不经过DG操作,直接Ventoy分区,老电脑能否识别到启动项。  还有就是这样改是否影响Legacy下的基本功能。
Ventoy2Disk.exe (284 KB, 下载次数: 17)

点评

用这个版本分区之后,第一个分区exfat是激活的,老电脑BIOS启动时,按F1-memdisk启动我的10PE没问题。 但是这个优盘插到新电脑上面,BIOS启动项可以看到Generic flash disk的启动项,选择之后,再选择我的PE,直  详情 回复 发表于 2020-4-11 16:28
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-11-25 09:01

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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