无忧启动论坛

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

国产开源U盘启动工具——Ventoy 【2024/01/24 1.0.97 版本发布】

    [复制链接]
 楼主| 发表于 2020-4-5 22:44:24 | 显示全部楼层
kuer 发表于 2020-4-5 21:04
第一次安装制作失败~接着第二次点安装制作成功! UEFI不能启动  !BIOS启动成功!
自己制作的PE:https: ...

多谢你能提供PE镜像测试。我本地也能复现问题。 我想问一下,你这个ISO文件有试过直接在虚拟机上挂载,UEFI模式下能启动吗?
我在VirtualBox上试了一下不能启动。

点评

不管是实机还是虚拟机 UEFI BIOS都没问题!  详情 回复 发表于 2020-4-5 23:50
回复

使用道具 举报

 楼主| 发表于 2020-4-5 22:45:27 | 显示全部楼层
l3429900 发表于 2020-4-5 22:36
平时linux用的多,请问测试过什么版本的linux版本?有空测试 红帽 麒麟iso,谢谢,到官网上看到了 100+iso ...

http://www.ventoy.net/isolist.html
这个页面有详细的测试过得ISO文件列表,你可以看一下。

点评

列表最好+上md5 sha1计算结果, 要不提供软件给大家 分析ISO文件 满足什么条件就可以启动  详情 回复 发表于 2020-5-10 13:21
回复

使用道具 举报

发表于 2020-4-5 23:50:54 | 显示全部楼层
longpanda 发表于 2020-4-5 22:44
多谢你能提供PE镜像测试。我本地也能复现问题。 我想问一下,你这个ISO文件有试过直接在虚拟机上挂载,UE ...

不管是实机还是虚拟机 UEFI BIOS都没问题!
BaiduShurufa_2020-4-5_23-28-55.jpg
BaiduShurufa_2020-4-5_23-31-40.jpg
BaiduShurufa_2020-4-5_23-38-49.jpg
BaiduShurufa_2020-4-5_23-39-32.png
BaiduShurufa_2020-4-5_23-41-48.jpg

点评

您这个ISO文件我分析了一下,不是100%符合UEFI的可启动ISO文件规范,也就是Eltorito规范。如下图所示:红色圈内的值应该是 0xEF, 不是0x00. 不过我测试了 QEMU KVM, VMware, VirtualBox, HP DL380服务器, AMI系BI  详情 回复 发表于 2020-4-6 09:00
回复

使用道具 举报

发表于 2020-4-6 00:17:51 | 显示全部楼层
下来试试看
回复

使用道具 举报

发表于 2020-4-6 00:29:00 来自手机 | 显示全部楼层
厉害厉害,楼主厉害,明天就下个试试,
回复

使用道具 举报

发表于 2020-4-6 07:53:54 | 显示全部楼层
本帖最后由 2010sya 于 2020-4-6 07:55 编辑

还不错,支持Legacy + UEFI

但过不了Secure Boot,加油!!!

点评

谢谢鼓励! Secure Boot还没开始搞,后续版本会支持的。  详情 回复 发表于 2020-4-6 08:14
回复

使用道具 举报

发表于 2020-4-6 07:57:08 | 显示全部楼层
江南一根葱 发表于 2020-4-5 20:09
好像是我插在usb3.0口就会失败,usb2.0口制作成功
实机启动pe也成功,

有些优盘制作成功不能引导,和usb口关系不大
回复

使用道具 举报

 楼主| 发表于 2020-4-6 08:14:21 | 显示全部楼层
2010sya 发表于 2020-4-6 07:53
还不错,支持Legacy + UEFI

但过不了Secure Boot,加油!!!

谢谢鼓励! Secure Boot还没开始搞,后续版本会支持的。
回复

使用道具 举报

 楼主| 发表于 2020-4-6 09:00:06 | 显示全部楼层
本帖最后由 longpanda 于 2020-4-8 10:49 编辑
kuer 发表于 2020-4-5 23:50
不管是实机还是虚拟机 UEFI BIOS都没问题!

您这个ISO文件我分析了一下,不是100%符合UEFI的可启动ISO文件规范,也就是Eltorito规范。如下图所示:红色圈内的值应该是 0xEF, 不是0x00.  
不过我测试了 QEMU KVM, VMware, VirtualBox, 2台实体服务器,ThinkPad笔记本 这6种环境, 只有VirtualBox是有问题的,其他都能正常启动。
应该是对这种特殊情况有做兼容。我之前确实没考虑到这种情况。
我修改了这个ISO文件的1个字节的数据, 即把 偏移  0x13041 这个字节的数据从 0 改成 EF,然后在我的笔记本上测试了一下可以了。
您有空也可以试一下。修改之后更符合规范,所以能启动的环境肯定还是可以启动的。

非常感谢你的镜像。

eltorito.png

pe.png

点评

你好 麻烦你把修改过的那个文件贴上来 可以吗!  详情 回复 发表于 2020-4-6 15:33
回复

使用道具 举报

发表于 2020-4-6 09:48:40 | 显示全部楼层
问下,微软原版光盘只是启动到“安装界面”,还是能够安装的?我貌似虚拟机试了只能到“安装界面”

点评

是能够安装完成的。我在我自己的笔记本上测试过 Win 7 8 8.1 10的 64位版本。  详情 回复 发表于 2020-4-6 10:00
回复

使用道具 举报

 楼主| 发表于 2020-4-6 10:00:09 | 显示全部楼层
江南一根葱 发表于 2020-4-6 09:48
问下,微软原版光盘只是启动到“安装界面”,还是能够安装的?我貌似虚拟机试了只能到“安装界面”

是能够安装完成的。我在我自己的笔记本上测试过 Win 7 8 8.1 10的 64位版本。
回复

使用道具 举报

发表于 2020-4-6 10:33:32 | 显示全部楼层
win版本的兼容性有一些问题,用固态硬盘版U盘无法识别U盘,看不到盘符

点评

windows的安装程序默认按照removable和usb做了过滤。您可以试试命令行以 Ventoy2Disk.exe -R -U 启动看看。 另外,固态硬盘版USB确实没有测试过。方便的话可以把log.txt附上我分析一下。  详情 回复 发表于 2020-4-6 11:47
回复

使用道具 举报

 楼主| 发表于 2020-4-6 11:47:18 | 显示全部楼层
l3429900 发表于 2020-4-6 10:33
win版本的兼容性有一些问题,用固态硬盘版U盘无法识别U盘,看不到盘符

windows的安装程序默认按照removable和usb做了过滤。您可以试试命令行以 Ventoy2Disk.exe -R -U 启动看看。
另外,固态硬盘版USB确实没有测试过。方便的话可以把log.txt附上我分析一下。

点评

用命令行安装成功了,asm 115 固态  详情 回复 发表于 2020-4-6 15:05
回复

使用道具 举报

发表于 2020-4-6 15:05:18 | 显示全部楼层
longpanda 发表于 2020-4-6 11:47
windows的安装程序默认按照removable和usb做了过滤。您可以试试命令行以 Ventoy2Disk.exe -R -U 启动看看 ...

用命令行安装成功了,asm 115 固态

log.txt

22.46 KB, 下载次数: 11, 下载积分: 无忧币 -2

点评

多谢你的反馈。 这个SSD用Windows API返回的确实是非 Removable类型的,Bus类型是USB。 PhyDrv:5 BusType:USB Removable:0 Size:128GB(126701535232) Name:ASMT 2115 Windows的安装程序开始是为了防止误操作,  详情 回复 发表于 2020-4-6 15:12
回复

使用道具 举报

发表于 2020-4-6 15:11:00 | 显示全部楼层
兼容性测试中 ,win 10 1903 测试ok,红帽7.7 7.6ok,6.6 6.9 bios是ok的,efi都卡死在 等待硬件初始化 这一句英文,凝思系统只能bios(不支持efi),安装时卡在无法读取光盘,无法进行,以上都是实机启动,非虚拟机,现在都是初始测试,以后详细测试再来

点评

凝思系统 我在我的笔记本上测试了一下,Legacy BIOS + UEFI 都是可以的,参考PDF中的截图。不只是否是机器原因(Linx-6.0.80-20191126-amd64-DVD.iso)  详情 回复 发表于 2020-4-6 21:51
非常感谢你的测试! redhat 6.X efi我会再测试一下。 另外, 凝思系统 这个哪里可以下载到镜像吗?  详情 回复 发表于 2020-4-6 15:15
回复

使用道具 举报

 楼主| 发表于 2020-4-6 15:12:43 | 显示全部楼层
l3429900 发表于 2020-4-6 15:05
用命令行安装成功了,asm 115 固态

多谢你的反馈。
这个SSD用Windows API返回的确实是非 Removable类型的,Bus类型是USB。
PhyDrv:5 BusType:USB  Removable:0 Size:128GB(126701535232) Name:ASMT 2115

Windows的安装程序开始是为了防止误操作,所以对列出来的磁盘做了一下过滤。
我在下一个版本会考虑下,是否把Removable这个过滤去掉。只过滤USB类型,或者干脆都不过滤了。

点评

可以这样做,设置一个高级选项,可以有过滤选项 还有这个U盘识别是硬盘不是普通的U盘  详情 回复 发表于 2020-4-6 15:46
USM_v6_SE( USM_v6特别版)和 优启通是可以鉴别的,你可以借鉴一下  详情 回复 发表于 2020-4-6 15:38
回复

使用道具 举报

发表于 2020-4-6 15:13:14 | 显示全部楼层
能不能解密下这个是啥原理,我按工具格盘后的分区法,把efi的文件提取出来貌似阔以用
,exfat现在还不流行主要是因为维护中有很多xp的机器,貌似打得补丁才支持访问exfat
不过也可以想办法能多分区共存,专门弄个分区用来放iso作安装

点评

当时选择exFat也是考虑了多方面的因素,其中一个重要的点是 Linux Kernel 5.4 之后exFAT正式支持了。Ventoy其实花的力气最多的是对各种Linux发行版本的测试。 原理其实也不是很复杂,就是涉及的点比较多一些,我  详情 回复 发表于 2020-4-6 15:21
回复

使用道具 举报

 楼主| 发表于 2020-4-6 15:15:26 | 显示全部楼层
l3429900 发表于 2020-4-6 15:11
兼容性测试中 ,win 10 1903 测试ok,红帽7.7 7.6ok,6.6 6.9 bios是ok的,efi都卡死在 等待硬件初始化 这 ...

非常感谢你的测试!
redhat 6.X efi我会再测试一下。 另外, 凝思系统 这个哪里可以下载到镜像吗?

点评

就是凝思官网  详情 回复 发表于 2020-4-6 15:33
回复

使用道具 举报

 楼主| 发表于 2020-4-6 15:21:10 | 显示全部楼层
江南一根葱 发表于 2020-4-6 15:13
能不能解密下这个是啥原理,我按工具格盘后的分区法,把efi的文件提取出来貌似阔以用
,exfat现 ...

当时选择exFat也是考虑了多方面的因素,其中一个重要的点是 Linux Kernel 5.4 之后exFAT正式支持了。Ventoy其实花的力气最多的是对各种Linux发行版本的测试。

原理其实也不是很复杂,就是涉及的点比较多一些,我后面会在项目网站上放一些详细的文档描述。你这边如果有哪个具体的点想了解的,你可以私信我。
回复

使用道具 举报

发表于 2020-4-6 15:33:38 | 显示全部楼层
longpanda 发表于 2020-4-6 09:00
您这个ISO文件我分析了一下,不是100%符合UEFI的可启动ISO文件规范,也就是Eltorito规范。如下图所示:红 ...

你好  麻烦你把修改过的那个文件贴上来 可以吗!

点评

您好,修改过的文件我放百度网盘了。您有空可以在您机器上测试下。 链接:https://pan.baidu.com/s/14QnL80IA2DhqghaBvEIf9A 提取码:epfc  详情 回复 发表于 2020-4-6 15:45
回复

使用道具 举报

发表于 2020-4-6 15:33:47 | 显示全部楼层
本帖最后由 l3429900 于 2020-4-6 15:39 编辑
longpanda 发表于 2020-4-6 15:15
非常感谢你的测试!
redhat 6.X efi我会再测试一下。 另外, 凝思系统 这个哪里可以下载到镜像吗?

就是凝思官网  http://www.linx-info.com/#/support/software
回复

使用道具 举报

发表于 2020-4-6 15:38:06 | 显示全部楼层
longpanda 发表于 2020-4-6 15:12
多谢你的反馈。
这个SSD用Windows API返回的确实是非 Removable类型的,Bus类型是USB。
PhyDrv:5 BusTy ...

USM_v6_SE( USM_v6特别版)和 优启通是可以鉴别的,你可以借鉴一下

点评

好的,多谢!凝思系统我会下载下来测试一下,Linux发行版确实很多。 过滤这块之前有参考Rufus的,你这个SSD在用Rufus时能列出来吗?  详情 回复 发表于 2020-4-6 15:43
回复

使用道具 举报

 楼主| 发表于 2020-4-6 15:43:42 | 显示全部楼层
l3429900 发表于 2020-4-6 15:38
USM_v6_SE( USM_v6特别版)和 优启通是可以鉴别的,你可以借鉴一下

好的,多谢!凝思系统我会下载下来测试一下,Linux发行版确实很多。
过滤这块之前有参考Rufus的,你这个SSD在用Rufus时能列出来吗?

点评

试过了,3,6版本也识别不出来  详情 回复 发表于 2020-4-6 15:49
回复

使用道具 举报

 楼主| 发表于 2020-4-6 15:45:48 | 显示全部楼层
kuer 发表于 2020-4-6 15:33
你好  麻烦你把修改过的那个文件贴上来 可以吗!

您好,修改过的文件我放百度网盘了。您有空可以在您机器上测试下。

链接:https://pan.baidu.com/s/14QnL80IA2DhqghaBvEIf9A
提取码:epfc

点评

我是说你修改ISO里面的那个文件,不是整个ISO文件!整个文件太大 百度盘下载没速度,用亿寻下到76%就断了!  详情 回复 发表于 2020-4-6 16:11
回复

使用道具 举报

发表于 2020-4-6 15:46:05 | 显示全部楼层
longpanda 发表于 2020-4-6 15:12
多谢你的反馈。
这个SSD用Windows API返回的确实是非 Removable类型的,Bus类型是USB。
PhyDrv:5 BusTy ...

可以这样做,界面设置一个高级选项,可以有过滤选项
还有这个U盘识别是硬盘不是普通的U盘

点评

嗯,这样应该可以,多谢建议!  详情 回复 发表于 2020-4-6 15:48
回复

使用道具 举报

 楼主| 发表于 2020-4-6 15:48:56 | 显示全部楼层
l3429900 发表于 2020-4-6 15:46
可以这样做,界面设置一个高级选项,可以有过滤选项
还有这个U盘识别是硬盘不是普通的U盘

嗯,这样应该可以,多谢建议!
回复

使用道具 举报

发表于 2020-4-6 15:49:49 | 显示全部楼层
longpanda 发表于 2020-4-6 15:43
好的,多谢!凝思系统我会下载下来测试一下,Linux发行版确实很多。
过滤这块之前有参考Rufus的,你这个 ...

试过了,3,6版本也识别不出来
回复

使用道具 举报

发表于 2020-4-6 16:11:19 | 显示全部楼层
longpanda 发表于 2020-4-6 15:45
您好,修改过的文件我放百度网盘了。您有空可以在您机器上测试下。

链接:https://pan.baidu.com/s/14 ...

我是说你修改ISO里面的那个文件,不是整个ISO文件!整个文件太大  百度盘下载没速度,用亿寻下到76%就断了!

点评

只修改了1个字节的数据,这个数据不是ISO里面的某个文件的,是属于ISO文件结构中的一个。 你可以使用 010 Editor 编辑一下这个ISO文件, 把偏移 0x13041 (77889) 这个字节的数据从 0 改成 EF 即可。 可以参考我上  详情 回复 发表于 2020-4-6 16:55
回复

使用道具 举报

发表于 2020-4-6 16:21:13 | 显示全部楼层
凝思系统Linx-6.0.80-20191126-amd64-DVD.iso在我的固态U盘里用的是好好的,普通U盘就是直接重启
回复

使用道具 举报

发表于 2020-4-6 16:40:59 | 显示全部楼层
研究了一下源码,原理上大概明白了,不过有很多地方没有搞懂,以下说说我的理解和疑问:
1) 启动 Linux,是通过修改 initrd,先执行 Ventoy 的 init 脚本进行 ISO 挂载。由于目前很多 Linux 还不支持 exfat,所以需要通过 Device mapper 之类的机制无视文件系统格式挂载 iso。
2) 启动 Windows 安装镜像,代码应该参考了 wimboot,把 imdisk 之类的驱动 "插入" boot.wim 中。
3) UEFI 下的虚拟光驱,是个单独的 efi 应用,用 edk2 编译。

疑问:
1) 我好像没有找到 LegacyBIOS 下实现虚拟光驱的相关代码,不知道是怎么实现的。
2) 启动 Windows 安装镜像,为什么没有 bootmgfw.efi 加载 boot.wim 读条的过程,这是怎么实现的?
深度截图_选择区域_20200406154206.png
3) 请问 int ventoy_fill_data(grub_uint32_t buflen, char *buffer) 这个函数是做什么的,看不懂。。。
深度截图_选择区域_20200406163943.png
4) 在项目仓库里面看到了 iPXE 还有 AOE 方面的代码,不知道是用来做什么的。

点评

你理解的基本上都是对的。 Ventoy的最基本的原理就是 INT13中继(legacy) 和Block IO protocol 中继(UEFI) 其实就是虚拟了一个CDROM 在Legacy模式下memdisk以及grub4dos的map等,都属于这种int13 hook技术,但  详情 回复 发表于 2020-4-6 17:07
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-3-29 18:36

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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