无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
楼主: wintoflash
打印 上一主题 下一主题

[原创] NTBOOT & wimboot for UEFI GRUB2

    [复制链接]
91#
发表于 2020-7-1 21:04:50 | 只看该作者
wintoflash 发表于 2020-7-1 19:22
研究了半天还是没搞懂怎么弄 VHD 的 RamOS。发一下测试版本。

功能加强版,太好了!尤其是--highest 这个参数一直很期待,在UEFI安全启动时很有用

点评

这个现在默认是启用的。  详情 回复 发表于 2020-7-1 21:21
回复

使用道具 举报

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

这个现在默认是启用的。

点评

测试了ntboot wim功能,正常,以前 UEFI安全启动时分辨率低的问题也解决了,感谢!  详情 回复 发表于 2020-7-1 22:08
回复

使用道具 举报

93#
发表于 2020-7-1 22:08:07 | 只看该作者
wintoflash 发表于 2020-7-1 21:21
这个现在默认是启用的。

测试了ntboot wim功能,正常,以前 UEFI安全启动时分辨率低的问题也解决了,感谢!
回复

使用道具 举报

94#
 楼主| 发表于 2020-7-4 19:28:15 | 只看该作者
本帖最后由 wintoflash 于 2020-7-9 21:03 编辑

测试版本

现在 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
复制代码


点评

ntboot可以启动指定的WIM卷号吗?  详情 回复 发表于 2020-7-11 13:43
在U盘上试了,成功。 u盘 uefi ntboot 我修改过的微pe 用时约21秒 u盘 uefi wimboot 我修改过的微pe 用时约23秒 u盘 bios ntboot 我修改过的微pe 用时约22秒 u盘 bios wimboot 我修改过的微pe 用  详情 回复 发表于 2020-7-5 06:01
在 Legacy BIOS 下: ntboot --exe=/xxx/bootmgr.exe --wim /xxx/xxx.wim 这样书写正确么?  详情 回复 发表于 2020-7-4 23:08
在 Legacy BIOS 下与在 UEFI BIOS 下的写法一样吗?  详情 回复 发表于 2020-7-4 22:30
功能又增强了,大赞!  详情 回复 发表于 2020-7-4 20:15
回复

使用道具 举报

95#
发表于 2020-7-4 19:38:00 | 只看该作者
功能增加
回复

使用道具 举报

96#
发表于 2020-7-4 20:15:45 | 只看该作者
wintoflash 发表于 2020-7-4 19:28
测试版本

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

功能又增强了,大赞!
回复

使用道具 举报

97#
发表于 2020-7-4 22:30:33 | 只看该作者
wintoflash 发表于 2020-7-4 19:28
测试版本

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

在 Legacy BIOS 下与在 UEFI  BIOS 下的写法一样吗?

点评

完全一样,只是uefi用bootmgfw.efi,bios用bootmgr.exe  详情 回复 发表于 2020-7-4 22:57
回复

使用道具 举报

98#
 楼主| 发表于 2020-7-4 22:57:27 | 只看该作者
青青草 发表于 2020-7-4 22:30
在 Legacy BIOS 下与在 UEFI  BIOS 下的写法一样吗?

完全一样,只是uefi用bootmgfw.efi,bios用bootmgr.exe
回复

使用道具 举报

99#
发表于 2020-7-4 23:08:23 | 只看该作者
本帖最后由 青青草 于 2020-7-4 23:39 编辑
wintoflash 发表于 2020-7-4 19:28
测试版本

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

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


回复

使用道具 举报

100#
发表于 2020-7-5 06:01:44 | 只看该作者
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
复制代码
回复

使用道具 举报

101#
发表于 2020-7-5 07:28:27 | 只看该作者
bios ntboot 启动vhd失败: (uefi 启动成功)

点评

http://reboot.pro/topic/20695-ntboot-problem-using-windows-10-bootmgr-to-boot-vhds-bsod-0xc00000bb/#entry194966 用这个 bootmgr.exe 不过 BIOS 下的兼容性也不好,因为我的汇编水平不行。 还是建议用 gr  详情 回复 发表于 2020-7-5 08:18
回复

使用道具 举报

102#
发表于 2020-7-5 07:58:45 | 只看该作者
本帖最后由 hilsonma 于 2020-7-5 08:20 编辑
wintoflash 发表于 2020-7-1 19:22
研究了半天还是没搞懂怎么弄 VHD 的 RamOS。发一下测试版本。
**** 本内容被作者隐藏 ****

建议启动pe默认 testmode=no
这样无需设置此参数也不会出现测试模式水印
bcd默认设置本来也是默认 testmode=no 的

就我所知,启动pe只需修改以下属性,其他保持默认即可:
description
device
osdevice
systemroot
detecthal
winpe
nointegritychecks
ramdisksdidevice
ramdisksdipath

点评

device 和 os device 是wimboot/ntboot内部BCD解析器处理的时候自动填的。 systemroot 这个属性,正常人不会改。 detecthal 和 winpe,bootice 默认开启。winpe 不开就进不去。 nointegritychecks,这个必  详情 回复 发表于 2020-7-5 08:36
回复

使用道具 举报

103#
 楼主| 发表于 2020-7-5 08:18:44 | 只看该作者
hilsonma 发表于 2020-7-5 07:28
bios ntboot 启动vhd失败: (uefi 启动成功)

http://reboot.pro/topic/20695-nt ... 0000bb/#entry194966
用这个 bootmgr.exe
bootmgr.tar.gz (349.69 KB, 下载次数: 33)
不过 BIOS 下的兼容性也不好,因为我的汇编水平不行。
还是建议用 grub4dos。
建议启动pe默认 testmode=no

好。
wimboot @:bootmgr.exe:$prefix/run/ms/bootmgr.exe @:boot.wim:/diy/pe.wim

其实可以直接
wimboot @:bootmgfw.efi:$prefix/run/ms/bootmgr.exe ...
BIOS 启动的时候会自动把 bootmgfw.efi 当成 bootmgr.exe,这样方便写菜单。

点评

使用该bootmgr.exe+ntboot成功引导vhdx 旧台式电脑,bios+mbr,有三块硬盘,其中ssd检测出问题,上面有引导分区和系统分区,担心突然坏掉,就在第一块机械硬盘上做了一个备份引导,并用vhdx做了一个备份系统 折腾  详情 回复 发表于 2022-10-13 22:36
还是失败,只是提示由: Status: 0xc00000bb 变成: Status: 0xc0000102  详情 回复 发表于 2020-7-5 08:32
回复

使用道具 举报

104#
发表于 2020-7-5 08:32:12 | 只看该作者
本帖最后由 hilsonma 于 2020-7-5 08:43 编辑
用这个 bootmgr.exe

还是失败,只是提示由:
Status: 0xc00000bb
变成:
Status: 0xc0000102
如果麻烦就算了,确实g4d兼容要好些,毕竟是多人长期努力的成果。
这一年多你自己一人将grub2增强成现在这样已经很不错了。
如果只是官方那个版本是不适合我使用的。
回复

使用道具 举报

105#
 楼主| 发表于 2020-7-5 08:36:26 | 只看该作者
hilsonma 发表于 2020-7-5 07:58
建议启动pe默认 testmode=no
这样无需设置此参数也不会出现测试模式水印
bcd默认设置本来也是默认 test ...

就我所知,启动pe只需修改以下属性,其他保持默认即可:
description
device
osdevice
systemroot
detecthal
winpe
nointegritychecks
ramdisksdidevice
ramdisksdipath

device 和 os device 是wimboot/ntboot内部BCD解析器处理的时候自动填的。
systemroot 这个属性,正常人不会改。
detecthal 和 winpe,bootice 默认开启。winpe 不开就进不去。
nointegritychecks,这个必须开,我没提供选项。
novga 和 novesa,是给 win7 uefi 启动用的。
pae,是给 32 位 Windows 用的。
nx,是给一些 VHD (RamOS) 和开发者用的。
timeout,是我自己用来方便调试的,在 bcd 菜单界面按 F10 可以编辑启动参数。
还是失败,只是提示由:
Status: 0xc00000bb
变成:
Status: 0xc0000102

没见过这个错误,有图吗?

点评

建议timeout默认0,默认不显示bcd菜单,需要时才显示。  详情 回复 发表于 2020-7-10 07:21
[attachimg]460936[/attachimg]  详情 回复 发表于 2020-7-5 08:47
回复

使用道具 举报

106#
发表于 2020-7-5 08:47:55 | 只看该作者
wintoflash 发表于 2020-7-5 08:36
device 和 os device 是wimboot/ntboot内部BCD解析器处理的时候自动填的。
systemroot 这个属性,正 ...


点评

那我还真不知道怎么办了。BIOS就这样吧,反正也没几个人用。  详情 回复 发表于 2020-7-5 09:05
回复

使用道具 举报

107#
 楼主| 发表于 2020-7-5 09:05:13 | 只看该作者

那我还真不知道怎么办了。BIOS就这样吧,反正也没几个人用。
回复

使用道具 举报

108#
发表于 2020-7-8 12:25:40 | 只看该作者
https://github.com/a1ive/grub/co ... 6242a8511bfd599d0b9开始,terminal_output gfxterm 在某些电脑上会导致黑屏(uefi 启动时菜单不显示,但会倒计时并启动)。

set timeout="5"
set default="0"

font=/boot/grub2/fonts/unicode.pf2
if loadfont ${font}; then
set locale_dir=/boot/grub2/locale
set lang=zh_cn
fi

terminal_output gfxterm

menuentry "test 测试" {
search -f -s  /EFI/Microsoft/Boot/bootmgfw.efi
chainloader /EFI/Microsoft/Boot/bootmgfw.efi
}

点评

是不是输出到其他显示器/端口上了? 执行 terminal_output console,再执行 terminal_output gfxterm 呢?  详情 回复 发表于 2020-7-8 14:17
把配置文件编码改为UTF8-BOM试下  详情 回复 发表于 2020-7-8 12:54
回复

使用道具 举报

109#
发表于 2020-7-8 12:54:51 | 只看该作者

把配置文件编码改为UTF-8 BOM试下

点评

GRUB2 不支持 UTF-8 BOM。  详情 回复 发表于 2020-7-8 18:29
确实如此。  发表于 2020-7-8 13:43
回复

使用道具 举报

110#
 楼主| 发表于 2020-7-8 14:17:02 | 只看该作者
adef 发表于 2020-7-8 12:25
从https://github.com/a1ive/grub/commit/de2bb17cd61c31f5a459b6242a8511bfd599d0b9开始,terminal_output ...

是不是输出到其他显示器/端口上了?
执行 terminal_output console,再执行 terminal_output gfxterm 呢?

点评

terminal_output gfxterm 前面加一句 terminal_output console 还是黑屏。 一个U盘上的配置文件改为 UTF-8 BOM 后,确实能看到菜单了,但是另一个U盘如法炮制却仍然黑屏。现在还是改为以前的 UTF-8 NO BOM 了,反  详情 回复 发表于 2020-7-8 18:51
回复

使用道具 举报

111#
 楼主| 发表于 2020-7-8 18:29:09 | 只看该作者
ksafei 发表于 2020-7-8 12:54
把配置文件编码改为UTF-8 BOM试下

GRUB2 不支持 UTF-8 BOM。

点评

哈哈,我的电脑不改UTF-8 BOM就黑屏,实属无奈 不过,刚试了最新版用UTF-8现在显示正常了  详情 回复 发表于 2020-7-8 21:44
回复

使用道具 举报

112#
发表于 2020-7-8 18:51:15 | 只看该作者
wintoflash 发表于 2020-7-8 14:17
是不是输出到其他显示器/端口上了?
执行 terminal_output console,再执行 terminal_output gfxterm 呢 ...

terminal_output gfxterm 前面加一句 terminal_output console 还是黑屏。
一个U盘上的配置文件改为 UTF-8 BOM 后,确实能看到菜单了,但是另一个U盘如法炮制却仍然黑屏。现在还是改为以前的 UTF-8 NO BOM 了,反正没事重新编译了一下。
其实试了几台不同的电脑,就一个老本本有这个黑屏的问题,其他的台式机和本本都没问题。小概率事件吧。

点评

我已经改回原来的语句了 https://github.com/a1ive/grub/commit/ecab7b52f4c377520b1a89149a877a013823217a 总感觉黑屏可能是因为切换显示模式的时候需要输出点什么东西  详情 回复 发表于 2020-7-8 20:58
回复

使用道具 举报

113#
 楼主| 发表于 2020-7-8 20:58:26 | 只看该作者
adef 发表于 2020-7-8 18:51
terminal_output gfxterm 前面加一句 terminal_output console 还是黑屏。
一个U盘上的配置文件改为 UT ...

我已经改回原来的语句了
https://github.com/a1ive/grub/co ... 9149a877a013823217a
总感觉黑屏可能是因为切换显示模式的时候需要输出点什么东西
回复

使用道具 举报

114#
发表于 2020-7-8 21:44:12 | 只看该作者
wintoflash 发表于 2020-7-8 18:29
GRUB2 不支持 UTF-8 BOM。

哈哈,我的电脑不改UTF-8 BOM就黑屏,实属无奈
不过,刚试了最新版用UTF-8现在显示正常了
回复

使用道具 举报

115#
发表于 2020-7-10 07:21:04 | 只看该作者
wintoflash 发表于 2020-7-5 08:36
device 和 os device 是wimboot/ntboot内部BCD解析器处理的时候自动填的。
systemroot 这个属性,正 ...
timeout,是我自己用来方便调试的,在 bcd 菜单界面按 F10 可以编辑启动参数


建议timeout默认0,默认不显示bcd菜单,需要时才显示。

点评

timeout 改成 0 有时候好像有问题,会直接停在 bcd 菜单上  详情 回复 发表于 2020-7-10 08:15
回复

使用道具 举报

116#
 楼主| 发表于 2020-7-10 08:15:00 | 只看该作者
hilsonma 发表于 2020-7-10 07:21
建议timeout默认0,默认不显示bcd菜单,需要时才显示。

timeout 改成 0 有时候好像有问题,会直接停在 bcd 菜单上

点评

有没有试过 displaybootmenu 0  详情 回复 发表于 2020-7-24 17:13
回复

使用道具 举报

117#
发表于 2020-7-11 13:43:22 | 只看该作者
wintoflash 发表于 2020-7-4 19:28
测试版本

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

ntboot可以启动指定的WIM卷号吗?

点评

wimboot可以,ntboot不行  详情 回复 发表于 2020-7-11 13:47
回复

使用道具 举报

118#
 楼主| 发表于 2020-7-11 13:47:53 | 只看该作者
青青草 发表于 2020-7-11 13:43
ntboot可以启动指定的WIM卷号吗?

wimboot可以,ntboot不行

点评

谢谢!  详情 回复 发表于 2020-7-11 16:24
回复

使用道具 举报

119#
发表于 2020-7-11 16:24:59 | 只看该作者
wintoflash 发表于 2020-7-11 13:47
wimboot可以,ntboot不行

谢谢!
回复

使用道具 举报

120#
发表于 2020-7-14 08:11:16 | 只看该作者
请教大神:
grub2能否判断 WIM 内部系统是 64 位还是32位?

点评

目前是根据 wim 内部 \Windows\System32\Boot\winload.exe 判断的,不知道是否准确。 https://github.com/a1ive/grub2-filemanager/blob/c4d790157e204fb6e8551df4eec75e855081f985/boot/grubfm/rules/iso/buildp  详情 回复 发表于 2020-7-14 08:49
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-11-22 04:46

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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