wintoflash 发表于 2020-1-1 16:42:30

hilsonma 发表于 2020-1-1 16:00
刚打包的时候发现也可以用7z解开run,里面有wimboot,但同样有一套bootmgr+bcd+sdi

稍后我试一下 ...

用的是wimboot

wintoflash 发表于 2020-1-1 16:45:23

hilsonma 发表于 2020-1-1 16:00
刚打包的时候发现也可以用7z解开run,里面有wimboot,但同样有一套bootmgr+bcd+sdi

稍后我试一下 ...
wimboot不需要处理路径。
原理与ntboot类似,但不相同。
ntboot是用虚拟盘上的bcd,启动硬盘上的wim
wimboot是用虚拟盘上的bcd,启动虚拟盘上的boot.wim
@:boot.wim:/xxx.wim,虚拟盘上的wim就是boot.wim
@:abcd.wim:/xxx.wim,虚拟盘上就是abcd.wim
grub2里面的vfat命令,可以帮助你理解。

hilsonma 发表于 2020-1-1 17:11:33

wintoflash 发表于 2020-1-1 16:45
wimboot不需要处理路径。
原理与ntboot类似,但不相同。
ntboot是用虚拟盘上的bcd,启动硬盘上的wim


稍后我去了解vfat。

看你的解释,我明白了:
wimboot是先将wim复制到虚拟盘,改名为虚拟盘bcd指定的文件名
ntboot是按实际文件名修改虚拟盘的bcd

江南一根葱 发表于 2020-1-1 17:31:58

run是用的早期的wimboot,没有注入文件的功能
我一直在论坛上问怎么替换成新的版本。。。。结果没人告诉我

wintoflash 发表于 2020-1-1 17:49:59

hilsonma 发表于 2020-1-1 17:11
稍后我去了解vfat。

看你的解释,我明白了:


wimboot是改名为 你 指定的文件名,而不是根据bcd去确定文件名的。

hilsonma 发表于 2020-1-1 18:13:25

本帖最后由 hilsonma 于 2020-1-1 18:26 编辑

wintoflash 发表于 2020-1-1 17:49
wimboot是改名为 你 指定的文件名,而不是根据bcd去确定文件名的。
那样岂不是wimboot还要根据指定的文件名修改虚拟盘的bcd?那样不是很好吧,我想象中是在虚拟盘放一套启动模板,使用的时候复制实际的wim文件到虚拟盘改名符合模板然后启动。

而ntboot则是在虚拟盘放bootmgr+bcd+sdi, 使用的时候修改虚拟盘的bcd以符合要启动的wim路径然后启动。
不知道我这样的理解是否对。

wintoflash 发表于 2020-1-1 18:33:52

hilsonma 发表于 2020-1-1 18:13
那样岂不是wimboot还要根据指定的文件名修改虚拟盘的bcd?那样不是很好吧,我想象中是在虚拟盘放一套启动 ...

那样岂不是wimboot还要根据指定的文件名修改虚拟盘的bcd?那样不是很好吧,我想象中是在虚拟盘放一套启动模板,使用的时候复制实际的wim文件到虚拟盘改名符合模板然后启动。
不修改bcd。文件名不符直接启动失败。
而ntboot则是在虚拟盘放bootmgr+bcd+sdi, 使用的时候修改虚拟盘的bcd以符合要启动的wim路径然后启动。
不知道我这样的理解是否对。
这个是对的。

修改 bcd 并没有你想象的那么容易。目前所有 bcd 编辑器都只是调用 bcdedit。

wintoflash 发表于 2020-1-1 18:57:30

本帖最后由 wintoflash 于 2020-1-1 20:04 编辑


试试,utf-8的中文路径应该可以了。

但是,win7以前的有些系统下起的中文名不是utf-8的,这样会造成无法预料的问题,不管了。




hilsonma 发表于 2020-1-1 19:43:24

本帖最后由 hilsonma 于 2020-1-1 20:59 编辑

不修改bcd。文件名不符直接启动失败。
把wim复制到虚拟盘的时候就改名成跟虚拟盘中bcd原先指定的文件名呀,这样不会文件名不符。

修改 bcd 并没有你想象的那么容易。目前所有 bcd 编辑器都只是调用 bcdedit。
自从我学会bcdedit后一直都是使用基于bcdedit脚本修改bcd
现在只发现使用bcdedit建立的bcd启动vhd不成功,而bcdboot建立的bcd能成功启动vhd. 这个问题还没有找到答案。其他我使用bcdedit建立的bcd都能成功引导。
就象我用你的vhd模块启动vhd没有成功过,而用ntboot却成功了,目前也没有找到答案。我不知道是不是我操作vhd镜像的问题。

我觉得你把bcd弄复杂了,我不懂分析文件结构,但据网上资料,bcd就是一个注册表文件,可以导入注册表编辑修改的。
有兴趣有时间的话可以看看这个http://www.mistyrebootfiles.alte ... /BCDEdit/index.html

可能wimboot中修改bcd不容易吧,这个我就不了解了。

你可以试试把我这个bcd放进虚拟盘根目录,只要bootmgfw.efiboot.sdiboot.wim都同在虚拟盘根目录,就能成功启动。
所以只要把wim文件复制进虚拟盘根目录改名为boot.wim就可以了。
这个bcd是uefi/bios通用的。

hilsonma 发表于 2020-1-1 19:47:40

本帖最后由 hilsonma 于 2020-1-1 19:55 编辑

wintoflash 发表于 2020-1-1 18:57
试试,utf-8的中文路径应该可以了。

但是,win7以前的有些系统下起的中文名不是utf-8的,这样会造成无 ...
试过了,这个可以成功启动中文文件名的wim镜像。谢谢。
先成功了再说,至于特殊情况,只要不造成实质损坏,可以慢慢改善,也可以置之不理。
好象不点有个观点是这样的:用户迁就软件,软件迁就硬件。当然,是指规范而言。因为要迁就不规范的东西实在是太难太难了。

江南一根葱 发表于 2020-1-1 19:53:38

vhd模块不是用来挂载vhd的吗

hilsonma 发表于 2020-1-1 19:56:51

江南一根葱 发表于 2020-1-1 19:53
vhd模块不是用来挂载vhd的吗

是呀,但这个模块我从来没有成功过,可能是我的vhd镜像的问题,搞不懂。
后来用ntboot就成功了。

江南一根葱 发表于 2020-1-1 20:04:41

hilsonma 发表于 2020-1-1 19:56
是呀,但这个模块我从来没有成功过,可能是我的vhd镜像的问题,搞不懂。
后来用ntboot就成功了。
貌似记得这模块就是挂载vhd查看文件用的。efi启vhd目前只有ntboot
bios下倒可以用vboot

wintoflash 发表于 2020-1-1 20:07:20

本帖最后由 wintoflash 于 2020-1-1 20:14 编辑

hilsonma 发表于 2020-1-1 19:43
把wim复制到虚拟盘的时候就改名成跟虚拟盘中bcd原先指定的文件名呀,这样不会文件名不符。



所以,你可以用注册表编辑器打开bcd看一下,是不是一脸懵逼。
而且,就算是注册表,也不是那么好解析的。
目前Windows下,也都是要通过 regedit 或者 windows api 查看注册表的。
第三方的解析注册表软件存在,但是非常复杂。

目前 wimboot 里面只是有将.efi替换.exe的修改,是暴力实现的。

因为大多数人用的都是 Windows,别说 bootloader/操作系统开发了,就算是 Windows 程序开发,也接触的不多,会把很多东西看作想当然的。
在grub里面,就算是算长整数的除法取余,都可能需要汇编来实现。在C语言学习里面习以为常的 printf 都不存在。在显示屏上输出个小数都费劲。

江南一根葱 发表于 2020-1-1 22:46:32

wimiso

hilsonma 发表于 2020-1-2 10:14:03

本帖最后由 hilsonma 于 2020-1-2 10:26 编辑

wintoflash 发表于 2020-1-1 18:57
试试,utf-8的中文路径应该可以了。

但是,win7以前的有些系统下起的中文名不是utf-8的,这样会造成无 ...
试了最新发布的grub2,wimboot比原来略快,不过相差不到1秒;
ntboot比原来略慢,相差也不到1秒;
同版ntboot比wimboot快,相差2秒左右。
这是在我的电脑上用不同方式启动同一个wim,用手机秒表手工测量的结果,肯定有误差,但快慢对比应该是真实的。

按照你对wimboot和ntboot的描述,我觉得两者在虚拟盘文件参数方面应该是一样的,也就是wimboot没有提供修改虚拟盘文件名的必要,都是可选参数
-e FILE, --efi=FILE 外部efi文件,不指定就使用自带的
-s FILE, --sdi=FILE 外部sdi文件,不指定就使用自带的
虚拟盘文件名是固定的,就没有必要使用外部的bcd,直接自带的bcd
wimboot是启动复制到虚拟盘的wim,命名为虚拟盘固定的wim文件名即可,不需要改bcd
ntboot是启动外部的wim,需要ntboot内部修改虚拟盘的bcd以符合外部wim文件名
wimboot那一套参数@:NAME:FILE 可以简单化了。

sdi建议自带960k那个,bcd建议用我给的8k那个,bootmgr会自动选用winload.exe,bootmgfw.efi会自动选用winload.efi,没有必要在bcd中指定。

wintoflash 发表于 2020-1-2 10:47:07

本帖最后由 wintoflash 于 2020-1-2 10:53 编辑

hilsonma 发表于 2020-1-2 10:14
试了最新发布的grub2,wimboot比原来略快,不过相差不到1秒;
ntboot比原来略慢,相差也不到1秒;
同版nt ...
1)为了兼容以前的脚本。不能更新了,原来的脚本就不能用了。
2)wimboot 最主要的用途是修改wim,这个你没有用到,所以觉得可以改。我不会设计没用的东西,就连命令中的@,也是有用的,只不过我没有公开。
3)要给将来可能出现的改进留空间

hilsonma 发表于 2020-1-2 10:58:17

wintoflash 发表于 2020-1-2 10:47
1)为了兼容以前的脚本。不能更新了,原来的脚本就不能用了。
2)wimboot 最主要的用途是修改wim,这个你 ...

明白了,谢谢解答。

刚试了不带efi参数的ntboot,结果是不行的。是不是并没有内置bootmgfw.efi ,如果是没有的话建议usage里标示--efi 为必需参数,而不是可选参数。--sdi 参数同理。

wintoflash 发表于 2020-1-2 11:09:17

本帖最后由 wintoflash 于 2020-1-2 11:10 编辑

hilsonma 发表于 2020-1-2 10:58
明白了,谢谢解答。

刚试了不带efi参数的ntboot,结果是不行的。是不是并没有内置bootmgfw.efi ,如果 ...
默认加载路径是/efi/microsoft/boot/bootmgfw.efi
不能内置bootmgfw.efi,有版权问题。
这个在我主页grub2手册里面有写的。https://a1ive.github.io/grub2_zh.html

hilsonma 发表于 2020-1-2 11:34:02

本帖最后由 hilsonma 于 2020-1-2 11:55 编辑

wintoflash 发表于 2020-1-2 11:09
默认加载路径是/efi/microsoft/boot/bootmgfw.efi
不能内置bootmgfw.efi,有版权问题。
这个在我主页gr ...
谢谢。是我发贴发糊涂了,原本知道是有默认外部路径的。脑子里直想着虚拟盘事情就试,试了就发贴,一下子就忘了。

中文手册越来越丰富,祝贺并感谢!

liuzhaoyzz 发表于 2020-1-2 11:57:37

wintoflash 发表于 2020-1-1 18:57
试试,utf-8的中文路径应该可以了。

但是,win7以前的有些系统下起的中文名不是utf-8的,这样会造成无 ...

想问下wintoflash大神,是不是新版grub2,启动中文iso,不再需要用
strconv --gbk --set=file "(http)/imgs/WePE_64_V2.0中文.iso"
这样子的了?

hilsonma 发表于 2020-1-2 12:36:41

liuzhaoyzz 发表于 2020-1-2 11:57
想问下wintoflash大神,是不是新版grub2,启动中文iso,不再需要用
strconv --gbk --set=file "(http)/i ...

我刚试了,直接
map /imgs/WePE_64_V2.0中文.iso
这样的中文iso是可以启动的,网启我现在没有条件没有试,你一试便知。

wintoflash 发表于 2020-1-2 13:04:30

liuzhaoyzz 发表于 2020-1-2 11:57
想问下wintoflash大神,是不是新版grub2,启动中文iso,不再需要用
strconv --gbk --set=file "(http)/i ...

这个跟网启的没有关系。
网启的是软件内部编码的问题,必须转。

liuzhaoyzz 发表于 2020-1-2 17:58:58

本帖最后由 liuzhaoyzz 于 2020-1-3 07:54 编辑

hilsonma 发表于 2019-12-31 18:44
刚才试了一下g4d的run,是可以启动中文文件名的pe镜像的,只是中文的地方显示变成了编码
      g4d的run显示中文没问题的,要加载正确的字体,菜单要用utf-8有无BOM都可以,似乎还需要vbe模式,run --loadfont有个命令就是加载中文字体,加载之后不存在你说的无法正常显示的问题。      

liuzhaoyzz 发表于 2020-1-2 18:02:03

hilsonma 发表于 2020-1-1 19:43
把wim复制到虚拟盘的时候就改名成跟虚拟盘中bcd原先指定的文件名呀,这样不会文件名不符。




      BCD修改真的不容易,bcdedit很不可靠。不如g4d grub2这样子的文本菜单改起来方便。      

wintoflash 发表于 2020-1-9 09:44:18

hilsonma 发表于 2020-1-1 19:56
是呀,但这个模块我从来没有成功过,可能是我的vhd镜像的问题,搞不懂。
后来用ntboot就成功了。

这两天大概看了一下 firadisk 的源码,发现它只能识别 BIOS 下的仿真盘。(相关讨论见https://github.com/a1ive/grub/issues/24)
所以 UEFI 下用 map 启动 VHD 最大的问题就是, 没有能用的 Windows 驱动。


pky317 发表于 2020-1-9 12:42:55

wintoflash 发表于 2020-1-9 09:44
这两天大概看了一下 firadisk 的源码,发现它只能识别 BIOS 下的仿真盘。(相关讨论见https://github.com/ ...

http://bbs.wuyou.net/forum.php?mod=viewthread&tid=411365
不知这个是否有可以借鉴的地方

wintoflash 发表于 2020-1-9 13:35:27

pky317 发表于 2020-1-9 12:42
http://bbs.wuyou.net/forum.php?mod=viewthread&tid=411365
不知这个是否有可以借鉴的地方

看源码,SvBus的原理也差不多。获取 GRUB4DOS map 出来的盘靠的是 int13h 相关的东西。
这种东西在 UEFI 下根本不存在。至于能不能模拟出来那就不好说了。如果能模拟出来的话,UEFI下都能模拟 BIOS 了。

wangziqiang 发表于 2020-1-13 15:58:47

反馈一个小问题 dir时,分区根目录出现很多个带有$符号的文件,楼主能不屏蔽掉呢。

hilsonma 发表于 2020-1-13 16:53:19

本帖最后由 hilsonma 于 2020-1-13 17:02 编辑

wangziqiang 发表于 2020-1-13 15:58
反馈一个小问题 dir时,分区根目录出现很多个带有$符号的文件,楼主能不屏蔽掉呢。
现在设定的是显示所有文件,所以这类隐藏文件也显示的
要屏蔽$开头的文件需要添加筛选功能
你可以使用notepad2修改rundir.cfg
在第12行 if test -d "$obj"; then 的前面插入一行,放上这一句:
if regexp '^\$.*' "$name";then continue;fi
这样跳过$开头的文件就可以了。

不过你现在使用的是wintoflash的run.efi,你需要修改他的源码然后重新编译,或者到他的贴子反映,看他是否为你修改。
页: 1 [2] 3 4 5 6 7
查看完整版本: grub2的自动菜单和多功启动(以cfg文件的方式仿造g4d的run/siso)