无忧启动论坛

标题: NTBOOT & wimboot for UEFI GRUB2 [打印本页]

作者: wintoflash    时间: 2019-11-20 17:40
标题: NTBOOT & wimboot for UEFI GRUB2
本帖最后由 wintoflash 于 2021-3-2 19:10 编辑

本项目已停止开发,不再维护。
----------------------------

wimboot
根据 ipxe wimboot 移植的模块,适用于 BIOS/UEFI,可以启动并修改 Windows NT6+ WIM。
使用方法
  1. wimboot [BOOT_OPTIONS] [BCD_OPTIONS] @:NAME1:FILE1 @:NAME2:FILE2 ...
  2. BOOT OPTIONS (启动参数)
  3. -g, --gui 显示图形启动界面 (不推荐开启)
  4. -p, --pause 显示调试信息并在启动过程中暂停
  5. -b, --rawbcd 禁用 BCD 自动修改 (.exe 改为 .efi)
  6. -w, --rawwim 禁用 WIM 自动修改
  7. -i, --index=n 指定要启动的WIM卷号
  8. -p, --pause 启动前暂停
  9. -j, --inject=WIN32_PATH 指定射入文件夹,默认为 \Windows\Syatem32

  10. @:NAME:FILE
  11. 指定要加载的文件 FILE,其被射入虚拟盘后文件名为 NAME。若未射入 BCD 或 boot.sdi,将使用内置 BCD 和 boot.sdi

  12. BCD OPTIONS (BCD 内部启动选项,仅当使用内置 BCD 时才有效。在使用 yes|no 的地方,也可以使用 on|off, true|false, 1|0):
  13. --testmode=yes|no 测试模式 (testsigning)。
  14. --highest=yes|no 强制使用最高分辨率。
  15. --nx=OptIn|OptOut|AlwaysOff|AlwaysOn 指定 NX 策略。
  16. --pae=Default|Enable|Disable 指定 PAE 策略。
  17. --detecthal=yes|no 检测 HAL 和 kernel。
  18. --winpe=yes|no 启动到 WinPE 模式 (/MININT)。
  19. --timeout=n 设置超时。
  20. --sos=yes|no 启用 SOS 模式。
  21. --novesa=yes|no 禁用 VESA BIOS 调用。
  22. --novga=yes|no 禁用 VGA 模式。
  23. --loadoptions=XXX 指定 NT 内核加载参数。
  24. --winload=\\WIN32_PATH 指定 winload 路径。
  25. --sysroot=\\WIN32_PATH 指定系统根目录。
复制代码

示例1: 启动 WIM
  1. wimboot --rawwim @:bootmgfw.efi:/boot/grub/bootmgfw.efi @:boot.wim:/wim/wepe.wim
复制代码

示例2: 启动 WIM,关闭测试模式,启用 PAE
  1. wimboot --testmode=no --pae=Enable --rawwim @:bootmgfw.efi:/boot/grub/bootmgfw.efi @:boot.wim:/wim/wepe.wim
复制代码

示例3: 启动 WIM 的第二卷,并射入替代 explorer
  1. wimboot --index=2 @:bootmgfw.efi:/boot/bootmgfw.efi @:explorer.exe:/boot/explorer.exe \
  2.             @:WinXShell.exe:/boot/WinXShell.exe @:WinXShell.jcfg:/boot/WinXShell.jcfg \
  3.             @:winpeshl.ini:/boot/winpeshl.ini @:boot.wim:(loop)/sources/boot.wim
复制代码

注意事项
wim 文件体积不得超过 4GB。

NTBOOT
根据 chenall 的 GRUB4DOS NTBOOT 移植的模块,适用于 BIOS/UEFI,可以启动 Windows 系统/WIM/VHD。
使用方法
  1. ntboot [-g] [-p] -e FILE [-s FILE] [BOOT_TYPE] [BCD_OPTIONS] FILE
  2. -g, --gui 显示图形启动界面 (不推荐开启)
  3. -p, --pause 显示调试信息并在启动过程中暂停
  4. -e, --efi=FILE 指定 bootmgfw.efi / bootmgr.exe 的路径。
  5. -s, --sdi=FILE 指定 boot.sdi 的路径。若无此参数,则使用内部生成的 boot.sdi。

  6. BOOT TYPE (指定启动文件类型,默认情况下根据文件扩展名自动判断):
  7. -w, --wim 指定启动类型为 wim。
  8. -n, --win 指定启动类型为 Windows 系统。
  9. -v, --vhd 指定启动类型为 VHD。
  10. -r, --ramvhd 指定启动类型为 RamOS VHD (此选项仅供测试)

  11. BCD OPTIONS (BCD 内部启动选项,在使用 yes|no 的地方,也可以使用 on|off, true|false, 1|0):
  12. --testmode=yes|no 测试模式 (testsigning)。
  13. --highest=yes|no 强制使用最高分辨率。
  14. --nx=OptIn|OptOut|AlwaysOff|AlwaysOn 指定 NX 策略。
  15. --pae=Default|Enable|Disable 指定 PAE 策略。
  16. --detecthal=yes|no 检测 HAL 和 kernel。
  17. --winpe=yes|no 启动到 WinPE 模式 (/MININT)。
  18. --imgoffset=n 指定 RamOS VHD 内存盘偏移。
  19. --timeout=n 设置超时。
  20. --sos=yes|no 启用 SOS 模式。
  21. --novesa=yes|no 禁用 VESA BIOS 调用。
  22. --novga=yes|no 禁用 VGA 模式。
  23. --loadoptions=XXX 指定 NT 内核加载参数。
  24. --winload=\\WIN32_PATH 指定 winload 路径。
  25. --sysroot=\\WIN32_PATH 指定系统根目录。
复制代码

示例1: 启动WIM
  1. ntboot --efi=/xxx/bootmgfw.efi --wim /xxx/xxx.wim
复制代码

示例2: 启动VHD
  1. ntboot --efi=/xxx/bootmgfw.efi --vhd /xxx/xxx.vhd
复制代码

示例3: 启动 Windows 系统
  1. ntboot --efi=/xxx/bootmgfw.efi --win (hd0,4)
复制代码

示例4: 启动WIM,禁用测试模式,启用 PAE
  1. ntboot --efi=/xxx/bootmgfw.efi --wim /xxx/xxx.wim --testmode=no --pae=Enable
复制代码


注意事项
只支持硬盘 mbr/gpt 分区表 FAT/NTFS 分区上的文件。
启动 VHD 可能会有个错误(如下图),不过不要慌,按两遍回车就可以了。


下载
https://github.com/a1ive/grub/releases/tag/latest

技术细节
wimboot 可以生成一个 bootmgfw.exe/bootmgr.exe 可识别的单分区 FAT32 虚拟盘, 将 bootmgfw.efi, bcd 等文件放入其中即可启动。BCD 文件为 bootmgfw.efi 读取的启动配置文件,其格式为 REGF (Windows 注册表)。关于 REGF,可以到这里了解更多。boot.sdi 文件为 bootmgfw.efi 启动 WIM 必须的 System Deployment Image 文件,可以到这里了解更多。wimboot 内置了一个 REGF/BCD 解析器,可以解析并自动修改 BCD 的内容;同时也内置了 boot.sdi 生成工具,可以自动生成所需的 boot.sdi。wimboot 启动方式与 NTBOOT 启动方式的主要区别是 wimboot 启动时,WIM 文件也放入FAT32虚拟盘中,而 NTBOOT 启动时,WIM 不在启动盘中。因此,wimboot 方式可以虚拟修改 WIM 内容,向其中插入文件而不用改变实际文件内容,NTBOOT 则不可以。wimboot 会将除了 bcd, boot.sdi, WIM 自身之外的所有文件都射入 WIM 的 \Windows\System32 目录下。但是由于 VHD 启动过程中需要从真实硬盘读取 VHD,所以 wimboot 方式无法启动 VHD。


  1. grub-mkimage -d x86_64-efi -p /boot/grub -o grubx64.efi -O x86_64-efi acpi all_video bitmap bitmap_scale blocklist boot cat chain cmp commandline configfile cpio date datehook dd disk echo efi_gop efi_uga efifwsetup exfat expr ext2 extcmd fat fb file font fshelp getenv getkey gfxmenu gfxterm gfxterm_background gfxterm_menu gzio halt hashsum help hexdump iso9660 jfs jpeg keystatus linux linuxefi loadenv loopback ls lua lzopio memdisk minicmd multiboot multiboot2 newc normal ntfs part_gpt part_msdos partnew parttool png probe progress random read reboot regexp sbpolicy search sleep squash4 tar terminal terminfo test tga time udf vhd video video_colors video_fb videoinfo xzio map wimboot ntboot
复制代码


参考
参考了以下项目的代码或文档,感谢开源
iPXE wimboot
NTBOOT by chenall
quibble
REGF Spec
BCD Elements
SDI Spec

源码
https://github.com/a1ive/grub 许可协议 GPLv3

作者: maghreb    时间: 2019-11-20 17:51
前排支持一下
作者: 红毛樱木    时间: 2019-11-20 18:01
LZ最近移植的功能多,要升仙封神了
作者: yynq    时间: 2019-11-20 18:49
支持一下支持一下支持一下
作者: 江南一根葱    时间: 2019-11-20 19:18
红毛樱木 发表于 2019-11-20 18:01
LZ最近移植的功能多,要升仙封神了

红毛改个磁盘驱动出来,让瘟哆撕能认到grub2的内存盘
作者: minmax    时间: 2019-11-20 19:25
期待支持 差分及VHDX
作者: 创新科技2015    时间: 2019-11-20 20:36
很给力!
作者: 2010up    时间: 2019-11-20 20:52
可以写一个,UEFI GRUB2  PXE引导 的事例吗?

作者: wuwuzz    时间: 2019-11-20 21:01
本帖最后由 wuwuzz 于 2019-11-20 21:03 编辑

启动U盘上的固定wtg.vhd成功。

红毛说的没错,LZ最近功劳很大,要升仙
封神了。

下一步,需要有人写识别虚拟盘的win驱动,
以充分发挥MAP的作用。




作者: 2012kwy    时间: 2019-11-20 21:04
某些绕过安全打包的grub2版本为2.02,楼主的grub2为2.05版,且某些模块还是特制的,请问如何兼容?如果出现某mod已加载的提示,该如何处理?
作者: 2010sya    时间: 2019-11-20 21:20
谢谢W大,期待grub2能有更广泛的应用!
作者: wintoflash    时间: 2019-11-20 21:21
本帖最后由 wintoflash 于 2019-11-20 21:23 编辑
2012kwy 发表于 2019-11-20 21:04
某些绕过安全打包的grub2版本为2.02,楼主的grub2为2.05版,且某些模块还是特制的,请问如何兼容?如果出现 ...

没看我的帖子?
http://bbs.wuyou.net/forum.php?mod=viewthread&tid=416924都能绕过安全启动了,直接chainload这个grub不就行了

作者: wintoflash    时间: 2019-11-20 21:27
2010up 发表于 2019-11-20 20:52
可以写一个,UEFI GRUB2  PXE引导 的事例吗?

@江南一根葱
作者: wintoflash    时间: 2019-11-20 21:27
minmax 发表于 2019-11-20 19:25
期待支持 差分及VHDX

如果bootmgfw.efi能直接启,那就行,否则,不行.
作者: liujun2000    时间: 2019-11-20 21:54
wintoflash 发表于 2019-11-20 21:27
如果bootmgfw.efi能直接启,那就行,否则,不行.

能给一个模板么
作者: adef    时间: 2019-11-20 22:31
顶一个捞点分
作者: ksafei    时间: 2019-11-20 22:56
本帖最后由 ksafei 于 2019-11-20 23:00 编辑

虚拟机测试可以,实体机还未成功,继续测试....

发现此版grubx64.efi不兼容wimboot方式启动wim了,是不是参数有变?
loopback wimboot /boot/grub/wimboot.gz
wimboot @:bootmgfw.efi:(wimboot)/bootmgfw.efi @:bcd:(wimboot)/bcd @:boot.sdi:(wimboot)/boot.sdi @:boot.wim:/test/test.wim


作者: wintoflash    时间: 2019-11-21 07:59
ksafei 发表于 2019-11-20 22:56
虚拟机测试可以,实体机还未成功,继续测试....

发现此版grubx64.efi不兼容wimboot方式启动wim了,是不 ...

我这边可以啊
作者: 826773297    时间: 2019-11-21 12:01
希望能够加上wim分卷启动功能,这样可以节省空间,另外虚拟盘能否在光盘下运作wim,每次量产后grub2都只能调用shell来启动pe太麻烦
作者: wintoflash    时间: 2019-11-21 13:00
826773297 发表于 2019-11-21 12:01
希望能够加上wim分卷启动功能,这样可以节省空间,另外虚拟盘能否在光盘下运作wim,每次量产后grub2都只能 ...

那你应该用wimboot啊,支持指定启动分卷。
ntboot本来就是用于硬盘启动的。
现在新一代wimboot比前一代速度快了,而且不再像前一代那样占用两倍内存。
作者: 826773297    时间: 2019-11-21 15:01
wintoflash 发表于 2019-11-21 13:00
那你应该用wimboot啊,支持指定启动分卷。
ntboot本来就是用于硬盘启动的。
现在新一代wimboot比前一代 ...

好的,有空试试
作者: ksafei    时间: 2019-11-22 14:12
wintoflash 发表于 2019-11-21 07:59
我这边可以啊

我这里的测试结果:
1.如采用绕过UEFI安全启动,然后用 chainloader /efi/boot/grubx64.efi引导 则ntboot和wimboot均报错;
2.如关闭安全启动,将grubx64.efi 改为 bootx64.efi 引导,则ntboot和wimboot正常;
3.wimboot 如用loopback wimboot /boot/grub/wimboot.gz  
                       ........     (报错)
如下方式则正常:
wimboot @:bootmgfw.efi:"${prefix}"/wimboot/bootmgfw.efi \
                        @:bcd:"${prefix}"/wimboot/bcd \
                        @:boot.sdi:"${prefix}"/wimboot/boot.sdi \
                        @:boot.wim:"${wimroot}"$2
4.用11.21版文件管理器生成的grubfmx64.efi,在安全启动和关闭两种模式使用 ntboot和wimboot引导wim均报错

或许是我使用不当产生错误,还请wintoflash大指点

作者: wintoflash    时间: 2019-11-22 15:09
ksafei 发表于 2019-11-22 14:12
我这里的测试结果:
1.如采用绕过UEFI安全启动,然后用 chainloader /efi/boot/grubx64.efi引导 则ntboo ...
3.wimboot 如用loopback wimboot /boot/grub/wimboot.gz  
                       ........     (报错)
如下方式则正常:
wimboot @:bootmgfw.efi:"${prefix}"/wimboot/bootmgfw.efi \
                        @:bcd:"${prefix}"/wimboot/bcd \
                        @:boot.sdi:"${prefix}"/wimboot/boot.sdi \
                        @:boot.wim:"${wimroot}"$2

这一段没太看懂,能详细些吗?

作者: minmax    时间: 2019-11-22 16:08
wintoflash 发表于 2019-11-20 21:27
如果bootmgfw.efi能直接启,那就行,否则,不行.

bootmgfw.efi能直接启,可以,透過引導BCD ?
作者: ksafei    时间: 2019-11-22 17:20
本帖最后由 ksafei 于 2019-11-22 17:35 编辑
wintoflash 发表于 2019-11-22 15:09
这一段没太看懂,能详细些吗?

一、UEFI安全模式启动,ntboot和wimboot均报错
1.ntboot报错如下:



2.wimboot报错如下:

菜单a:
loopback wimboot /boot/grub/wimboot.gz
wimboot @:bootmgfw.efi:(wimboot)/bootmgfw.efi @:bcd:(wimboot)/bcd @:boot.sdi:(wimboot)/boot.sdi @:boot.wim:"${wimroot}"$2




菜单b:
wimboot @:bootmgfw.efi:"${prefix}"/wimboot/bootmgfw.efi \
   @:bcd:"${prefix}"/wimboot/bcd \
   @:boot.sdi:"${prefix}"/wimboot/boot.sdi \
   @:boot.wim:"${wimroot}"$2



二、关闭安全模式
将grubx64.efi 改名为 bootx64.efi 引导启动

1.ntboot正常

2.wimboot
(1)菜单a BCD报错同上
(2)菜单b 正常


作者: ksafei    时间: 2019-11-22 17:26
通过以上测试对新的 grubx64.efi 有如下疑惑:
一是好像不支持安全启动模式 ;
二是对 loopback wimboot /boot/grub/wimboot.gz 语句好像不支持了
作者: wintoflash    时间: 2019-11-22 17:34
ksafei 发表于 2019-11-22 17:26
通过以上测试对新的 grubx64.efi 有如下疑惑:
一是好像不支持安全启动模式 ;
二是对 loopback wimboot  ...

loopback的那个图,你按回车试试?
作者: ksafei    时间: 2019-11-22 17:37
wintoflash 发表于 2019-11-22 17:34
loopback的那个图,你按回车试试?

按回车显示如下图:



作者: wintoflash    时间: 2019-11-22 18:56
ksafei 发表于 2019-11-22 17:37
按回车显示如下图:

我这里loopback没问题。
关于安全启动,暂时放弃吧。微软搞事情,证书失效,我也没办法。
作者: ksafei    时间: 2019-11-22 20:33
wintoflash 发表于 2019-11-22 18:56
我这里loopback没问题。
关于安全启动,暂时放弃吧。微软搞事情,证书失效,我也没办法。

明白。wimboot、map和ntboot等模块是对grub2的创新和发展,感谢wintoflash大的辛苦付出和分享。期待有更多更好的成果
作者: gnuxwy    时间: 2019-11-22 20:58
W大牛比,又搞定grub2引载噐下的ntboot了,大赞。。。以后有Uefi主板了一定要玩一玩。。。

作者: 假大空    时间: 2019-11-22 23:02
厉害!efi下启动工具收藏先
作者: sghihor    时间: 2019-12-13 18:25
感谢大大制作分享
作者: wdtx    时间: 2019-12-28 17:57
本帖最后由 wdtx 于 2019-12-28 17:59 编辑

老师你好,下载了grub2-latest.tar.gz,制作了grubx64.efi,
在vmware试验,应用主题时背景图被一个窗口遮挡,
如图:



正常应该是这样的:


这个主题用其他的grubx64.efi是正常显示的,是哪里问题?谢谢...

作者: wintoflash    时间: 2019-12-28 18:13
wdtx 发表于 2019-12-28 17:57
老师你好,下载了grub2-latest.tar.gz,制作了grubx64.efi,
在vmware试验,应用主题时背景图被一个窗口遮 ...

善用搜索
http://bbs.wuyou.net/forum.php?m ... 0371&fromuid=487838
另外,请不要在帖子下提与帖子主题无关的问题。

作者: kenddy    时间: 2020-1-11 21:09
minmax 发表于 2019-11-20 19:25
期待支持 差分及VHDX

同求
作者: bet365    时间: 2020-2-8 00:08
非常喜欢这个模块,两个问题请教下。
第一  用了这个命令之后,
ntboot --gui (hd0,7)/WINPE/WINPE10.WIM
但是进入PE系统,分辨率会失真。而如果我以前的菜单
chainloader ($root)/EFI/microsoft/BootWinPE/w64.efi
分辨率就一样。

第二: 如果原来的我没有集成这个NTBOOT 模块,想要使用这个模块要怎么弄
我菜单这样写
menuentry "【6】Windows 10 PE 网络版"  --class recovery --class os{
insmod ntboot
ntboot --gui (hd0,7)/WINPE/WINPE10.WIM
}
我把这个模块放在 安装目录的 x86_64-efi 下面了。提示没有这个命令
就是如果没有以前没有集成的模块,现在想使用这个模块要怎么弄?TKS!
作者: bet365    时间: 2020-2-8 00:12
另外 再请教下 ,既然 NTBOOT 模块可以很好的启动 WIM,为什么 还要用 WIMBOOT模块呢?我看了
要使用 WIMBOOT  这个模块,菜单还要写很多 命令 ?
比如 菜单
menuentry "Boot WIM" "/test.wim" {
        search -s wimroot -f $2
        wimboot @:bootmgfw.efi:$prefix/wimboot/bootmgfw.efi \
                        @:bcd:$prefix/wimboot/bcd \
                        @:boot.sdi:$prefix/wimboot/boot.sdi \
                        @:boot.wim:($wimroot)$2
}

不解
作者: bet365    时间: 2020-2-8 00:20
最后一个 确实大家用了 定制的GURB2 但是原先的主题会变样 ,我困扰了几天才通过你说的
export enable_progress_indicator=0 才解决了问题。我觉得这是普遍存在的问题,希望下次
能改进一下,因为对于大众来说,很多没有长期关注论坛的话,可能摸不清头脑,
还有一个定制问题请教你,你们这个定制都是固定的要引导 GRUB.cfg 文件名,我是通过老方法
WINDOWS 下 自己 定义文件名。我看了所有的定制都没有自定义文件名的一键方式。
作者: bet365    时间: 2020-2-8 23:52
匿名者 发表于 2020-2-8 08:37
这种情况下你就应该使用 wimboot 加载你自己的 bcd。
这就是 wimboot 存在的意义之一

谢谢你的回答
作者: bwchame    时间: 2020-2-23 12:25
完全不会用。
作者: bwchame    时间: 2020-2-25 12:26
有时间试试
作者: 青青草    时间: 2020-2-28 18:58
W大,你好!
      请教一下,cupid可不可以用来判断CPU是32位还是64位?
谢谢!
作者: wintoflash    时间: 2020-2-28 19:09
青青草 发表于 2020-2-28 18:58
W大,你好!
      请教一下,cupid可不可以用来判断CPU是32位还是64位?
谢谢!
  1. if cpuid -l;
  2. then
  3.   export CPU=64;
  4. else
  5.   export CPU=32;
  6. fi;
复制代码


作者: 青青草    时间: 2020-2-28 20:47
wintoflash 发表于 2020-2-28 19:09

谢谢!
作者: wintoflash    时间: 2020-3-3 20:48
现在安全启动下 NTBOOT/wimboot 也不会报错了。
作者: ksafei    时间: 2020-3-3 21:06
本帖最后由 ksafei 于 2020-3-3 21:47 编辑
wintoflash 发表于 2020-3-3 20:48
现在安全启动下 NTBOOT/wimboot 也不会报错了。

好消息,惊喜连连!
W大,麻烦再给个生成的grubfmx吧,我在windows下生成的运行后总有一些类型的文件图标显示为空,谢谢!
作者: wintoflash    时间: 2020-3-4 09:27
ksafei 发表于 2020-3-3 21:06
好消息,惊喜连连!
W大,麻烦再给个生成的grubfmx吧,我在windows下生成的运行后总有一些类型的文件图 ...

grubfmx64.efi.tar.gz (3.77 MB, 下载次数: 96)

作者: awengers44    时间: 2020-3-5 16:05
wintoflash usta çok teşekkür ederim. test sonuçları başarılı, başarılı çalışmalarının devamı dileğiyle kolay gelsin. (Türkiye serhat100)
作者: wintoflash    时间: 2020-3-5 16:52
awengers44 发表于 2020-3-5 16:05
wintoflash usta çok teşekkür ederim. test sonuçları başarılı, ba ...

iyi
作者: 柳岸长风    时间: 2020-3-5 18:04
谢谢分享!
作者: bwchame    时间: 2020-3-6 04:57
大神完工了
作者: mmmmmm101    时间: 2020-3-6 18:19
谢谢分享!
作者: lhpxs    时间: 2020-5-2 11:33
太高深了,这个具体怎么用的呀
作者: szmsys    时间: 2020-5-9 12:04
title 自动列出所有操作系统
command /ntboot auto

这个功能怎么写?
作者: liuzhaoyzz    时间: 2020-5-10 13:11
本帖最后由 liuzhaoyzz 于 2020-5-10 13:43 编辑

大神,
1、从github上面下载了最新的grub2,没有菜单边框怎么回事?

2、ntboot出错
menuentry "ntboot-WePE_64_V2.0" "/boot/imgs/WePE_64_V2.0/WEPE64.WIM" {
search --no-floppy --set --file $2
ntboot --gui -efi=/boot/ms/EFI/boot/bootx64.efi --sdi=/boot/boot.sdi --wim $2
}


3、你在一楼说bootmgfw.efi是WIN7的,似乎不对啊,属性里面看应该是WIN8的?我用WIN7/8的试了都不行,咋搞的?


作者: wintoflash    时间: 2020-5-10 15:03
liuzhaoyzz 发表于 2020-5-10 13:11
大神,
1、从github上面下载了最新的grub2,没有菜单边框怎么回事?
1、从github上面下载了最新的grub2,没有菜单边框怎么回事?

现在默认无边框。想加边框,执行
  1. set grub_draw_border=1
复制代码
2、ntboot出错

这个你自己找原因。不知道哪句写得不对,导致后面都解析错了,自己仔细检查一下。
3、你在一楼说bootmgfw.efi是WIN7的,似乎不对啊,属性里面看应该是WIN8的?我用WIN7/8的试了都不行,咋搞的?

已删。以前放Win7的bootmgfw.efi是因为其他版本过不了sb。现在都能过sb了,反而Win7的被巨硬封杀了,就没必要用Win7的。
作者: liuzhaoyzz    时间: 2020-5-10 16:05
本帖最后由 liuzhaoyzz 于 2020-5-10 18:44 编辑
wintoflash 发表于 2020-5-10 15:03
现在默认无边框。想加边框,执行

感谢答复!
1、set grub_draw_border=1有边框了。
2、上面的菜单我上写了一个“-”,改成"--"之后没问题了。
menuentry "ntboot-sx0312" "/boot/imgs/SXWIN10PEX64_17763_NET20200312/boot.wim" {
search --no-floppy --set --file $2
ntboot --gui --efi=/boot/ms/EFI/boot/bootx64.efi --sdi=/boot/boot.sdi $2
}
3、我试了用win10的bootmgfw.efi,ntboot启动pe.wim成功。

作者: liuzhaoyzz    时间: 2020-5-10 16:06
本帖最后由 liuzhaoyzz 于 2020-5-10 16:22 编辑

1、实际测试了下,ntboot启动pe.wim比wimboot启动pe.wim速度大概快11-14秒。
2、ntboot不能用于pxe启动,提示出错。
3、怎么新版本里面wimboot通过pxe启动UEFI下的pe.wim失败?一直黑屏,以前没问题啊。

tinypxeserver看到了:
16:20:57 TFTPd:DoReadFile:grub2x64.efi B:1468 T:0
16:20:59 TFTPd:DoReadFile:/grub2/grub2pxe.cfg B:1024 T:2269
16:20:59 TFTPd:DoReadFile:/grub2/unicode.xz B:1024 T:789164
16:21:01 TFTPd:DoReadFile:/grub2/unicode.xz B:1024 T:789164

EasyWebSvr看不到pe.wim传输记录。

菜单如下:set default=0
set fallback=1
set timeout=5
set pager=20
set grub_draw_border=1

#设定菜单字体及背景颜色
set menu_color_normal=white/black
set menu_color_highlight=white/blue

loopback -m ramdisk (tftp)/grub2/unicode.xz
loadfont (ramdisk)/grub2/fonts/unicode.pf2
set locale_dir=(ramdisk)/grub2/locale
set lang=zh_CN
terminal_output gfxterm

net_bootp
set net_default_server=192.168.21.112
set root='(http)'

menuentry "/imgs/WePE_64_V2.0/WEPE64.WIM" "/imgs/WePE_64_V2.0/WEPE64.WIM" {
wimboot \
  @:bootmgfw.efi:/ms/EFI/boot/bootx64.efi   \
  @:bcd:/grub2/bcd    \
  @:boot.sdi:/boot.sdi    \
  @:boot.wim:(http)/imgs/WePE_64_V2.0/WEPE64.WIM
}





测试GPT-2020-05-10-16-07-24.png (3.29 KB, 下载次数: 457)

测试GPT-2020-05-10-16-07-24.png

作者: liuzhaoyzz    时间: 2020-5-10 17:22
liuzhaoyzz 发表于 2020-5-10 16:06
1、实际测试了下,ntboot启动pe.wim比wimboot启动pe.wim速度大概快11-14秒。
2、ntboot不能用于pxe启动, ...

大神不好意思,误报,是我电脑的问题,我把电脑重启了下就好了,wimboot-pxe启动pe.wim正常。
sorry!
作者: wintoflash    时间: 2020-5-10 18:21
实际测试了下,ntboot启动pe.wim比wimboot启动pe.wim速度大概快11-14秒

这个我以前说过。wimboot情况下wim是在一个fat32的虚拟盘上,bootmgfw读盘实际调用的是grub2读盘。
作者: wintoflash    时间: 2020-5-10 18:25
liuzhaoyzz 发表于 2020-5-10 16:06
1、实际测试了下,ntboot启动pe.wim比wimboot启动pe.wim速度大概快11-14秒。
2、ntboot不能用于pxe启动, ...
ntboot不能用于pxe启动,提示出错。

ntboot是chenall的ntboot的复刻。
这个chenall实现不了,我也一样。
作者: liuzhaoyzz    时间: 2020-5-11 08:52
本帖最后由 liuzhaoyzz 于 2020-5-11 08:54 编辑
wintoflash 发表于 2020-5-10 18:25
ntboot是chenall的ntboot的复刻。
这个chenall实现不了,我也一样。

知道了。

ntboot与wimboot对比下,ntboot用于本地速度加载要快点,wimboot适用性要广泛点。
感觉您移植的wimboot模块在本地稳定性挺好,就是加载速度不快,用于pxe启动的时候,总感觉不是那么稳定,比如显示传输速度31TiB/s,实际没那么快,另外对于httpserver有要求,不能很好地适配tinypxeserver,必须用第三方的httpserver,比如hfs、EasyWebSvr这样子的,可能与文件编码转换有关吧。

我也不知道wimboot讨论该在哪个帖子合适,用了ntboot的人,总会和wimboot相对比,就发到这个帖子吧。

作者: mgm8635    时间: 2020-5-12 13:38
谢谢分享
作者: ksafei    时间: 2020-5-19 02:39
本帖最后由 ksafei 于 2020-5-19 03:50 编辑

反馈:NTBOOT与CrScreenshotDxe.efi真有莫名联系?!

本人电脑thinkpad E440,UEFI安全模式下,菜单中ntboot启动fat32分区的wim PE正常,而引导gpt分区表NTFS分区的wim则一直报错(见下图),但grubfmx中的“Boot NT6.x WIM (NTBOOT)”却能正常启动。

  近期在测试grubfmx 7.0b4和7.1.2版时发现因更新删除了  “ CrScreenshotDxe.efi”  ntboot引导也会报同样的错误(有反馈过),于是猜想ntboot是不是和CrScreenshotDxe.efi有关联,试着在grubfmx中补回“ efiload ${prefix}/CrScreenshotDxe.efi” 语句,在我的菜单中也加入一行 “ efiload /efi/boot/CrScreenshotDxe.efi”再“ntboot --efi=(wimboot)/bootmgfw.efi --sdi=(wimboot)/boot.sdi ${grub_file}”结果全部成功引导启动。

疑惑:CrScreenshotDxe.efi与安全启动确实没有直接关系,但通过启动菜单和grubfmx的测试又证明ntboot和
CrScreenshotDxe.efi有着莫名的关联,是本机的个案吗?请W大查验,也请其他坛友测试
------------------------------
进一步测试:同为ntfs分区,ntboot引导,启动U盘ntfs分区中的wim启动正常,gpt分区表ntfs分区的wim必须加 CrScreenshotDxe.efi 才行,猜想CrScreenshotDxe.efi是不是跟gpt分区表有关



作者: wintoflash    时间: 2020-5-19 08:11
ksafei 发表于 2020-5-19 02:39
反馈:NTBOOT与CrScreenshotDxe.efi真有莫名联系?!

本人电脑thinkpad E440,UEFI安全模式下,菜单中nt ...

CrScreenshot.efi 只是个截屏软件。
你下载最新版 grub2,执行 efi_connect_all 试试。

作者: ksafei    时间: 2020-5-19 09:50
wintoflash 发表于 2020-5-19 08:11
CrScreenshot.efi 只是个截屏软件。
你下载最新版 grub2,执行 efi_connect_all 试试。

删除 CrScreenshotDxe.efi 语句,添加 efi_connect_all ,ntboot引导可以正常启动了。感谢W大!
作者: wintoflash    时间: 2020-5-19 10:24
ksafei 发表于 2020-5-19 09:50
删除 CrScreenshotDxe.efi 语句,添加 efi_connect_all ,ntboot引导可以正常启动了。感谢W大!

估计你电脑 UEFI 固件的磁盘驱动有点问题。
作者: ksafei    时间: 2020-5-19 10:45
wintoflash 发表于 2020-5-19 10:24
估计你电脑 UEFI 固件的磁盘驱动有点问题。

此机BIOS已刷官网最新版本(2018-10),还有其他解决方法吗
作者: wintoflash    时间: 2020-5-19 11:14
ksafei 发表于 2020-5-19 10:45
此机BIOS已刷官网最新版本(2018-10),还有其他解决方法吗

那没办法,只能每次进grub2都运行一次。如果你用的是grub2-filemanager,可以在某分区下新建文件夹boot,在boot下新建文件夹grubfm,在 /boot/grubfm下创建文件config。
把 efi_connect_all 写到config里面。
grub2-filemanager每次启动的时候,都会搜索 /boot/grubfm/config 这个文件,并执行里面的内容。

作者: ksafei    时间: 2020-5-19 11:49
wintoflash 发表于 2020-5-19 11:14
那没办法,只能每次进grub2都运行一次。如果你用的是grub2-filemanager,可以在某分区下新建文件夹boot, ...

按此操作,grubfm7.2.0测试还是会报错,麻烦看下是我哪个步骤操作不对

作者: wintoflash    时间: 2020-5-19 12:12
ksafei 发表于 2020-5-19 11:49
按此操作,grubfm7.2.0测试还是会报错,麻烦看下是我哪个步骤操作不对

7.2.0还没有这个命令。你需要自己构建最新版的。
作者: ksafei    时间: 2020-5-19 12:27
wintoflash 发表于 2020-5-19 12:12
7.2.0还没有这个命令。你需要自己构建最新版的。

测试grubfm0518版本启动正常了,谢谢!
作者: PEREZZENG    时间: 2020-5-21 11:58
不错的,可以启动ARM64平台的windows吗?
作者: 807591256    时间: 2020-5-22 07:17
赞一个!
作者: wintoflash    时间: 2020-5-22 09:48
PEREZZENG 发表于 2020-5-21 11:58
不错的,可以启动ARM64平台的windows吗?

目前不能,因为用了一点汇编。
主要是没有 arm 设备,没法测试。
作者: chjyonghu    时间: 2020-5-22 15:53
很给力!
作者: liuzhaoyzz    时间: 2020-5-22 18:28
wintoflash 发表于 2020-5-22 09:48
目前不能,因为用了一点汇编。
主要是没有 arm 设备,没法测试。

懂得c语言就很牛逼了,为啥你还懂汇编!牛逼啊!
作者: wintoflash    时间: 2020-5-22 19:31
liuzhaoyzz 发表于 2020-5-22 18:28
懂得c语言就很牛逼了,为啥你还懂汇编!牛逼啊!

ntboot本身没有用到汇编。只是ntboot依赖于wimboot,而wimboot用了一些汇编。
我基本上不会汇编。
作者: wintoflash    时间: 2020-6-10 20:49
重写了读文件方面的函数,现在 wimboot 的加载速度应该和 ntboot 差不多了。
作者: ksafei    时间: 2020-6-11 00:15
本帖最后由 ksafei 于 2020-6-11 01:07 编辑
wintoflash 发表于 2020-6-10 20:49
重写了读文件方面的函数,现在 wimboot 的加载速度应该和 ntboot 差不多了。

感觉新的wimboot速度是有提高
有个小建议:
“从 ISO 启动winpe” 项启动PE 后会固定Y盘挂载ISO 镜像,而h3pe、usbos等PE默认将Y盘作为挂载软件虚拟盘,这样就造成此类PE 启动后因Y盘被占而无法挂载软件,建议分配盘符后顺延末盘符(第一个可用盘符)挂载镜像以免造成冲突

作者: wintoflash    时间: 2020-6-11 08:15
ksafei 发表于 2020-6-11 00:15
感觉新的wimboot速度是有提高
有个小建议:
“从 ISO 启动winpe” 项启动PE 后会固定Y盘挂载I ...

但是有的PE只认挂载到Y盘的ISO
作者: 江南一根葱    时间: 2020-6-11 13:42
建议挂载统一分配成B盘,B盘不会被占用
作者: yly0001    时间: 2020-6-11 14:06
这个可以启动.vhd的吧?感觉很有意思。
作者: wintoflash    时间: 2020-6-30 20:49
本帖最后由 wintoflash 于 2020-6-30 20:53 编辑

最近这几天研究了一下注册表和BCD相关的一些资料,重写了 ntboot,内部加入了一个自己写得 注册表/BCD 解析器(部分代码抄袭自 ReactOS),加入了修改部分启动参数的功能,仍在测试。

请问有没有大佬知道这个 BCD 项目的功能?
RamdiskExportAsCd

BcdDeviceBoolean_RamdiskExportAsCd
Enables exporting the RAM disk as a CD. The element data format is BcdBooleanElement.
作者: gnuxwy    时间: 2020-6-30 21:59
W大牛比,又完善产品了啊。。。

W大氏问这句美语么?屮美语不行,但这句话の字面意思很简单啊。。。
BcdDeviceBoolean_RamdiskExportAsCd
Enables exporting the RAM disk as a CD. The element data format is BcdBooleanElement.

Bcd设备布尔_内存盘导出作为Cd
使能导出 内存盘作为 CD .这个项目数据格式氏 Bcd布尔项目 .


作者: wintoflash    时间: 2020-6-30 22:04
gnuxwy 发表于 2020-6-30 21:59
W大牛比,又完善产品了啊。。。

W大氏问这句美语么?屮美语不行,但这句话の字面意思很简单啊。。。

我能看懂英语。
我想问的是具体用法。
作者: gnuxwy    时间: 2020-6-30 22:19
我能看懂英语。
我想问的是具体用法。

哦,这个具体用法屮真不懂啊。。。
据字面意思猜测,应该氏 置0 沃 置1 以决定内存盘当作光盘启用氏否生效。。。

只能帮顶了,让大佬们瞧见后告知W大具体用法了。。。


作者: ksafei    时间: 2020-6-30 22:27
本帖最后由 ksafei 于 2020-6-30 22:40 编辑

@nf17b 大神对BCD的研究比较透彻,希望能看到,也许会有帮助
作者: wintoflash    时间: 2020-7-1 19:22
本帖最后由 wintoflash 于 2020-7-1 21:33 编辑

研究了半天还是没搞懂怎么弄 VHD 的 RamOS。发一下测试版本。

  1. Usage: ntboot [--v|-w|-n|-r] [-p] [-e FILE] [-s FILE] [BCD_OPTIONS] FILE
  2. -g, --gui Display graphical boot messages.
  3. -p, --pause Print debug messages and wait for key press.
  4. -e, --efi=FILE Set bootmgfw.efi path.
  5. -s, --sdi=FILE Set boot.sdi path.
  6. FILE TYPE:
  7. -w, --wim Boot WIM.
  8. -n, --win Boot Windows.
  9. -v, --vhd Boot VHD/VHDX.
  10. -r, --ramvhd Boot RamOS VHD. (not work)
  11. BCD OPTION:
  12. --testmode=yes|no Test mode (testsigning).
  13. --highest=yes|no Force highest resolution.
  14. --nx=OptIn|OptOut|AlwaysOff|AlwaysOn Nx policy.
  15. --pae=Default|Enable|Disable PAE policy.
  16. --detecthal=yes|no Detect HAL and kernel.
  17. --winpe=yes|no Boot into WinPE.
  18. --imgoffset=n Set Ramdisk image offset (RamOS VHD).
  19. --timeout=n Set timeout.
  20. --sos=yes|no ???
  21. --novesa=yes|no Avoid VESA BIOS calls.
  22. --novga=yes|no Disable VGA modes.
复制代码

示例:
启动 WinPE WIM (默认 testmode=yes winpe=yes detecthal=yes)
  1. ntboot --efi=/xxx/bootmgfw.efi --sdi=/xxx/boot.sdi --wim /xxx/xxx.wim
  2. ntboot --efi=/xxx/bootmgfw.efi --sdi=/xxx/boot.sdi --wim /xxx/xxx.wim --testmode=no --pae=Enable
复制代码

启动 VHD (默认 testmode=no winpe=no detecthal=yes)
  1. ntboot --efi=/xxx/bootmgfw.efi --vhd /xxx/xxx.vhd
复制代码

启动 Windows 系统 (默认 testmode=no winpe=no detecthal=yes)
  1. ntboot --efi=/xxx/bootmgfw.efi --win (hd0,4)
复制代码

启动 RamOS VHD (未测试成功,默认 testmode=no winpe=no detecthal=yes ramdiskimageoffset=65536)
  1. ntboot --efi=/xxx/bootmgfw.efi --ramvhd /xxx/xxx.vhd
  2. ntboot --efi=/xxx/bootmgfw.efi --ramvhd /xxx/xxx.vhd --imgoffset=33619968 --nx=OptIn
复制代码

作者: ksafei    时间: 2020-7-1 21:04
wintoflash 发表于 2020-7-1 19:22
研究了半天还是没搞懂怎么弄 VHD 的 RamOS。发一下测试版本。

功能加强版,太好了!尤其是--highest 这个参数一直很期待,在UEFI安全启动时很有用
作者: wintoflash    时间: 2020-7-1 21:21
ksafei 发表于 2020-7-1 21:04
功能加强版,太好了!尤其是--highest 这个参数一直很期待,在UEFI安全启动时很有用

这个现在默认是启用的。
作者: ksafei    时间: 2020-7-1 22:08
wintoflash 发表于 2020-7-1 21:21
这个现在默认是启用的。

测试了ntboot wim功能,正常,以前 UEFI安全启动时分辨率低的问题也解决了,感谢!
作者: wintoflash    时间: 2020-7-4 19:28
本帖最后由 wintoflash 于 2020-7-9 21:03 编辑

测试版本
[attach]460908[/attach]
现在 wimboot 和 ntboot 模块在 Legacy BIOS 下也可用了。
wimboot 启动时不再需要提供 boot.sdi 和 bcd 文件,优先使用内置的 boot.sdi 和 bcd。
如果使用的是内置的 bcd ,可以通过一些选项修改 bcd 的配置。
另外,ntboot 也不再需要提供 boot.sdi 文件。
示例:
wimboot 启动 WIM
  1. wimboot @:bootmgfw.efi:/boot/grub/bootmgfw.efi @:boot.wim:/wim/wepe.wim
复制代码

wimboot 启动 WIM,关闭测试模式,启用 PAE
  1. wimboot --testmode=no --pae=Enable @:bootmgfw.efi:/boot/grub/bootmgfw.efi @:boot.wim:/wim/wepe.wim
复制代码

ntboot 启动 WIM
  1. ntboot --efi=/xxx/bootmgfw.efi --wim /xxx/xxx.wim
复制代码



作者: ggmm888    时间: 2020-7-4 19:38
功能增加
作者: ksafei    时间: 2020-7-4 20:15
wintoflash 发表于 2020-7-4 19:28
测试版本

现在 wimboot 和 ntboot 模块在 Legacy BIOS 下也可用了。

功能又增强了,大赞!
作者: 青青草    时间: 2020-7-4 22:30
wintoflash 发表于 2020-7-4 19:28
测试版本

现在 wimboot 和 ntboot 模块在 Legacy BIOS 下也可用了。

在 Legacy BIOS 下与在 UEFI  BIOS 下的写法一样吗?
作者: wintoflash    时间: 2020-7-4 22:57
青青草 发表于 2020-7-4 22:30
在 Legacy BIOS 下与在 UEFI  BIOS 下的写法一样吗?

完全一样,只是uefi用bootmgfw.efi,bios用bootmgr.exe
作者: 青青草    时间: 2020-7-4 23:08
本帖最后由 青青草 于 2020-7-4 23:39 编辑
wintoflash 发表于 2020-7-4 19:28
测试版本

现在 wimboot 和 ntboot 模块在 Legacy BIOS 下也可用了。

解决了。在 Legacy BIOS 和 UEFI BIOS 下,都进行了测试,完美。



作者: hilsonma    时间: 2020-7-5 06:01
wintoflash 发表于 2020-7-4 19:28
测试版本

现在 wimboot 和 ntboot 模块在 Legacy BIOS 下也可用了。

在U盘上试了,成功。

u盘 uefi ntboot 我修改过的微pe 用时约21秒
  1. ntboot -e $prefix/run/ms/bootmgfw.efi -w /diy/pe.wim
复制代码


u盘 uefi wimboot 我修改过的微pe 用时约23秒
  1. wimboot @:bootmgfw.efi:$prefix/run/ms/bootmgfw.efi @:boot.wim:/diy/pe.wim
复制代码


u盘 bios ntboot 我修改过的微pe 用时约22秒
  1. ntboot -e $prefix/run/ms/bootmgr.exe -w /diy/pe.wim
复制代码


u盘 bios wimboot 我修改过的微pe 用时约26秒
  1. wimboot @:bootmgr.exe:$prefix/run/ms/bootmgr.exe @:boot.wim:/diy/pe.wim
复制代码





欢迎光临 无忧启动论坛 (http://bbs.c3.wuyou.net/) Powered by Discuz! X3.3