无忧启动论坛

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

[原创] NTBOOT & wimboot for UEFI GRUB2

    [复制链接]
61#
 楼主| 发表于 2020-5-10 18:21:31 | 只看该作者
实际测试了下,ntboot启动pe.wim比wimboot启动pe.wim速度大概快11-14秒

这个我以前说过。wimboot情况下wim是在一个fat32的虚拟盘上,bootmgfw读盘实际调用的是grub2读盘。
回复

使用道具 举报

62#
 楼主| 发表于 2020-5-10 18:25:04 | 只看该作者
liuzhaoyzz 发表于 2020-5-10 16:06
1、实际测试了下,ntboot启动pe.wim比wimboot启动pe.wim速度大概快11-14秒。
2、ntboot不能用于pxe启动, ...
ntboot不能用于pxe启动,提示出错。

ntboot是chenall的ntboot的复刻。
这个chenall实现不了,我也一样。

点评

知道了。 ntboot与wimboot对比下,ntboot用于本地速度加载要快点,wimboot适用性要广泛点。 感觉您移植的wimboot模块在本地稳定性挺好,就是加载速度不快,用于pxe启动的时候,总感觉不是那么稳定,比如显示传输  详情 回复 发表于 2020-5-11 08:52
回复

使用道具 举报

63#
发表于 2020-5-11 08:52:53 | 只看该作者
本帖最后由 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相对比,就发到这个帖子吧。
回复

使用道具 举报

64#
发表于 2020-5-12 13:38:04 | 只看该作者
谢谢分享
回复

使用道具 举报

65#
发表于 2020-5-19 02:39:38 | 只看该作者
本帖最后由 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分区表有关


点评

CrScreenshot.efi 只是个截屏软件。 你下载最新版 grub2,执行 efi_connect_all 试试。  详情 回复 发表于 2020-5-19 08:11
回复

使用道具 举报

66#
 楼主| 发表于 2020-5-19 08:11:55 | 只看该作者
ksafei 发表于 2020-5-19 02:39
反馈:NTBOOT与CrScreenshotDxe.efi真有莫名联系?!

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

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

点评

删除 CrScreenshotDxe.efi 语句,添加 efi_connect_all ,ntboot引导可以正常启动了。感谢W大!  详情 回复 发表于 2020-5-19 09:50
回复

使用道具 举报

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

删除 CrScreenshotDxe.efi 语句,添加 efi_connect_all ,ntboot引导可以正常启动了。感谢W大!

点评

试试最新版grub2,不用 efi_connect_all ,会不会报这个错。 去年11月4日的 commit 修复了一个可能和这个相关的问题。 https://github.com/a1ive/grub/commit/f9761214f93c3400ea13d95fe79b4af608976394#diff-b67e  详情 回复 发表于 2021-1-16 15:33
估计你电脑 UEFI 固件的磁盘驱动有点问题。  详情 回复 发表于 2020-5-19 10:24
回复

使用道具 举报

68#
 楼主| 发表于 2020-5-19 10:24:22 | 只看该作者
ksafei 发表于 2020-5-19 09:50
删除 CrScreenshotDxe.efi 语句,添加 efi_connect_all ,ntboot引导可以正常启动了。感谢W大!

估计你电脑 UEFI 固件的磁盘驱动有点问题。

点评

此机BIOS已刷官网最新版本(2018-10),还有其他解决方法吗  详情 回复 发表于 2020-5-19 10:45
回复

使用道具 举报

69#
发表于 2020-5-19 10:45:22 | 只看该作者
wintoflash 发表于 2020-5-19 10:24
估计你电脑 UEFI 固件的磁盘驱动有点问题。

此机BIOS已刷官网最新版本(2018-10),还有其他解决方法吗

点评

那没办法,只能每次进grub2都运行一次。如果你用的是grub2-filemanager,可以在某分区下新建文件夹boot,在boot下新建文件夹grubfm,在 /boot/grubfm下创建文件config。 把 efi_connect_all 写到config里面。 grub  详情 回复 发表于 2020-5-19 11:14
回复

使用道具 举报

70#
 楼主| 发表于 2020-5-19 11:14:29 | 只看该作者
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 这个文件,并执行里面的内容。

点评

按此操作,grubfm7.2.0测试还是会报错,麻烦看下是我哪个步骤操作不对[attachimg]457113[/attachimg]  详情 回复 发表于 2020-5-19 11:49
回复

使用道具 举报

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

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

点评

7.2.0还没有这个命令。你需要自己构建最新版的。  详情 回复 发表于 2020-5-19 12:12
回复

使用道具 举报

72#
 楼主| 发表于 2020-5-19 12:12:03 | 只看该作者
ksafei 发表于 2020-5-19 11:49
按此操作,grubfm7.2.0测试还是会报错,麻烦看下是我哪个步骤操作不对

7.2.0还没有这个命令。你需要自己构建最新版的。

点评

测试grubfm0518版本启动正常了,谢谢!  详情 回复 发表于 2020-5-19 12:27
回复

使用道具 举报

73#
发表于 2020-5-19 12:27:16 | 只看该作者
wintoflash 发表于 2020-5-19 12:12
7.2.0还没有这个命令。你需要自己构建最新版的。

测试grubfm0518版本启动正常了,谢谢!
回复

使用道具 举报

74#
发表于 2020-5-21 11:58:39 | 只看该作者
不错的,可以启动ARM64平台的windows吗?

点评

目前不能,因为用了一点汇编。 主要是没有 arm 设备,没法测试。  详情 回复 发表于 2020-5-22 09:48
回复

使用道具 举报

75#
发表于 2020-5-22 07:17:26 | 只看该作者
赞一个!
回复

使用道具 举报

76#
 楼主| 发表于 2020-5-22 09:48:34 | 只看该作者
PEREZZENG 发表于 2020-5-21 11:58
不错的,可以启动ARM64平台的windows吗?

目前不能,因为用了一点汇编。
主要是没有 arm 设备,没法测试。

点评

w大,您好! 这个项目现在支不支持arm64 aarch64 架构,还有如何编译出arm64-efi的全套二进制模块(需要包含ntboot.mod在oracle vps上 grub chainload armwin用)  详情 回复 发表于 2022-4-19 11:39
懂得c语言就和牛逼了,为啥你还懂汇编!牛逼啊!  详情 回复 发表于 2020-5-22 18:28
回复

使用道具 举报

77#
发表于 2020-5-22 15:53:50 | 只看该作者
很给力!
回复

使用道具 举报

78#
发表于 2020-5-22 18:28:17 | 只看该作者
wintoflash 发表于 2020-5-22 09:48
目前不能,因为用了一点汇编。
主要是没有 arm 设备,没法测试。

懂得c语言就很牛逼了,为啥你还懂汇编!牛逼啊!

点评

ntboot本身没有用到汇编。只是ntboot依赖于wimboot,而wimboot用了一些汇编。 我基本上不会汇编。  详情 回复 发表于 2020-5-22 19:31
回复

使用道具 举报

79#
 楼主| 发表于 2020-5-22 19:31:37 | 只看该作者
liuzhaoyzz 发表于 2020-5-22 18:28
懂得c语言就很牛逼了,为啥你还懂汇编!牛逼啊!

ntboot本身没有用到汇编。只是ntboot依赖于wimboot,而wimboot用了一些汇编。
我基本上不会汇编。
回复

使用道具 举报

80#
 楼主| 发表于 2020-6-10 20:49:08 | 只看该作者
重写了读文件方面的函数,现在 wimboot 的加载速度应该和 ntboot 差不多了。

点评

感觉新的wimboot速度是有提高 有个小建议: “从 ISO 启动winpe” 项启动PE 后会固定Y盘挂载ISO 镜像,而h3pe、usbos等PE默认将Y盘作为挂载软件虚拟盘,这样就造成此类PE 启动后因Y盘被占而无法挂载软件  详情 回复 发表于 2020-6-11 00:15
回复

使用道具 举报

81#
发表于 2020-6-11 00:15:20 | 只看该作者
本帖最后由 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盘被占而无法挂载软件,建议分配盘符后顺延末盘符(第一个可用盘符)挂载镜像以免造成冲突

点评

但是有的PE只认挂载到Y盘的ISO  详情 回复 发表于 2020-6-11 08:15
回复

使用道具 举报

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

但是有的PE只认挂载到Y盘的ISO
回复

使用道具 举报

83#
发表于 2020-6-11 13:42:38 | 只看该作者
建议挂载统一分配成B盘,B盘不会被占用
回复

使用道具 举报

84#
发表于 2020-6-11 14:06:53 | 只看该作者
这个可以启动.vhd的吧?感觉很有意思。
回复

使用道具 举报

85#
 楼主| 发表于 2020-6-30 20:49:54 | 只看该作者
本帖最后由 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.
回复

使用道具 举报

86#
发表于 2020-6-30 21:59:01 | 只看该作者
W大牛比,又完善产品了啊。。。

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

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

点评

我能看懂英语。 我想问的是具体用法。  详情 回复 发表于 2020-6-30 22:04
回复

使用道具 举报

87#
 楼主| 发表于 2020-6-30 22:04:50 | 只看该作者
gnuxwy 发表于 2020-6-30 21:59
W大牛比,又完善产品了啊。。。

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

我能看懂英语。
我想问的是具体用法。
回复

使用道具 举报

88#
发表于 2020-6-30 22:19:31 | 只看该作者
我能看懂英语。
我想问的是具体用法。

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

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

回复

使用道具 举报

89#
发表于 2020-6-30 22:27:59 | 只看该作者
本帖最后由 ksafei 于 2020-6-30 22:40 编辑

@nf17b 大神对BCD的研究比较透彻,希望能看到,也许会有帮助
回复

使用道具 举报

90#
 楼主| 发表于 2020-7-1 19:22:28 | 只看该作者
本帖最后由 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
复制代码

点评

建议启动pe默认 testmode=no 这样无需设置此参数也不会出现测试模式水印 bcd默认设置本来也是默认 testmode=no 的  详情 回复 发表于 2020-7-5 07:58
功能加强版,太好了!尤其是--highest 这个参数一直很期待,在UEFI安全启动时很有用  详情 回复 发表于 2020-7-1 21:04
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-4-20 04:02

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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