无忧启动论坛

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

[原创] NTBOOT & wimboot for UEFI GRUB2

    [复制链接]
61#
 楼主| 发表于 2020-11-22 10:52:22 | 显示全部楼层
hilsonma 发表于 2020-11-22 10:30
grub2是使用图形模式。ntboot 加不加 --gui 都一样
ntboot 之前加 terminal_output console 切换到文本 ...
看来ntboot 启动windows系统这一功能的兼容性还不够
要普遍启动的话还是chainloader /Windows/Boot/EFI/bootmgfw.efi,
初次引导使用 bcdboot c:\windows /s c: /f uefi 建立正确的bcd.


我觉得可能和硬盘上的bootmgfw.efi加载了中文字体有关。
回复

使用道具 举报

62#
 楼主| 发表于 2020-11-22 12:36:23 | 显示全部楼层
青青草 发表于 2020-11-22 12:29
最大压缩所致:
   cd out
   find ./boot -print|cpio -o -H newc | gzip -9 > ./memdisk.cpio.gz

注意:memdisk只支持xz压缩,不支持gz。
回复

使用道具 举报

63#
 楼主| 发表于 2020-11-22 12:43:59 | 显示全部楼层
hilsonma 发表于 2020-11-22 12:38
两台电脑都是技嘉主板,都是VGA接三星,装的都是SR的win8.1,使用ntboot启动windows系统,主板F2A68HM-DS ...

启动pe/vhd不花屏,启动系统花屏?
那有点邪门。有没有可能是bootmgfw.efi版本的问题?
回复

使用道具 举报

64#
 楼主| 发表于 2020-11-22 13:14:10 | 显示全部楼层
hilsonma 发表于 2020-11-22 13:01
我好象用的是差不多的脚本,也就是说,同样的压缩,是之前修改你的脚本来的,目前没有遇到 青青草 说的问 ...

%bin%find boot | %bin%cpio -o -H newc | %bin%gzip -9 > memdisk.cpio.gz
%bin%find memdisk.cpio.gz | %bin%cpio -o -H newc > memdisk.cpio

你这还是cpio格式的memdisk啊,没有经过压缩。
虽然实际的memdisk进行了gz压缩,但是外面又套上了一层cpio。
回复

使用道具 举报

65#
 楼主| 发表于 2020-11-22 13:17:09 | 显示全部楼层
青青草 发表于 2020-11-22 12:58
请教一下,
如果用XZ压缩,
find ./boot -print|cpio -o -H newc | gzip -9 > ./memdisk.cpio.gz

find ./boot | cpio -o -H newc | xz -9 -e > ./memdisk.xz
可以自己到网上找xz.exe。
回复

使用道具 举报

66#
 楼主| 发表于 2021-1-11 17:08:01 | 显示全部楼层
wuyouman01 发表于 2021-1-11 16:40
请问,此版是内置启动菜单的吧?如何定制或者外置菜单的路径默认是哪个文件?

默认脚本生成的efi文件不内置菜单,直接加载 /boot/grub/grub.cfg。你可以自己改脚本。
回复

使用道具 举报

67#
 楼主| 发表于 2021-1-16 15:33:47 | 显示全部楼层
ksafei 发表于 2020-5-19 09:50
删除 CrScreenshotDxe.efi 语句,添加 efi_connect_all ,ntboot引导可以正常启动了。感谢W大!

试试最新版grub2,不用 efi_connect_all ,会不会报这个错。
去年11月4日的 commit 修复了一个可能和这个相关的问题。
https://github.com/a1ive/grub/co ... 78163bd086f22aac276
回复

使用道具 举报

68#
 楼主| 发表于 2021-5-1 12:56:08 | 显示全部楼层
hhh333 发表于 2021-4-28 22:00
不知道grub2到哪说,就在此帖中问吧。
g4d有一个文件1kb很好用grldr_cd.bin,作光盘的启动区文件直接启动 ...

我看到你在grub4dos帖子里面的反馈了。我没有用过 oscdimg,对它不熟悉。你应该找官方文档研究一下。
据我所知,oscdimg 用 grldr_cd.bin 做引导文件,生成的 ISO 是有问题的 (虽然你一般不会感觉到这个问题),而用 mkisofs 完全没有问题。




回复

使用道具 举报

69#
 楼主| 发表于 2021-5-4 18:18:50 | 显示全部楼层
hhh333 发表于 2021-5-4 17:51
刚才用mkisofs生成的全部用grub2引导双启光盘,bios方式还是不能启动。目前只有Ultraiso生成的可以。

(1) 即使有 bug 我也不会去修。因为我前面已经说过了,本项目不再开发了。
(2) mkisofs 生成的 ISO 是正常的。那是你自己的问题。
https://github.com/a1ive/grub2-f ... 0dc69/build.sh#L258
回复

使用道具 举报

70#
 楼主| 发表于 2021-7-15 15:33:13 | 显示全部楼层
minmax 发表于 2021-7-15 01:20
请教  -inject= 语法如何下 让 路径设为X:\
​ -inject=%systemroot% 之类的用法失败
> wimboot [OP ...

--inject=\\试试。我不确定是否能注入到根目录。

点评

YES! 感謝能注入到根目录下目录PATH --inject=\\PATH @:NAME:FILE  详情 回复 发表于 2021-7-16 00:46
回复

使用道具 举报

71#
 楼主| 发表于 2021-10-20 11:40:20 | 显示全部楼层
本帖最后由 wintoflash 于 2021-10-20 11:45 编辑
ksafei 发表于 2021-1-16 18:20
试了最新版grub2,不用 efi_connect_all NTBOOT 还是会报错。感谢W大还惦记着这个小问题

在 USBOS 的帖子下面讨论 grubfm 对楼主不太礼貌,因此我在自己的帖子里面做一些说明。
修改 boot/grubfm/rules/iso/winpe.lua 这个文件,在开头的 "winpe_wim_list " 这个表里面加上 USBOS 里面 WIM 的路径,就可以出自动菜单启动,
并且在启动后还可以自动挂载 ISO。
https://github.com/grub4dos/grub ... 5dc58bcbe878ce8019c
  1.     "(loop)/BOOT/H3_7PE.WIM",
  2. +  "(loop)/BOOT/NT10PEX64.WIM",
  3. +  "(loop)/BOOT/NT63PEX86.WIM",
  4.     "(loop)/Rescue/Rescue.wim",
  5.     "(loop)/boot/images/w7x64/w7x64.wim",
  6.   "(loop)/boot/images/w7x86/w7x86.wim",
复制代码

在 boot/grubfm/rules/iso/map.sh 里面,把
  1. map -f "${grubfm_file}";
复制代码

改为
  1. map -f -g "${grubfm_file}";
复制代码

就可以不写入兼容 GRUB4DOS 的 map 信息,这样就可以让 SVBus 无视 ISO 了。

对于懒人的话,可以点 "fork" 按钮,复刻到自己的仓库,在 "actions" 设置里面,启用 github actions。
然后找到对应文件,直接在网页上修改,提交之后就可以等github自动编译出成品。
比如我刚刚改的:https://github.com/grub4dos/grub2-filemanager/releases



点评

非常感谢wintoflash大指点,学习了!  详情 回复 发表于 2021-10-20 12:34
回复

使用道具 举报

72#
 楼主| 发表于 2022-1-21 14:46:29 | 显示全部楼层
风.轻扬 发表于 2022-1-21 10:33
GRUB2成功引导VHDX和差分,感谢wintoflash大!

部署方案见http://bbs.wuyou.net/forum.php?mod=viewthre ...

这个启动项是Windows自己加的。有些时候Windows会自己调整启动项顺序,有些时候不会,具体什么导致的不清楚。
回复

使用道具 举报

73#
 楼主| 发表于 2022-1-21 19:37:30 | 显示全部楼层
风.轻扬 发表于 2022-1-21 18:04
Grub2引导wim成功

grub.cfg增加引导项

启动普通分区(FAT/exFAT/NTFS)里面的wim,且不需要射入文件功能,推荐用 ntboot 命令,加载速度更快。
ntboot --efi=$2 --wim ${imgpath}/winpe.wim

点评

好的,谢谢wintoflash大!  详情 回复 发表于 2022-1-21 21:52
回复

使用道具 举报

74#
 楼主| 发表于 2022-4-19 18:22:21 | 显示全部楼层
本帖最后由 wintoflash 于 2022-4-19 18:28 编辑
mmc199 发表于 2022-4-19 11:39
w大,您好!
这个项目现在支不支持arm64 aarch64 架构,还有如何在ubuntu20.04 arm64机子上编译出arm64- ...

ntboot模块我限制了只在x86下编译。
以前用 rpi 3b 测试 ntboot/wimboot 启动winpe,直接卡死。后来 rpi 3b 坏了也就没法再研究了。估计是内存对齐的问题。

你直接下载下来是有 aarch64 的,不过没有 ntboot 模块。至于编译,你这都不算交叉编译,不用指定 toolchain 直接编译就行了。
回复

使用道具 举报

75#
 楼主| 发表于 2022-10-17 11:15:28 | 显示全部楼层
青青草 发表于 2022-10-16 15:34
请教大神:
       如果要把文件和文件夹分别射入不同的文件夹,应如何书写?
如,文件winpeshl.ini   射 ...

不能
回复

使用道具 举报

76#
 楼主| 发表于 2022-10-17 11:23:30 | 显示全部楼层
青青草 发表于 2022-10-17 11:18
哪,可以射入文件夹么?

不能。
这种事 注入一个批处理不就搞定了吗
回复

使用道具 举报

77#
 楼主| 发表于 2022-10-20 17:38:16 | 显示全部楼层
zczc8888 发表于 2022-10-20 17:33
grub2 在引导时怎么添加软键盘!???

什么软键盘?
看不懂
回复

使用道具 举报

78#
 楼主| 发表于 2022-10-20 17:50:19 | 显示全部楼层
zczc8888 发表于 2022-10-20 17:46
就是虚拟键盘 没有键盘硬件时,代替键盘输入

连触摸屏驱动都没有,怎么可能支持软键盘?
回复

使用道具 举报

79#
 楼主| 发表于 2022-10-20 19:27:25 | 显示全部楼层
zczc8888 发表于 2022-10-20 17:53
community.fydeos.com/t/topic/4477  就是这个别人是怎么做出来的?

这个虚拟键盘是固件提供的,比如surface就带这个。
回复

使用道具 举报

80#
 楼主| 发表于 2022-10-20 21:22:45 | 显示全部楼层
zczc8888 发表于 2022-10-20 19:49
实现音量+- 电源键 来控制grub2 的上下移动 进入系统要修改grub2 源码嘛?

这要看 UEFI 固件是否把音量/电源按键当作键盘来对待了。
执行getkey命令后按音量或者电源键,查看是否能获取到键盘扫描码。
如果获取到了键盘扫描码,用 setkey 命令把它映射成某一个按键就行了。

如果连了鼠标的话,可以用鼠标上下移动,左右键映射上下方向键和回车/ESC。
加载 efi_mouse 模块,执行 terminal_input --append mouse 就行。
回复

使用道具 举报

81#
 楼主| 发表于 2022-10-20 22:30:03 | 显示全部楼层
风.轻扬 发表于 2022-10-20 22:20
笔记本+usb鼠标
insmod efi_mouse
terminal_input --append mouse

可能是你的uefi固件不支持鼠标。输入mouse_test命令看看有没有识别到鼠标,如果识别到的话移动鼠标看看有没有输出。
回复

使用道具 举报

82#
 楼主| 发表于 2022-10-21 10:39:16 | 显示全部楼层
本帖最后由 wintoflash 于 2022-10-21 10:40 编辑
zczc8888 发表于 2022-10-21 10:01
好像可以! 还有一个问题 如果grub 有主题set theme=$prefix/themes/start/theme.txt; 在这个themes.txt ...

你只能在 label 组件中使用 GRUB 环境变量。
根据不同使用环境,有不同方式:
  1. + label { text = "@@grub_cpu" }
复制代码

@@ 加上变量名。在主题加载时,读取这个变量的值,显示出来。如果后来这个变量的值改变了,是不会刷新显示的。
因此,使用这种方法,你要确保在主题加载前就设置好了变量的值。
  1. + label {var = "var_time" hook = "date --human --set=var_time" }
复制代码

var = 变量名。这种方式是每秒执行一次 hook 中指定的命令,并刷新显示变量的值。
可以参考用户手册 https://a1ive.github.io/grub2_gfx_zh.html
和 grubfm 中的主题 https://github.com/a1ive/grub2-f ... ack/hwinfo/grub.txt
回复

使用道具 举报

83#
 楼主| 发表于 2022-10-21 15:49:43 | 显示全部楼层
zczc8888 发表于 2022-10-21 14:00
theme.txt 中定义全局属性desktop-image指定桌面背景图片,这个他的值能不能用grub.cfg 的定义的环境变量, ...

不能。只有label组件支持变量。
回复

使用道具 举报

84#
 楼主| 发表于 2022-11-13 16:05:25 | 显示全部楼层
青青草 发表于 2022-11-3 11:54
请教一下:
      伪随机数rand如何使用?
比如,欲生成[0,2]之间的随机数
  1. rand --from=0 --to=3 aaa
  2. echo aaa
复制代码

区间是左闭右开的,所以要取 [0,3)。
伪随机数是用CPU时钟做种子来生成的。

点评

再请教一下: 利用伪随机数随机显示动画主题: rand --from=0 --to=2 aaa if [ "aaa" -le "1" ]; then set theme=/themes/Mapleleaves/Themes.txt else set theme=/themes/streetlamp/Themes.tx  详情 回复 发表于 2022-12-13 18:38
回复

使用道具 举报

85#
 楼主| 发表于 2022-11-13 16:10:24 | 显示全部楼层
zczc8888 发表于 2022-11-12 17:41
可以请教一个问题吗,在grub2 界面中,是否能让两行文字 设置不同的字体 颜色 大小, 同时加载不同的字体文 ...

这两行文字属于什么组件?如果是 label 组件的话,loadfont 加载字体后设置 font 属性就行了。
  1. + label {
  2.     text = "GNU GRUB 2"
  3.     font = "Dos VGA 8"
  4.     color = "#8FF"
  5. }

  6. + label {
  7.     text = "Hello World"
  8.     font = "Unifont Regular 16"
  9.     color = "#8899FF"
  10. }
复制代码

(字体名称可以用 lsfonts 查看)
回复

使用道具 举报

86#
 楼主| 发表于 2022-12-24 09:16:46 | 显示全部楼层
青青草 发表于 2022-12-13 18:38
再请教一下:
      利用伪随机数随机显示动画主题:
rand --from=0 --to=2 aaa
其中-le好像只能用于整数比较。

没看懂
回复

使用道具 举报

87#
 楼主| 发表于 2023-6-24 16:53:12 | 显示全部楼层
zczc8888 发表于 2023-6-24 16:09
这个loadfile 命令是哪个mod的功能,老是报不能发现命令

什么东西? 没头没尾的。
回复

使用道具 举报

88#
 楼主| 发表于 2023-6-24 20:22:58 | 显示全部楼层
zczc8888 发表于 2023-6-24 19:03
loadfile [OPTIONS] FILE

​ 将文件加载到内存

在 command.lst 里面找一下命令在哪个模块里就行了。
你用它干啥呢。
回复

使用道具 举报

89#
 楼主| 发表于 2023-7-5 12:05:11 | 显示全部楼层
wlight_ 发表于 2023-7-5 08:29
您好我只把存放mod的文件夹复制到了ventoy的引导盘,可是在insmod ntboot时,报错,说
symbol ‘grub_strp ...

用法不正确。GRUB 模块 .mod 是不通用的。
回复

使用道具 举报

90#
 楼主| 发表于 2023-7-5 15:13:20 | 显示全部楼层
wlight_ 发表于 2023-7-5 12:27
请问有方法使得在ventoy中可以使用ntboot吗?没有就算了。

ventoy不是有插件可以启动whd,wim吗???
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-11-1 06:51

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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