无忧启动论坛

 找回密码
 注册
搜索
最纯净的「微PE装机优盘」UEPON大师作品系统gho:最纯净好用系统下载站数据恢复、数据保护、视频编辑
Win To Go 极致利器(IXUNCIS固态U盘)无忧启动网成立20周年!广告联系 QQ:184822951 微信:wuyouceo
楼主: longpanda

[分享] 国产开源U盘启动工具——Ventoy 【2021/03/06 1.0.37版本发布】

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

使用道具 举报

 楼主| 发表于 2020-4-6 16:55:09 | 显示全部楼层
kuer 发表于 2020-4-6 16:11
我是说你修改ISO里面的那个文件,不是整个ISO文件!整个文件太大  百度盘下载没速度,用亿寻下到76%就断 ...

只修改了1个字节的数据,这个数据不是ISO里面的某个文件的,是属于ISO文件结构中的一个。
你可以使用 010 Editor 编辑一下这个ISO文件, 把偏移 0x13041 (77889) 这个字节的数据从 0 改成 EF 即可。
可以参考我上次回复的第二张图。

点评

按照你的那个位置修改成EF 自动增加了一个boot.catalog文件! 这个iso是能启动了!但是我换一下boot.wim 重新打包又不能启动!不论是一样的boot.wim还是另外一个boot.wim,都不能启动了!不懂什么原因? 如果要用Ven  详情 回复 发表于 2020-4-6 18:16
回复

使用道具 举报

 楼主| 发表于 2020-4-6 17:07:29 | 显示全部楼层
本帖最后由 longpanda 于 2020-4-6 17:38 编辑
wintoflash 发表于 2020-4-6 16:40
研究了一下源码,原理上大概明白了,不过有很多地方没有搞懂,以下说说我的理解和疑问:
1) 启动 Linux, ...

你理解的基本上都是对的。

Ventoy的最基本的原理就是 INT13中继(legacy) 和Block IO protocol 中继(UEFI) 其实就是虚拟了一个CDROM

在Legacy模式下memdisk以及grub4dos的map等,都属于这种int13 hook技术,但是都有限制,memdisk需要把文件load到内存,
但是对于大镜像是行不通的, grub4dos的map需要文件在磁盘连续存放,也是有限制的。
ventoy在这个地方做了一点优化。里面首先通过grub2的FS模块解析出ISO文件在磁盘中的所有块的位置,然后在hook INT13的时候做了中转处理。
Legacy模式下的INT13 hook是在IPXE模块做的,是以IPXE的sanboot为基础,增加了 int13 中转的实现。

UEFI模式差不多,只是不用int13而是Block IO Protocol,原理是一样的。

Linux镜像插入init进程确实如你所说,因为很多Linux当前版本不支持exFAT挂载,所以要插入一些处理。但是这个插入也是做了一些创新。
并不需要把initrd都读入内存,而是直接从ISO 9660文件格式的层面插入,所以能保留原始ISO文件的启动菜单。

Windows也是一样,插入的实现也是从UDF文件格式层面进行的,不像wimboot那样需要把wim文件读到内存中。对于ISO的挂载,Windows 8+的版本是通过Win32 VirutalDisk API实现的,Window7是借助imdisk挂载。

所以,Ventoy启动时你可以感觉到一下子就出来原始ISO文件的启动菜单了。就是因为不需要把几十M的initrd或者上百M的 boot.wim文件先读到内存的原因。

另外,插入init以及Windows挂载ISO的过程实际上都不是Ventoy想做的,只是不得已。所以我提出了一个 “Ventoy Compatible”的概念,就是想让ISO里面兼容Ventoy,而不是我来hook, Ventoy提供了工具,在系统中可以获取到当前是不是从Ventoy虚拟的这个CDROM中启动的,以及是从哪个磁盘上的哪个ISO文件启动的,这样就可以继续进行下去,而不会因为找不到安装介质而停止了。如果ISO内部能这样,对于Ventoy就简单了,只需要专心做好这个虚拟CDROM就好了。Ventoy 60%以上的精力都花在了hook上面了,尤其是千奇百怪的Linux发行版。

你说的读条的过程,我本地测试是有的,不知道你这边为什么没有。

Aoe的代码纯粹是为了支持TinyLinux这个发行版,它里面啥都没有,device mapper, FUSE, NBD都没有,只有一个AOE驱动,所以加了这个部分。

那部分看不懂的代码,我能说是我放的一个彩蛋吗:),哈哈,是不是比较无聊

点评

其实吸引我的不单单是楼主的拷贝ISO即可启动这个简单的部署方法,还有楼主的编程能力,让我感觉到so cool!因为这需要懂得很多的启动方案才能编程,无忧论坛很多都是一般用户,真正地能为启动项目做贡献写程序,而  详情 回复 发表于 2020-4-7 10:57
我对usb启动方案不太感兴趣,能避开usb启动我都是避开,本着好奇的心态尝试了下楼主的方案。 1、在一台老电脑上面,Ventoy2Disk安装第一次失败,第二次安装引导成功。但是按F12启动的时候根本看不到优盘,也就无  详情 回复 发表于 2020-4-7 10:08
感谢回复。 grub4dos 的 map 现在也支持不连续的文件了。 Legacy 下的 int13 hook 似乎兼容性不太好,在我的实体机上启动 win 会白屏,启动 linux 只有 manjaro 成功,其他的都卡死在 isolinux 上。而 grub4dos  详情 回复 发表于 2020-4-6 19:06

评分

参与人数 2无忧币 +10 收起 理由
2012sinkr + 5 很给力!
nuc + 5 很给力!

查看全部评分

回复

使用道具 举报

发表于 2020-4-6 17:44:34 | 显示全部楼层
不知道能不能应用到网启上,正愁安装个原版还得解包,用grub2的loopback后来加载iso中的boot.wim貌似还不行
我不懂编程,不过听上去有点像启动被插入了XX程序的 “本地无(光)盘系统”,这样的话网络应该也可以实现吧

点评

IPXE的sanboot和kernel wimboot对原版都没用,想通过网启装系统,只能用GHOST网刻或者共享出去再映射网络盘咯  详情 回复 发表于 2020-8-10 23:34
网启用iPXE + Wimboot 绝配啊。 网启本来就是要把boot.wim通过网络先加载到内存的,然后再利用wimboot插入个批处理啥的,在执行安装前使用httpdisk把ISO通过网络挂载过来就欧了。  详情 回复 发表于 2020-4-6 17:49
回复

使用道具 举报

 楼主| 发表于 2020-4-6 17:49:00 | 显示全部楼层
江南一根葱 发表于 2020-4-6 17:44
不知道能不能应用到网启上,正愁安装个原版还得解包,用grub2的loopback后来加载iso中的boot.wim ...

网启用iPXE + Wimboot 绝配啊。
网启本来就是要把boot.wim通过网络先加载到内存的,然后再利用wimboot插入个批处理啥的,在执行安装前使用httpdisk把ISO通过网络挂载过来就欧了。

点评

目前是这么干的,不过要解出boot.wim  详情 回复 发表于 2020-4-6 18:24
回复

使用道具 举报

发表于 2020-4-6 18:14:48 | 显示全部楼层
看了这么多,虽然还是不懂,但坚决支持楼主原创作品!
回复

使用道具 举报

发表于 2020-4-6 18:16:40 | 显示全部楼层
longpanda 发表于 2020-4-6 16:55
只修改了1个字节的数据,这个数据不是ISO里面的某个文件的,是属于ISO文件结构中的一个。
你可以使用 01 ...

按照你的那个位置修改成EF 自动增加了一个boot.catalog文件! 这个iso是能启动了!但是我换一下boot.wim 重新打包又不能启动!不论是一样的boot.wim还是另外一个boot.wim,都不能启动了!不懂什么原因? 如果要用Ventoy,难不成每个ISO都得修改一下?

点评

照理,打包成ISO的时候,这个是自动应该是正确的0xEF的值的,当然不需要每次都修改。 您这边是用哪个工具打包的ISO文件,是否有些选项需要设置?  详情 回复 发表于 2020-4-6 18:22
回复

使用道具 举报

 楼主| 发表于 2020-4-6 18:22:06 | 显示全部楼层
kuer 发表于 2020-4-6 18:16
按照你的那个位置修改成EF 自动增加了一个boot.catalog文件! 这个iso是能启动了!但是我换一下boot.wim  ...

照理,打包成ISO的时候,这个是自动应该是正确的0xEF的值的,当然不需要每次都修改。 您这边是用哪个工具打包的ISO文件,是否有些选项需要设置?

点评

用UltraISO打开、替换boot.wim 再另存!就不能启动了!打包是用UEFIBIOS双启ISO制作脚本(mkisofs)! http://bbs.wuyou.net/forum.php?mod=viewthread&tid=419771&extra=  详情 回复 发表于 2020-4-6 18:46
回复

使用道具 举报

发表于 2020-4-6 18:24:54 来自手机 | 显示全部楼层
longpanda 发表于 2020-4-6 17:49
网启用iPXE + Wimboot 绝配啊。
网启本来就是要把boot.wim通过网络先加载到内存的,然后再利用wimboot插 ...

目前是这么干的,不过要解出boot.wim
回复

使用道具 举报

发表于 2020-4-6 18:45:22 | 显示全部楼层
牛人,支持!
回复

使用道具 举报

发表于 2020-4-6 18:46:23 | 显示全部楼层
longpanda 发表于 2020-4-6 18:22
照理,打包成ISO的时候,这个是自动应该是正确的0xEF的值的,当然不需要每次都修改。 您这边是用哪个工具 ...

用UltraISO打开、替换boot.wim 再另存!就不能启动了!打包是用UEFIBIOS双启ISO制作脚本(mkisofs)!
http://bbs.wuyou.net/forum.php?m ... d=419771&extra=

点评

为什么不修改后直接打包? ULTRAISO的话要用新版本吧  详情 回复 发表于 2020-4-7 16:18
这个帖子里的 mkisofs 脚本我看了一下。做出来的ISO的只就是00,这个实际上是不符合Eltorito规范的。脚本里的 -b efi.img 应该用 -e efi.img, 但是 这个mkisofs的版本不支持 -e 这个参数,在Linux上用-e做出来的是  详情 回复 发表于 2020-4-6 20:38
UltraISO打包过就不支持uefi启动了的,  详情 回复 发表于 2020-4-6 19:22
回复

使用道具 举报

发表于 2020-4-6 19:06:58 | 显示全部楼层
longpanda 发表于 2020-4-6 17:07
你理解的基本上都是对的。

Ventoy的最基本的原理就是 INT13中继(legacy) 和Block IO protocol 中继(UE ...

感谢回复。
但是对于大镜像是行不通的, grub4dos的map需要文件在磁盘连续存放,也是有限制的。
ventoy在这个地方做了一点优化。里面首先通过grub2的FS模块解析出ISO文件在磁盘中的所有块的位置,然后在hook INT13的时候做了中转处理。
Legacy模式下的INT13 hook是在IPXE模块做的,是以IPXE的sanboot为基础,增加了 int13 中转的实现。

grub4dos 的 map 现在也支持不连续的文件了。
Legacy 下的 int13 hook 似乎兼容性不太好,在我的实体机上启动 win 会白屏,启动 linux 只有 manjaro 成功,其他的都卡死在 isolinux 上。而 grub4dos 的 map 久经考验,兼容性非常好。
UEFI模式差不多,只是不用int13而是Block IO Protocol,原理是一样的。

我去年也开发了grub2 uefi 下的 map 模块,这个我是了解的。
Windows也是一样,插入的实现也是从UDF文件格式层面进行的,不像wimboot那样需要把wim文件读到内存中。对于ISO的挂载,Windows 8+的版本是通过Win32 VirutalDisk API实现的,Window7是借助imdisk挂载。

我去年的时候把 wimboot 模块移植到了 grub2 上,也顺便实现了不读到内存。
另外,插入init以及Windows挂载ISO的过程实际上都不是Ventoy想做的,只是不得已。所以我提出了一个 “Ventoy Compatible”的概念,就是想让ISO里面兼容Ventoy,而不是我来hook, Ventoy提供了工具,在系统中可以获取到当前是不是从Ventoy虚拟的这个CDROM中启动的,以及是从哪个磁盘上的哪个ISO文件启动的,这样就可以继续进行下去,而不会因为找不到安装介质而停止了。如果ISO内部能这样,对于Ventoy就简单了,只需要专心做好这个虚拟CDROM就好了。Ventoy 60%以上的精力都花在了hook上面了,尤其是千奇百怪的Linux发行版。

这个 Linux 下有个 loopback 的标准,只要 ISO 包含 /boot/grub/loopback.cfg 就可以通过这个 cfg 来启动 ISO。Ubuntu 系列、Manjaro 都支持此标准。
你说的读条的过程,我本地测试是有的,不知道你这边为什么没有。

我这里无论虚拟机还是实体机都没有读条的过程,很神奇。

我也是类似软件的开发者 (https://github.com/a1ive/grub2-filemanagerhttps://github.com/a1ive/grub),前段时间和 Easy2Boot的开发者合作,现在 Easy2Boot 也支持 UEFI 了,用的就是我的方案。

点评

原来支持Easy2Boot在 UEFI 下能够启动的grub2-filemanage是大神开发的啊,太优秀了,现在很依赖Easy2Boot了,现在专门一个闪迪CZ880留给Easy2Boot用了。  详情 回复 发表于 2020-4-17 14:52
Legacy BIOS的INT13在兼容性上和grub4dos相比肯定有所欠缺,验证的也少。我个人主要着眼于UEFI吧,毕竟Legacy可能后面越来越少了。 grub4dos也支持不连续这个我确实不知道。Easy2Boot我之前也用过,我之所以开发Ven  详情 回复 发表于 2020-4-6 19:29
回复

使用道具 举报

发表于 2020-4-6 19:22:37 来自手机 | 显示全部楼层
kuer 发表于 2020-4-6 18:46
用UltraISO打开、替换boot.wim 再另存!就不能启动了!打包是用UEFIBIOS双启ISO制作脚本(mkisofs)!
htt ...

UltraISO打包过就不支持uefi启动了的,
回复

使用道具 举报

 楼主| 发表于 2020-4-6 19:29:01 | 显示全部楼层
本帖最后由 longpanda 于 2020-4-7 16:48 编辑
wintoflash 发表于 2020-4-6 19:06
感谢回复。

grub4dos 的 map 现在也支持不连续的文件了。

Legacy BIOS的INT13在兼容性上和grub4dos相比肯定有所欠缺,验证的也少。我个人主要着眼于UEFI吧,毕竟Legacy可能后面越来越少了。
grub4dos也支持不连续这个我确实不知道。Easy2Boot我之前也用过,我之所以开发Ventoy也是因为当时用Easy2Boot时遇到的一些问题。主要是 UEFI支持不好,另外,文件需要连续,还有就是他通过回写USB分区表的方式我不太认同。

你说的这个loopback标准应该不是通用的吧,应该有些发行版不支持。我的目标是希望Ventoy能支持DistroWatch上面所有两三百种Linux系统。另外,Ventoy希望能基于grub2做到Legacy和UEFI在各个方面,包括界面、操作等都一致,用户使用也尽可能方便,最好只要求他们把ISO拷贝到U盘就欧了。

另外,也希望 “Ventoy Compatible”的概念能被OS发行版接受,这样就可以自然支持他们了。

您是前辈,后面有机会多多交流。

点评

别这样。。。我是因为 uefi 下grub2 没有 map 和 wimboot 功能,自学的 c 语言,是个半吊子开发者。。。 我也不认同这个。 确实不是通用的。你的这个目标难度有点高啊。 就算是不同开发者做的 WinP  详情 回复 发表于 2020-4-6 20:04
回复

使用道具 举报

发表于 2020-4-6 20:04:38 | 显示全部楼层
longpanda 发表于 2020-4-6 19:29
Legacy BIOS的INT13在兼容性上和grub4dos相比肯定有所欠缺,验证的也少。我个人主要着眼于UEFI吧,毕竟Le ...
您是前辈,后面有机会多多交流。

别这样。。。我是因为 uefi 下grub2 没有 map 和 wimboot 功能,自学的 c 语言,是个半吊子开发者。。。
文件需要连续,还有就是他通过回写USB分区表的方式我不太认同。

我也不认同这个。
你说的这个loopback标准应该不是通用的吧,应该有些发行版不支持。我的目标是希望Ventoy能支持DistroWatch上面所有两三百种Linux系统。另外,Ventoy希望能基于grub2做到Legacy和UEFI在各个方面,包括界面、操作等都一致,用户使用也尽可能方便,最好只要求他们把ISO拷贝到U盘就欧了。

确实不是通用的。你的这个目标难度有点高啊。
就算是不同开发者做的 WinPE,要想支持所有的 WinPE,让这些 PE 能挂载光盘加载外置应用 都很有难度。
前段时间我看到 github 上有个开源的 windows loader,不知道有没有兴趣研究一下:https://github.com/maharmstone/quibble

点评

所以说适配各个发行版是很累的,所以说我才寄希望于Ventoy Compatible 的概念能被接受。 不过从原理上是能行得通的。Linux发行版虽多但是bootloader就几种,isolinux grub lilo等,另外也是有几个大系列  详情 回复 发表于 2020-4-6 20:19
回复

使用道具 举报

 楼主| 发表于 2020-4-6 20:19:19 | 显示全部楼层
本帖最后由 longpanda 于 2020-4-6 21:01 编辑
wintoflash 发表于 2020-4-6 20:04
别这样。。。我是因为 uefi 下grub2 没有 map 和 wimboot 功能,自学的 c 语言,是个半吊子开 ...

所以说适配各个发行版是很累的,所以说我才寄希望于Ventoy Compatible 的概念能被接受。

不过从原理上是能行得通的。Linux发行版虽多但是bootloader就几种,isolinux grub lilo等,另外也是有几个大系列的,rhel\suse\debian等,目前Ventoy都支持这些系列,而且Ventoy virtual CDROM的原理是底层虚拟重组了ISO文件,有比较大的灵活性。比如对于WinPE,所有的WinPE都遵循一般PE的启动流程,都会有一些公共的文件,比如大部分都会有Winpeshl.exe或WinLogo.exe或WinLoad.exe,Ventoy底层实际上在上层不感知的情况下把Wim文件中的这个exe给换掉了,换成了我的一个exe, 先执行我,再执行原始文件,在这中间就可以有所为。
Linux的initrd也类似,所有的Linux内核都首先执行 init程序,而intird里面的这个程序也是被我底层换掉了,先跑我再exec 原来的。

当然这都是逼不得已 , Ventoy Compatible 被接受才是最优的。

不管怎么样,总的来说,目标还是要有的哈

这个开源项目我了解下,不过Ventoy的理念还是想能让ISO文件原版启动。

点评

这原理想起以前网吧有盘肆虐的机器狗+鬼影病毒啊 以前在网吧群我说了下用虚拟机用添加本机物理盘的方式“穿透”冰点还原的原理被人取笑,结果没几天就有人做出来了  详情 回复 发表于 2020-4-6 20:58
回复

使用道具 举报

发表于 2020-4-6 20:19:41 | 显示全部楼层
感谢分享
回复

使用道具 举报

 楼主| 发表于 2020-4-6 20:38:21 | 显示全部楼层
本帖最后由 longpanda 于 2020-4-7 09:44 编辑
kuer 发表于 2020-4-6 18:46
用UltraISO打开、替换boot.wim 再另存!就不能启动了!打包是用UEFIBIOS双启ISO制作脚本(mkisofs)!
htt ...

这个帖子里的 mkisofs 脚本我看了一下。做出来的ISO文件就是00,这个实际上是不符合Eltorito规范的。脚本里的 -b efi.img 应该用 -e efi.img, 但是
这个mkisofs的版本不支持 -e 这个参数,在Linux上用-e做出来的是对的。我已经和楼主反馈了,希望能找一个新版本的mkisofs程序。

最简单的,你在任何一个原版的Windows ISO镜像,或者一些Ventoy能支持的PE ISO镜像(比如天意PE)中,都能搜索到 91EF010000000000 这一段二进制数据,
但是这个脚本做出来的没有这个数据。虽然能启动,但能符合标准应该会更好吧。

20200407 更新: 楼主已经更新脚本,现在打包出来的ISO是OK的,你可以再试试。

点评

昨天晚上 我也跟着更新了! 没问题了!希望大佬的Ventoy越来越好!  详情 回复 发表于 2020-4-7 14:31
我用hxd搜索了下91EF010000000000,似乎有。  详情 回复 发表于 2020-4-7 10:51
回复

使用道具 举报

发表于 2020-4-6 20:44:27 | 显示全部楼层
还没有用,先支持一下楼主!
回复

使用道具 举报

发表于 2020-4-6 20:58:07 | 显示全部楼层
longpanda 发表于 2020-4-6 20:19
所以说适配各个发行版是很累的,所以说我才寄希望于Ventoy Compatible 的概念能被接受。

不 ...

这原理想起以前网吧有盘肆虐的机器狗+鬼影病毒啊
以前在网吧群我说了下用虚拟机用添加本机物理盘的方式“穿透”冰点还原的原理被人取笑,结果没几天就有人做出来了

点评

您是有历史的人,哈哈  详情 回复 发表于 2020-4-6 21:06
回复

使用道具 举报

 楼主| 发表于 2020-4-6 21:06:23 | 显示全部楼层
江南一根葱 发表于 2020-4-6 20:58
这原理想起以前网吧有盘肆虐的机器狗+鬼影病毒啊
以前在网吧群我说了下用虚拟机用添加本机物理 ...

您是有历史的人,哈哈
回复

使用道具 举报

 楼主| 发表于 2020-4-6 21:51:30 | 显示全部楼层
本帖最后由 longpanda 于 2020-4-7 09:46 编辑
l3429900 发表于 2020-4-6 15:11
兼容性测试中 ,win 10 1903 测试ok,红帽7.7 7.6ok,6.6 6.9 bios是ok的,efi都卡死在 等待硬件初始化 这 ...

凝思系统 我在我的笔记本上测试了一下,Legacy BIOS + UEFI  都是可以的,参考PDF中的截图。不知是否是机器原因(Linx-6.0.80-20191126-amd64-DVD.iso)

Linx.pdf

786.59 KB, 下载次数: 15, 下载积分: 无忧币 -2

截图

回复

使用道具 举报

发表于 2020-4-7 10:08:43 | 显示全部楼层
本帖最后由 liuzhaoyzz 于 2020-4-7 10:39 编辑
longpanda 发表于 2020-4-6 17:07
你理解的基本上都是对的。

Ventoy的最基本的原理就是 INT13中继(legacy) 和Block IO protocol 中继(UE ...

我对usb启动方案不太感兴趣,能避开usb启动我都是避开,本着好奇的心态尝试了下楼主的方案。
1、在一台老电脑上面,Ventoy2Disk分区第一次失败,第二次分区成功。但是按F12启动的时候根本看不到优盘,也就无法启动。
而且这个优盘在WIN7X64里面看不到,必须重新拔插一次才可以看到。
如果直接用diskgenius格式化为MBR-fat32单分区,用grub4dos、grub2作为主引导都没问题,BIOS/UEFI都可以启动pe.iso。也没有必须要拔插一次才能看到的问题。

2、在一台新电脑上面,Ventoy2Disk分区第一次失败,第二次分区成功。我把log文件传上来。直接上图。
QQ截图20200407091555.jpg
QQ截图20200407091633.jpg
(1)BIOS模式启动WePE_64_V2.0.iso成功,UEFI模式启动WePE_64_V2.0.iso失败,提示BCD错误,截图如下:
QQ图片20200407095841.jpg
但是用diskgenius格式化为MBR-fat32单分区,用grub4dos/grub2启动这个WePE_64_V2.0.iso是没有问题的。
(2)我自己用wimbuilder2制作的PE,423MB-支持Teamviewer远程控制的WIN10PEX64_17763网络版by双心 - PE作品发布区 - 无忧启动论坛 - Powered by Discuz! http://wuyou.net/forum.php?mod=viewthread&tid=416308
BIOS模式启动启动SXWIN10PEX64_17763_NET20200312.iso,如果选择system登录可以进去,如果选择administrator登录无法进入,提示指定的域不存在。UEFI模式结果一样,截图如下:
QQ图片20200407095847.jpg
但是用diskgenius格式化为MBR-fat32单分区,用grub4dos/grub2启动这个SXWIN10PEX64_17763_NET20200312.iso是没有问题的,BIOS/UEFI都没问题。

3、UEFI模式无法过安全启动。这不是个大问题,微软以外的大部分启动器都存在问题。

楼主的方案给大家提供了一个很好的愿景,按照Ventoy的初衷,格式化分区之后,拷贝个ISO进去就可以启动,符合KISS原则(Keep it simple & stupid),而且源代码是完全开源的,难能可贵!
看了介绍,Ventoy在下一盘很大的棋啊!难度不小啊!

Ventoy刚出来,还有较长的路要走,感觉:
(1)Ventoy制作的优盘特殊分区结构,在windows系统里面识别有一定的兼容性问题,有时候必须重新拔插一次。甚至无法被BIOS识别到,导致无法启动。
(2)Ventoy分区格式化制作第一次往往会失败,再次分区格式化才可以,感觉程序有优化的空间。
(3)对于PE.ISO,特别是admin身份登录的PE可能还有兼容性问题待解决,用grub4dos/grub2启动PE.ISO没有这些问题。
        

log.txt

35.93 KB, 下载次数: 1, 下载积分: 无忧币 -2

点评

老电脑的问题,我猜测可能是因为可启动分区是第二个分区导致的。 Ventoy把USB化成2个分区,第一个是exFAT分区用来放ISO文件,第二个分区是FAT格式的分区,这个是UEFI规范要求的。 之所以把EFI分区放在第二个是因为  详情 回复 发表于 2020-4-7 10:44
非常感谢你的测试。 新老电脑有差异,有可能是兼容性方面的问题,确实Ventoy很新,测试的不充分,尤其是老电脑上有兼容性问题是我意料之中的,这种也只能遇到问题一个个解决积累了,没有别的捷径。 第一次安装失  详情 回复 发表于 2020-4-7 10:22
非常感谢你的测试。 新老电脑有差异,有可能是兼容性方面的问题,确实Ventoy很新,测试的不充分,尤其是老电脑上有兼容性问题是我意料之中的,这种也只能遇到问题一个个解决积累了,没有别的捷径。 第一次安装失  详情 回复 发表于 2020-4-7 10:22
回复

使用道具 举报

发表于 2020-4-7 10:17:06 | 显示全部楼层
小白一个,这意思是说用这个软件制作U盘后,只需将iso放到U盘里就行了,然后运行直接安装?

点评

理论上是这样的  详情 回复 发表于 2020-4-7 12:55
回复

使用道具 举报

 楼主| 发表于 2020-4-7 10:22:24 | 显示全部楼层
本帖最后由 longpanda 于 2020-4-7 10:53 编辑
liuzhaoyzz 发表于 2020-4-7 10:08
我对usb启动方案不太感兴趣,能避开usb启动我都是避开,本着好奇的心态尝试了下楼主的方案。
1、在一台 ...

非常感谢你的测试。
新老电脑有差异,有可能是兼容性方面的问题,确实Ventoy很新,测试的不充分,尤其是老电脑上有兼容性问题是我意料之中的,这种也只能遇到问题一个个解决积累了,没有别的捷径。
老电脑的问题,我猜测可能是因为可启动分区是第二个分区导致的。
Ventoy把USB化成2个分区,第一个是exFAT分区用来放ISO文件,第二个分区是F是UEFI规范要求的FAT格式的分区。
之所以把EFI分区放在第二个是因为有一些Windows版本,比如Windows7只能显示第一个分区,放第一个,第二个放ISO文件的分区就显示不出来了。

grub4dos, grub2这种直接分成一个MBR FAT分区的方式肯定更简单,兼容性肯定也更好,
但是 FAT格式无法放下超过4G的大镜像,这是个无解的硬伤。否则Ventoy就不用这么麻烦了,直接一个分区最简单省事。

第一次安装失败,第二次成功的问题貌似比较普遍。 能否提供 一下log.txt文件我分析一下。

WePE_64_V2.0.iso 这个能共享给我测试下吗? 另外,这个问题现象很像之前一个答主给的PE ISO的现象。
那个是使用了坛子里一个大神提供的mkisofs的脚本制作的,但是有一点不符合规范,修改过之后就好了。
不知道是不是同样的原因。可以看看79楼的回复。

SXWIN10PEX64_17763_NET20200312.iso 这个我也会测试下。感觉能启动之后应该就和Ventoy关系不大了。

Secure Boot确实是还没有时间搞,后面版本有规划。
Ventoy制作的U盘,分区其实并不特殊 可以参考这里的示图:
http://www.ventoy.net/doc_disk_layout.html
拔插一次的问题,应该是安装程序没有重新mountvolume导致的,我后面分析下日志。

说实话我对Windows上的底层API确实不熟悉,这个安装程序会有一些问题的,我有心理准备。

对于PE ISO admin登录的问题,我确实之前完全没有想到还会有这种问题。
感谢像您这样热心反馈的坛友,任何一个工具、软件都需要一定的版本稳定时间,Ventoy也不例外。

至于Ventoy的远景,嗯,还是那句话,目标还是要有的哈哈。


点评

楼主请问第二分区(Fat分区)放进微软的MSDOS引导文件能不能启动?  详情 回复 发表于 2020-4-8 10:30
微PE2.0,WePE_64_V2.0.iso https://ws28.cn/f/288qujmrm1z 自己的帖子,在电脑版本可以自己删除的。附加选项→删除本帖。  详情 回复 发表于 2020-4-7 10:29
回复

使用道具 举报

发表于 2020-4-7 10:29:58 | 显示全部楼层
本帖最后由 liuzhaoyzz 于 2020-4-7 10:44 编辑
longpanda 发表于 2020-4-7 10:22
非常感谢你的测试。
新老电脑有差异,有可能是兼容性方面的问题,确实Ventoy很新,测试的不充分,尤其是 ...

微PE2.0,WePE_64_V2.0.iso,7天分享不限速:
https://ws28.cn/f/288qujmrm1z
log文件已经上传在楼上了啊。

自己的帖子,在电脑版本可以自己删除的。编辑→附加选项→删除本帖。

点评

可能是兼容性问题,这个PE我这边在虚拟机和一台实机上UEFI都是ok的[attachimg]415621[/attachimg][attachimg]415622[/attachimg][attachimg]415623[/attachimg]  详情 回复 发表于 2020-4-7 12:50
哈,又学了一招,多谢! Windows安装程序首次会失败的问题看来比较普遍,程序还需要优化。  详情 回复 发表于 2020-4-7 10:38
回复

使用道具 举报

 楼主| 发表于 2020-4-7 10:38:45 | 显示全部楼层
liuzhaoyzz 发表于 2020-4-7 10:29
微PE2.0,WePE_64_V2.0.iso,7天分享不限速:
https://ws28.cn/f/288qujmrm1z
log文件已经上传在楼上了 ...

哈,又学了一招,多谢!  
Windows安装程序首次会失败的问题看来比较普遍,程序还需要优化。
回复

使用道具 举报

发表于 2020-4-7 10:51:09 | 显示全部楼层
本帖最后由 liuzhaoyzz 于 2020-4-7 10:52 编辑
longpanda 发表于 2020-4-6 20:38
这个帖子里的 mkisofs 脚本我看了一下。做出来的ISO文件就是00,这个实际上是不符合Eltorito规范的。脚本 ...


我用hxd搜索了下91EF010000000000,似乎有。

我感觉Ventoy是不是应该尽可能去适配非标准的ISO,而不是让非标准的ISO去适配Ventoy,有很多类似的案例,大家都不是标准,但是已经成了事实上的标准。grub4dos为了非标准的BIOS做了很多适配和调整,就是为了搞定buggy的BIOS。


QQ截图20200407105056.jpg

点评

嗯,那我下载下来试试。  详情 回复 发表于 2020-4-7 10:51
回复

使用道具 举报

 楼主| 发表于 2020-4-7 10:51:58 | 显示全部楼层
本帖最后由 longpanda 于 2020-4-7 10:59 编辑
liuzhaoyzz 发表于 2020-4-7 10:51
我用hxd搜索了下91EF010000000000,似乎有。

嗯,那我下载下来试试。适配的问题,那肯定是这样。 能推动适配Ventoy的当然更好, 已经流行的,变成事实标准的,Ventoy也会去适配。BIOS是由厂商出的,推动肯定是不可能的了。 像这种PE ISO,一般都是我们自己制作的,能100% 符合规范我觉得也是很好的。

双分区,第二个分区为可启动分区的方案,在一些老电脑上肯定会有兼容性问题,但是这个是实现Ventoy总体方案必须的一种选择,也确实有点难以两全。

回复

使用道具 举报

发表于 2020-4-7 10:57:55 | 显示全部楼层
本帖最后由 liuzhaoyzz 于 2020-4-7 11:03 编辑
longpanda 发表于 2020-4-6 17:07
你理解的基本上都是对的。

Ventoy的最基本的原理就是 INT13中继(legacy) 和Block IO protocol 中继(UE ...

其实吸引我的不单单是楼主的拷贝ISO即可启动这个简单的部署方法,还有楼主的编程能力,让我感觉到so cool!因为这需要懂得很多的启动方案才能编程,无忧论坛很多都是一般用户,真正地能为启动项目做贡献写程序,而且开源免费的,真的很少了。而且楼主很谦虚!由衷的佩服楼主!点赞!



点评

感谢支持! 其实能做一款开源软件并被人接受,是很多做技术的人都有一些情怀。只是现实环境很多时候不允许,有心无力。 这次也是赶上特殊时期在家时间长一些,才能把这个想法付诸实现。  详情 回复 发表于 2020-4-7 11:02
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2021-3-8 23:48

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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