无忧启动论坛

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

[原创] GRUB4DOS for UEFI

    [复制链接]
61#
发表于 2020-12-14 18:33:24 | 显示全部楼层
本帖最后由 2011whp 于 2020-12-16 19:51 编辑




这个怎么解释
windows boot manager  抢了  普通设备启动,而列出启动项,启动蓝屏(这个无系统造成的,正常)
(MBR 本地固态U盘,fat在第一分区,g4e 的 efi/boot/bootx64.efi )

用 qemu 测试器能启动到 g4e

windows boot manager  什么工作机制
意思是只要第一分区是 fat 就认为是微软的
以前fat在第二分区,没这现象(我一般 fat在第二分区,以前没发现)


回复

使用道具 举报

62#
发表于 2020-12-15 18:20:31 | 显示全部楼层
wintoflash 发表于 2020-12-15 13:03
测试:添加 load 命令,可以加载 EFI 驱动。(与 GRUB2 的 efiload 命令,以及 EFI Shell 的 load 命令功能 ...

试了,ntfs驱动,没有问题。
回复

使用道具 举报

63#
发表于 2020-12-18 12:46:54 | 显示全部楼层
本帖最后由 2011whp 于 2020-12-20 13:30 编辑

bootmgfw问题

g4e 在 注册 引导器时,是不是    不是grub2的标识了,是无名引导器。

引导器,都有 exit 肯定内部有 共同 的数据栈 。  从认可方面,考虑 (因为bootmgfw有时候,也不是一点也没有得到执行),为什么grub2可以呢
上面是  瞎猜呢

试了  map --mem --top 后 ,img和vhd差别  不大
       也许是 对于UEFI来说,MBR的代码部分已经,没什么用了


名称: Wind400.vhd
大小: 419430912 字节 (400 MiB)
CRC64: 8BCBE261DD80F196

名称: Wind400.img
大小: 419430400 字节 (400 MiB)
CRC64: 71E5D436910D94C0


结果: vhd 比 img 在最后多一个扇区(估计 是软件进一步识别用的 )

回复

使用道具 举报

64#
发表于 2020-12-23 13:19:36 | 显示全部楼层

回复

使用道具 举报

65#
发表于 2020-12-24 12:16:30 | 显示全部楼层
本帖最后由 2011whp 于 2020-12-25 11:44 编辑

看了liuzhaoyzz 关于 primo 驱 vdf   理解如下:(直接map)

   1.  p驱是   以 磁盘 文件名  作为握手的
   2.   从过程上看,p驱 起作用以前  依靠 引导  
         这时候  碎片支持 与否  是看 g4e 是否支持(读资源靠 g4e)
   3.   P驱   起作用后,这时,与碎片,存在与否,没有关系了(P驱直接用文件了)



回复

使用道具 举报

66#
发表于 2020-12-24 12:34:52 | 显示全部楼层
本帖最后由 2011whp 于 2020-12-24 12:36 编辑

关于cpu模式:

初期确实是  加电是 16位的,以csm为主  模拟出dxe
我觉得现在主流是:加电 64位的,模拟出csm   

版本低的uefi  ,以前 shell.efi 还得加个 APPs目录(里面有 .efi工具,其中 load.efi都是外置的)
     那人时候  echo %path%   里还有  \apps   存在  
   新版 uefi, Apps的功能全内置了,只要一个shell.efi即可

估计,版本低的  dxe  加载  版本高的 ntfs.efi 会出错。

回复

使用道具 举报

67#
发表于 2020-12-25 11:45:50 | 显示全部楼层
本帖最后由 2011whp 于 2021-1-11 17:58 编辑



未来map


--handle- all|svubs|ventoy
    默认 svbus
    ventoy: 写入ventoy的兼容识别的 efi变量(方便 boot.wim diy)                参数后面 跟一个 指定文件名的字符窜
           将来 也像vdf 一样,弄个 大小 iso 引导win装系统   (注 :ventoydump.exe 是开源的)
    p驱的 虚拟设备 握手,是写入,vdf内的,无需引导器配合
举例:
        --handle-svbus-ventoy  /1.iso   --img  /2.iso
       说明:2.iso 写入svbus握手  ,  1.iso  写入 ventoy握手
        适当  用  all    或   none  占位
     
     这样 即可以 块 握手 ,也可以文件名 握手
  这样的话: 外挂PE  svbus能   ventoy也能






回复

使用道具 举报

68#
发表于 2020-12-25 14:17:36 | 显示全部楼层
本帖最后由 2011whp 于 2020-12-28 18:02 编辑

试一下     svbusventoyPE.iso         用  --mem  
链接:https://pan.baidu.com/s/1vOHmKJ2OxV2CZcg8scjV0g
提取码:eruh
挂载出 ventoy 的 iso 用的脚 本,在PE下执行,即可发现光驱 挂载iso.rar (106.06 KB, 下载次数: 151)

参考:https://www.ventoy.net/cn/doc_compatible_pass.html

https://www.ventoy.net/cn/compatible.html


解决PE外挂: 1.  svbus   2.  ventoy兼容    3.  已有的其它办法



后期再说




回复

使用道具 举报

69#
发表于 2020-12-26 08:39:33 | 显示全部楼层
本帖最后由 2011whp 于 2021-1-20 17:12 编辑

yaya  关于加入  ventoy 握手    考虑的怎么样了, 这个在需求层有必要

io式 握手 用 svbus   文件名式握手 用 ventoy       用户层面  那方法就多了(手动或自动)

测试方法也简单 ,用   913层 http://wuyou.net/forum.php?mod=redirect&goto=findpost&ptid=422652&pid=4202839&fromuid=413782

的脚本 能挂上光驱 ,就 是握手成功了


回复

使用道具 举报

70#
发表于 2020-12-26 09:17:21 | 显示全部楼层
本帖最后由 2011whp 于 2020-12-26 09:58 编辑

哦,只是更灵活的 map  会有更多用(也许现在还没有发现),就专注svbus吧

有 svbus的 win安装盘  也是能 走到  选分区界面的 (99%可以安装,不想重装系统了)



map 照上面的 复杂点的话 : 可以试 只启动带boot.wim  的iso,然后 挂载 win10.iso
(属于折腾,现在  理  还不严密,svbus目前有碎片问题,ventoy估计没有吧)
(单从   握手  文件名的,方法,没必要再造一个标准)

不这样的话,PE制作者,在svbus 和 ventoy兼容  上必须全支持,或 二择一
从用户角度,似乎超范围了,因为要改造iso,着实也没人这样用。







回复

使用道具 举报

71#
发表于 2020-12-26 19:25:43 | 显示全部楼层
本帖最后由 2011whp 于 2020-12-27 09:40 编辑

find --set-root  /分区标识文件
chainloader

这个启动root分区,是正规用法吧,不见有人用。
多fat分区 ,可以这样解决

最好是依靠 fat分区启动   ,抛错后,再分别 分区激活
(依靠 ,分区 的激活,总觉得,不那么正规)(GPT的精神:就是多生态重叠,互不相见,esp只是微软的   苹果 linux生态不了解)

这样的话  没有 boot_img_handle  not  find 多少问题了吧,菜单 写准

map以后加上find   难道 停不下来

回复

使用道具 举报

72#
发表于 2020-12-26 20:09:12 | 显示全部楼层
本帖最后由 2011whp 于 2020-12-26 20:57 编辑

find --set-root /src/z.iso
map --mem /src/z.iso (0xff)

find
root (hd0,0)
chainloader


可以启动本机系统,意思是 find 不到虚拟盘?
定位分区,即可
我不搞 ramos  大家 试下
chainloader (hd-1,0)  有效没



回复

使用道具 举报

73#
发表于 2020-12-29 11:16:14 | 显示全部楼层
本帖最后由 2011whp 于 2020-12-29 18:18 编辑
2011yaya2007777 发表于 2020-12-29 09:53
终于搞定了 1522Kb 的 bootmgfw.efi! 排查得好辛苦。

OK  圆满   元旦 前 进入    正式版

bootmgfw.efi 正常了  
   可以启动   wim
   实机   chainloader    /efi/boot/bootx64.efi   也可以了
@yaya  是什么原因呢,猜了一个多月了


回复

使用道具 举报

74#
发表于 2020-12-29 11:24:02 | 显示全部楼层
本帖最后由 2011whp 于 2020-12-29 20:54 编辑
liuzhaoyzz 发表于 2020-12-29 09:56
本人今天亲测,SX70211.vhd放在机械硬盘,在g4e下面用blocklist显示有3个碎片(有截图),wincontig在win ...

--mem-2048-1-2

这么说 只要第一个碎片 足够大,
启动到  P驱 起作用,就可以了

这个vhd  是不是微软 适应 VHD了
(微软标准启动   也是采用 map的 vhd,boot.sdi 作用没了,微软 自个 找到了呗)

回复

使用道具 举报

75#
发表于 2021-1-11 18:10:01 | 显示全部楼层
本帖最后由 2011whp 于 2021-1-12 18:20 编辑

撤销  --mem 加 子参数 的建议

ntfs分区 有30%管理区(档案区),小文件直接写在管理区,大文件cotent内容属性才写在后面,这样的话 要截出 启动P驱的块,会很大 。破解ntfs也不现实。
所以  把vdf碎裂加载到内存,可行性 极小,效果无提升。还是 按P驱官网的路数去提升 vdf 性能好些。
至于 截 头尾部扇区,现在还想不到多大用处


回复

使用道具 举报

76#
发表于 2021-1-11 18:37:32 | 显示全部楼层
本帖最后由 2011whp 于 2021-1-13 10:45 编辑
xianglang 发表于 2021-1-11 15:31
1月10日的版本,map --mem --top 已经没有问题,但是直接 chainloader (hd-1) 时,只有一个 NTFS 分区的固 ...

你说的第一个问题,以前就是那样的,没有变化吧


第二个问题:参考下图,刹开问题去试(下图为个人猜测,仅供参考)
你用了 esp 是不是 微软的 启动管理器已经运行了,而一个PC里只能有一个 start_win 启动管理器
工具盘,不用esp试下,好像 start_ Uefi 抢不过 start_win  (有的主板里有个设置操作系统顺序 : win   uefi  other   也没试过有什么用)
开机按Fx键时:微软列了启动项 uefi就不再重复列那个分区了



另说:
yaya  破 bootmgfw 时那个固件内的 设备句柄 是不是 NVROm小存储区 代表的 设备,bootmgfw 得运行在那个设备分区上

grub2 的三个初始化变量,1.启动文件所在分区(程序驻的分区) 2.资源path:  变量prefix (程序用的资产资源) 3. root变量:这是游移的
以上的 1 和3很容易搞乱   2不是绝对路径的话 依靠3

类比grub2分析bootmgfw: 1.NV分区 (模拟bootmgfw在这里) 2.bootmgfw资源分区,这个是看到的实体的esp分区(fat分区)

点评

之前 12.29、元旦等的版本,同样的环境是完全没有问题的。 至于抢启动的问题,也应该不存在,因为我的 ESP 分区或者 VHD 里的 NTFS 单分区,EFI 相应目录下,都是微软的 EFI 启动文件。 以前写过 Foxbase 程序  详情 回复 发表于 2021-1-12 11:51
回复

使用道具 举报

77#
发表于 2021-1-11 18:46:47 | 显示全部楼层
本帖最后由 2011whp 于 2021-1-11 18:48 编辑

blank007 PE本身的问题 排除了吗,比如 grub205   ventoy能启动吗(或者虚拟机能启动iso吗)

点评

还没有进入各类 WinPE ,仅仅是菜单显示阶段  详情 回复 发表于 2021-1-11 18:48
回复

使用道具 举报

78#
发表于 2021-1-11 18:51:57 | 显示全部楼层
按你说,有一个PE能启动,另一个不行,

推下来:PE自身问题值得 怀疑
  直接把iso挂到虚拟机  或者 用简易启动 器测试下PE
回复

使用道具 举报

79#
发表于 2021-1-11 19:54:47 | 显示全部楼层
本帖最后由 2011whp 于 2021-1-12 08:33 编辑

觉得,依托 标记判断,影响 ia32  和 x64 的独立性,实际上它们也不会有交集(增加菜单复杂度了)

还好Ia32 这类主板不多 未来也不会多 。细想一般人不用 这个 判断标记。





回复

使用道具 举报

80#
发表于 2021-1-12 12:28:06 | 显示全部楼层
本帖最后由 2011whp 于 2021-1-12 14:09 编辑

xianglang
  第一个问题: 确认win7的 bootmgfw能在 ntfs上运行?(win10的可以,但我映像g4e本来抛错的)
         意思是:12-29版 时,你能启动vhd 内 ntfs分区上 的win7 ?
       记得,你的电脑 启动不了shellx64,   试下老shell 和驱动 能用不?http://wuyou.net/forum.php?mod=r ... 1258&fromuid=413782
  第二个问题:
           你是工具盘 用了 esp分区,然后启动本机win系统硬盘 失败吧,不是启动其它的吧

另说:
  你说的 修一个地方,影响另一个地方,是可能的

回复

使用道具 举报

81#
发表于 2021-1-12 12:33:45 | 显示全部楼层
本帖最后由 2011whp 于 2021-1-29 20:42 编辑

windows启动过程(图是 自个画的,文字是网上的)
Winload.efi做的第一件事就是通过BootService的GetMemoryMap提供的物理内存信息来构造页表以及PFN数据库,然后将ntoskrnl,hal以及SYSTEM\Service下的所有Boot型驱动以及他们需要的导入库读取加载到内存中,因为此时还是保护模式下,所以需要页表中建立这些文件的映射信息。(在IA32e下的UEFI开机后是会默认开启分页的,但是虚拟内存和物理内存是1:1映射的,所以进了Windows内核后不可能还用原来的地址)读取完成后,会对这些文件进行签名校验,如果校验失败,那么会蓝屏INACCESSIBLE_BOOT_DEVICE,即启动设备无效。这一步完成后,Windows会进一步初始化GDT和IDT,然后在页表中分配内核堆栈,初始化SystemPTE。最后调用ExitBootService退出引导阶段,调用SetVirtualAddress将EFI部分固件内存映射到虚拟内存,然后把页表基址载入CR3寄存器,开启分页并跳转到ntoskrnl的KiSytemStartup进入内核。




回复

使用道具 举报

82#
发表于 2021-1-12 17:24:56 | 显示全部楼层
本帖最后由 2011whp 于 2021-1-13 13:11 编辑

xianglang : 试了下   死机了  只能电源关机(B360主板台机)

chainloader (hd3,0)  倒是 能用
chainloader (hd3,0)/efi/microsoft/boot/bootmgfw.efi    也可以用 的


标记测试:

vbox测试,还是不错的,介于简易测试器  和  vm 之间  安装后 200+MB
比简易测试器  先进的 地方 就是能 启动PE系统(或真实系统)
方法:做个vhd,win10原生支持,挂载。  修改后,弹出即可。启动vhd,代替插U盘。








回复

使用道具 举报

83#
发表于 2021-1-13 11:14:56 | 显示全部楼层
本帖最后由 2011whp 于 2021-1-13 12:02 编辑

实现:总菜单,分菜单,这个不错(区分ia32  x64)

calc *0x8272&0xff > nul
set ver=%@retval%
if "%@retval%"=="32" configfile menuia32.lst
发现 现在PE制作者,新近的 大部分 放弃 ia32了(估计微软也在弃),还是主攻x64,好些。


回复

使用道具 举报

84#
发表于 2021-1-14 17:51:03 | 显示全部楼层
本帖最后由 2011whp 于 2021-1-15 12:33 编辑

blank007:没有回复的主题贴,可以  点编辑  →右上角 高级模式→ 下方 附加选项→ 删除此贴

总之:g4e现在都是小问题了,
菜单公用部分
calc *0x8272&0xff > nul
set efinum=%@retval%


configfile  /efi/grub/64.lst   能用 (下面图是  子菜单 标题加了个 x64标记)
你的菜单文件 是 txt    是不是utf8编码的,






回复

使用道具 举报

85#
发表于 2021-1-14 19:00:41 | 显示全部楼层
2011yaya2007777 发表于 2021-1-14 15:16
现在 chainloader (hd3) 的时候,不搜索及加载 bootmgfw.efi。
可以考虑加载 bootx64.efi 失败时,加载  ...


是不是 为了功破  bootmgfw启动,而带来的  chainloader (hd3)死机

为了两者  都能正常  
  我的意思是:退到以前 能 chainloader (hd3)的版,然后对 bootmgfw 做特殊处理,
          因为大部分  efi  不涉及那个  固件内的 设备句柄


(注:我的hd3硬盘的 esp分区 有  /efi/boot/bootx64.efi )
   
回复

使用道具 举报

86#
发表于 2021-1-15 17:29:03 | 显示全部楼层
本帖最后由 2011whp 于 2021-1-16 20:00 编辑

通用菜单:
find --set-root
map /
chainloader          (注:启动root分区 可以不加任何参数)

如果文件 本身不够独特的话  find 分区标识文件(名字 随机取,好像支持很长的文件名,顺便写点  .txt备忘什么滴)

回复

使用道具 举报

87#
发表于 2021-1-18 17:38:45 | 显示全部楼层
本帖最后由 2011whp 于 2021-1-18 18:57 编辑

chainloader  (hd3)  死机问题  (从2020-12-29有此问题)
    1.   M2 接口上的本机系统

2.   虚拟机里   能用 chainloaer  (hd1)


问题:与硬盘接口有关?



总的来说
chainloader  (hd3)  死机  是小问题,能用 chainloader /bootmgfw.efi  就有变通方法






回复

使用道具 举报

88#
发表于 2021-1-18 18:23:41 | 显示全部楼层
本帖最后由 2011whp 于 2021-1-18 18:40 编辑

@liuzhaoyzz

是GPT分区,(hd3,0)是esp分区

  chailoader  (hd3,0)/efi/boot/bootx64.efi   能启动

(hd3,1)是 微软保留分区msr    不连续  一直 是这样的
回复

使用道具 举报

89#
发表于 2021-1-18 18:29:31 | 显示全部楼层
本帖最后由 2011whp 于 2021-1-27 20:59 编辑

grub gnu官网
       1995年,grub1.x  (当时叫 0.X)
       2002年,grub2.0 改进重写grub1.X(需求层 大致相同)
       2005年后,grub2 为efi开发,2007开始流行
       2005年,grub1.97停止开发         
       2012年 GRUB2.0正式版发布
       2017年GRUB2.02发布(带 for windows版)
       2019年GRUB2.04发布(带 for windows版)
      另分支
       2003年发起 grub4dos(基于grub1.97)
       2012年046a 停止开发 官网关闭

grub无忧论坛:
     2009年,开始g4d  
     2019年,grub2.05 UEFI  map
     2020年,基于 grub2.04的 ventoy  (启动U盘制作)
     2020年,基于 grub2.X的   grubfm 文件管理器
     2020年,grub4dos uefi版
    ( 另:bootice  xorboot  xorbootU)
回复

使用道具 举报

90#
发表于 2021-1-18 20:38:28 | 显示全部楼层
本帖最后由 2011whp 于 2021-1-18 20:53 编辑
liuzhaoyzz 发表于 2021-1-18 20:02
2002年,grub2.0 改进重写???        还没有发布,何谈改进重写?版本号不对吧。。。
       200 ...

2002年 改进重写 grub1.X
好比  yaya 的efi版  从起心开发,估计 一年以前了, 写ia32  估计  2020年初 动手实施

记不清了,我是 GRUB2.04 发布时,头脑热了一段时间, 历史是 当时的 查的,有不对的
记得的 ,说下g4d 历史时刻,还有g4d 在github上有分支在?是不是g4e接力上了



回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-5-26 05:09

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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