2011npwjm
发表于 2020-7-14 08:35:52
谢谢楼主的分享
wintoflash
发表于 2020-7-14 08:49:17
本帖最后由 wintoflash 于 2020-7-14 08:51 编辑
青青草 发表于 2020-7-14 08:11
请教大神:
grub2能否判断 WIM 内部系统是 64 位还是32位?
目前是根据 wim 内部 \Windows\System32\Boot\winload.exe 判断的,不知道是否准确。
wimtools --is64 /wim/wepe.wim; echo $?
示例
https://github.com/a1ive/grub2-f ... s/iso/buildpe.sh#L4
wimtools 详细用法见
https://a1ive.github.io/grub2_cmd_zh.html
青青草
发表于 2020-7-14 15:52:17
wintoflash 发表于 2020-7-14 08:49
目前是根据 wim 内部 \Windows\System32\Boot\winload.exe 判断的,不知道是否准确。
示例
学习了。
反馈:
if wimtools --is64 --index=1 "${filename_this}";then
成功!
if wimtools --exist --is64 --index=1 "${filename_this}";then 则失败。
wintoflash
发表于 2020-7-14 17:11:01
青青草 发表于 2020-7-14 15:52
学习了。
反馈:
if wimtools --is64 --index=1 "${filename_this}";then
if wimtools --exist --is64 --index=1 "${filename_this}";then 则失败。
你这个用法莫名其妙,完全不正确。
--exist 是判断 WIM 内部是否存在某文件的,比如
wimtools --exist /wim/boot.wim \\Windows\\System32\\abcd.exe
青青草
发表于 2020-7-14 17:18:35
wintoflash 发表于 2020-7-14 17:11
你这个用法莫名其妙,完全不正确。
--exist 是判断 WIM 内部是否存在某文件的,比如
wimtools --exis ...
--exist, -e 检测文件是否存在
我以为是检测指定的WIM卷号是否存在。理解错了!
谢谢!
wintoflash
发表于 2020-7-14 18:01:50
青青草 发表于 2020-7-14 17:18
--exist, -e 检测文件是否存在
我以为是检测指定的WIM卷号是否存在。理解错了!
谢谢!
检测指定的WIM卷号是否存在
如果需要这个功能的人很多,我可以加上这个功能。
青青草
发表于 2020-7-14 18:32:16
wintoflash 发表于 2020-7-14 18:01
如果需要这个功能的人很多,我可以加上这个功能。
如果能加上这个功能,哪是再好不过了!
谢谢!
创新科技2015
发表于 2020-7-16 07:37:56
很给力!
青青草
发表于 2020-7-16 19:37:32
wintoflash 发表于 2020-7-14 18:01
如果需要这个功能的人很多,我可以加上这个功能。
建议增加的功能:
1、读取WIM中的总卷数;
2、判断指定的WIM卷号是否存在;
wintoflash
发表于 2020-7-16 20:19:02
青青草 发表于 2020-7-16 19:37
建议增加的功能:
1、读取WIM中的总卷数;
2、判断指定的WIM卷号是否存在;
功能2是功能1的子集,没必要存在。
wintoflash
发表于 2020-7-16 20:58:22
更新了一下 wimboot/NTBOOT 的使用说明,顺便添加了原理介绍。
如果有朋友对 BCD/注册表感性趣,可以参考以下文章:
注册表文件结构解析 https://github.com/libyal/libregf/blob/master/documentation/Windows%20NT%20Registry%20File%20(REGF)%20format.asciidoc
BCD 元素文档 https://www.geoffchappell.com/notes/windows/boot/bcd/elements.htm
NTBOOT 原理 http://bbs.wuyou.net/forum.php?mod=viewthread&tid=417518
我参考 quibble 修改的注册表解析代码 https://github.com/a1ive/grub/blob/master/grub-core/map/lib/reg.c
如果对 boot.sdi 感性趣,可以参考以下文章:
SDI 结构解析 https://skolk.livejournal.com/1320.html
boot.sdi 制作方法 http://bbs.wuyou.net/forum.php?mod=viewthread&tid=421193
青青草
发表于 2020-7-16 22:22:36
wintoflash 发表于 2020-7-16 20:19
功能2是功能1的子集,没必要存在。
的确,功能2与功能1重复。如果可以,
1、读取WIM中的总卷数;
2、读取卷号对应的卷名称。
青青草
发表于 2020-7-17 18:45:27
wintoflash 发表于 2020-7-14 17:11
你这个用法莫名其妙,完全不正确。
--exist 是判断 WIM 内部是否存在某文件的,比如
wimtools --exis ...
请教一下,
if wimtools --is64 --index=1 "${filename_this}";then
红色字的地方可以用变量么?
wintoflash
发表于 2020-7-17 20:20:47
更新
1. 支持 XPRESS 压缩的 WIM。
2. wimtools 添加 --boot_index 和 --image_count 参数。
获取 wim 的总卷数:
wimtools --image_count=aaa (loop)/sources/install.wim; echo $aaa
获取 wim 可启动卷的卷号:
wimtools --boot_index=aaa (loop)/sources/boot.wim; echo $aaa
xgh8448
发表于 2020-7-18 09:14:56
支持一下,谢谢分享
青青草
发表于 2020-7-18 09:15:59
本帖最后由 青青草 于 2020-7-18 10:48 编辑
wintoflash 发表于 2020-7-17 20:20
更新
1. 支持 XPRESS 压缩的 WIM。
2. wimtools 添加 --boot_index 和 --image_count 参数。
获取 wim 可启动卷的卷号:
wimtools --boot_index=bbb (loop)/sources/boot.wim;
1、假如wim中可启动的有三个卷,那么,获取的卷号是?
我这里,
wimtools --image_count=aaa (loop)/sources/install.wim;
$aaa显示3
wimtools --boot_index=bbb (loop)/sources/boot.wim;
$bbb显示1
2、假如wim中可启动的有三个卷,如何用循环语句读取其卷号?
谢谢!
wintoflash
发表于 2020-7-18 10:14:06
青青草 发表于 2020-7-18 09:15
获取 wim 可启动卷的卷号:
wimtools --boot_index=bbb (loop)/sources/boot.wim;
boot_index 是你用 bootmgfw.efi 启动时默认启动的卷号,这种可启动卷当然只能有一个。
青青草
发表于 2020-7-18 10:50:06
本帖最后由 青青草 于 2020-7-18 10:54 编辑
wintoflash 发表于 2020-7-18 10:14
boot_index 是你用 bootmgfw.efi 启动时默认启动的卷号,这种可启动卷当然只能有一个。
假如wim中可启动的有{aaa}个卷,如何用循环语句读取其卷号?目的是通过循环语句分别显示{aaa}个菜单,启动各个卷
wintoflash
发表于 2020-7-18 11:07:42
本帖最后由 wintoflash 于 2020-7-18 11:09 编辑
青青草 发表于 2020-7-18 10:50
假如wim中可启动的有{aaa}个卷,如何用循环语句读取其卷号?目的是通过循环语句分别显示{aaa}个菜单,启 ...
你说的 "可启动" 跟我说的 "可启动" 不是一码事。wimboot 可以启动任意卷,是不是可启动都没关系,只要卷里面不缺文件。
卷号是从1开始到总卷数的连续自然数,你每次加 1 就行了,不存在所谓 "读取" 的问题。
至于菜单怎么写,那你自己研究。论坛里有很多类似的例子。
青青草
发表于 2020-7-18 11:11:32
wintoflash 发表于 2020-7-18 11:07
你说的 "可启动" 跟我说的 "可启动" 不是一码事。wimboot 可以启动任意卷,是不是可启动都没关系,只要卷 ...
已经解决了!谢谢!
青青草
发表于 2020-7-18 11:53:48
wintoflash 发表于 2020-7-18 11:07
你说的 "可启动" 跟我说的 "可启动" 不是一码事。wimboot 可以启动任意卷,是不是可启动都没关系,只要卷 ...
再请教个问题:
wimboot --index=1@:bootmgfw.efi:(memdisk)/boot/grub/bootmgfw.efi @:boot.wim:"${filename_this}"
可以启动。
wimboot --index="${bbb}"@:bootmgfw.efi:(memdisk)/boot/grub/bootmgfw.efi @:boot.wim:"${filename_this}"
无法启动。【${bbb}值为1】
如图。
wintoflash
发表于 2020-7-18 12:01:01
青青草 发表于 2020-7-18 11:53
再请教个问题:
wimboot --index=1@:bootmgfw.efi:(memdisk)/boot/grub/bootmgfw.efi @:boot.w ...
你这明明是启动的第三个卷
青青草
发表于 2020-7-18 12:11:31
本帖最后由 青青草 于 2020-7-18 12:16 编辑
wintoflash 发表于 2020-7-18 12:01
你这明明是启动的第三个卷
我的菜单:
menuentry "[${sequence}] 启动 ${name}卷${bbb}(${device})" "${device}" "${filename}" --unrestricted --hotkey="${sequence}"{
set root="$2";
set filename_this="$3"
wimboot --index="${bbb}"@:bootmgfw.efi:(memdisk)/boot/grub/bootmgfw.efi @:boot.wim:"${filename_this}"
}
问题出在哪?
谢谢!
wintoflash
发表于 2020-7-18 12:38:07
青青草 发表于 2020-7-18 12:11
我的菜单:
menuentry "[${sequence}] 启动 ${name}卷${bbb}(${device})" "${device}" "${filename}" - ...
你肯定在下面改变变量的值了。变量要通过menuentry的参数传递进去
青青草
发表于 2020-7-18 12:57:04
wintoflash 发表于 2020-7-18 12:38
你肯定在下面改变变量的值了。变量要通过menuentry的参数传递进去
晕!犯了这么低级的错误。唉... ...
谢谢!
青青草
发表于 2020-7-18 13:09:57
wintoflash 发表于 2020-7-18 12:38
你肯定在下面改变变量的值了。变量要通过menuentry的参数传递进去
如果能读取卷号对应的卷名称,就完美了!
wintoflash
发表于 2020-7-18 13:25:23
青青草 发表于 2020-7-18 13:09
如果能读取卷号对应的卷名称,就完美了!
不考虑添加这个功能。没有实际意义。
青青草
发表于 2020-7-18 13:34:22
本帖最后由 青青草 于 2020-7-18 13:37 编辑
wintoflash 发表于 2020-7-18 13:25
不考虑添加这个功能。没有实际意义。
全自动菜单用到。
如 wimboot --index="${bbb}"对应的名称为:"${bbb_name}"
菜单条:启动 "${bbb_name}"
这样,通用性就更强了!
adef
发表于 2020-7-18 17:36:18
从https://github.com/a1ive/grub/commit/5936f5f47f3cfcaf9427c44e3ed43a9ffc0575fd开始,UEFI 下map img貌似没反应了。
menuentry "test" {
search -f -s /x.img
map -t hd /x.img
}
wintoflash
发表于 2020-7-18 18:22:24
adef 发表于 2020-7-18 17:36
从https://github.com/a1ive/grub/commit/5936f5f47f3cfcaf9427c44e3ed43a9ffc0575fd开始,UEFI 下map img ...
已修复
https://github.com/a1ive/grub/commit/837cb3e452a644819048687970d86287c710d345
这个镜像没有分区表,应该属于 "软盘" 范畴吧。
页:
1
2
3
4
[5]
6
7
8
9
10
11