无忧启动论坛

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

uefi单镜像p驱ramos关键性突破

  [复制链接]
跳转到指定楼层
1#
发表于 2018-12-17 21:35:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 2012wuzhong 于 2018-12-29 10:08 编辑

http://bbs.wuyou.net/forum.php?m ... &extra=page%3D2
uefi启动区有坛友wintoflash利用uefi提供的Ram Disk Protocol,编写一个 Application 实现了RamDisk创建,遗憾的是他无法启动内存盘上的bcd。经过试验发现使用带硬盘分区格式的img生成的内存盘,bootmgr能正确识别bcd。这个img可以成为p驱的镜像文件,这是实现单镜像p驱ramos一个关键性的突破,不过现在还存在很多问题,希望懂efi开发的坛友能助一臂之力。

2018/12/29
xorboot启动iso模式试验失败
1、uefi只认识iso中的软盘镜像,无mbr模式,可以ntfs格式(跟BIOS是否内嵌ntfs驱动有关);但是bootmgr.efi/winload.efi不认识该虚拟盘,启动提示找不到bcd。因此能uefi启动的iso,软盘镜像(Efisys.bin)只会存放\efi\boot\bootia32.efi以及bootx64.efi这两个启动文件。
2、iso中的光盘镜像必须udf格式,放入最小系统可以启动到start=1阶段,由于后续没有udf镜像驱动而导致蓝屏。目前p驱还不支持udf镜像,另外也没有渠道知道这个udf系统盘信息。

2018/12/27
mkramdisk.efi试验失败
1、软盘镜像,运行\efi\microsoft\boot\bootmgfw.efi,没有反应
2、硬盘镜像,能够识别bcd,但由于找不到winload.efi提示00e,指定其它分区的winload.efi,提示找不到system注册表。
3、使用存放在其它分区的bcd,启动分区指向内存盘,同样提示00e
4、使用内存盘上的bcd,启动分区指向其它分区,也会提示00e
5、可能是2.3.1版本过低的问题,ramdiskdxe需要load的,高版本已经内嵌了。

评分

参与人数 4无忧币 +20 收起 理由
zhangmi + 5
diwu2005 + 5 很给力!
20090101 + 5 很给力!
freesoft00 + 5

查看全部评分

2#
发表于 2018-12-17 21:55:13 | 只看该作者
新的东西,大家赶快研究,我小白只能测试一下。
回复

使用道具 举报

3#
发表于 2018-12-18 08:55:41 | 只看该作者
仔细地看了,支持...
回复

使用道具 举报

4#
发表于 2018-12-18 18:02:02 | 只看该作者
这个能突破的话未来的uefi的ramos会更美好!
回复

使用道具 举报

5#
 楼主| 发表于 2018-12-20 09:46:09 | 只看该作者
http://bbs.wuyou.net/forum.php?m ... &extra=page%3D1
关于00e蓝屏,有大神遇到吗?
回复

使用道具 举报

6#
 楼主| 发表于 2018-12-21 09:55:14 | 只看该作者
本帖最后由 2012wuzhong 于 2018-12-21 10:11 编辑

目前的试验结果如下:
使用带mbr的img生成的的内存盘,运行\efi\microsoft\boot\bootmgfw.efi
1、出现启动菜单,说明bootmgr.efi可以识别内存盘上的\efi\microsoft\boot\bcd,
2、但是识别不了\windows\system32\winload.efi,提示0x000000e错误。
3、如果将winload.efi定位到其它地方,启动提示缺少\windows\system32\config\system,说明winload.efi识别不了内存盘

猜测:
1、通过bcd传递内存盘信息,winload.efi识别不了
2、uefi提供的读内存盘和读存储设备的服务可能有差别,而winload.efi只采用了读存储设备的方式,因此无法读取内存盘上的文件。
3、试验的版本太低:2.3.1版本,需要加载ramdiskdxe.efi,winload.efi没有调用ramdiskdxe.efi提供的读内存盘服务

希望坛友在最新版本uefi继续试验。另外是否存在不用bcd来启动?
回复

使用道具 举报

7#
发表于 2018-12-21 10:06:54 | 只看该作者
这个我只看各位大神发力
回复

使用道具 举报

8#
发表于 2019-2-19 10:15:32 | 只看该作者
还是移植GRUB4DOS的MAP功能过来最好!~
回复

使用道具 举报

9#
发表于 2019-4-22 17:52:24 | 只看该作者
本帖最后由 dido0379 于 2019-4-22 17:58 编辑

关注进展。另外问一下为什么我用ramdiskdxe.efi加载的内存iso盘不能连接分区协议和文件系统协议,只有一个磁盘协议?
希望大家都来研究一下吧,工具

mrd.rar

1012.78 KB, 下载次数: 16, 下载积分: 无忧币 -2

回复

使用道具 举报

10#
发表于 2019-4-22 18:11:54 | 只看该作者
不懂想懂……
回复

使用道具 举报

11#
发表于 2019-4-23 19:22:42 | 只看该作者
楼上的mrd是在http://www.lab-z.com/stu132rd/上找来的,目前经过修改,配合ramdiskdxe,加载ISO文件后可以看见软件镜像fs1:,可以运行fs1上的bootmgfw.ef,几个handle看起来和xorboot的差不多了,但是devicepath等参数不一样,所以同一个ISO镜像,xorboot模拟出来可以启动到PE,ramdiskdxe模拟出来会找不到bcd,继续探索中
回复

使用道具 举报

12#
发表于 2019-4-23 23:06:55 | 只看该作者
刚刚测试已经可以用RAMDISKDXE启动win10pe的iso文件,目前测试程序全是硬编码,还不能读配置文件或者命令行。有兴趣的可以试试

uefi直接启动iso文件.rar

50.83 KB, 下载次数: 30, 下载积分: 无忧币 -2

回复

使用道具 举报

13#
发表于 2019-4-24 00:09:07 | 只看该作者
dido0379 发表于 2019-4-23 23:06
刚刚测试已经可以用RAMDISKDXE启动win10pe的iso文件,目前测试程序全是硬编码,还不能读配置文件或者命令行 ...

iso是没有意义的,要加载vdf,能启动才有用,不然都是扯淡
回复

使用道具 举报

14#
发表于 2019-4-24 10:12:35 | 只看该作者
RamDisiImpl.h 第54行,改为光盘扇区大小
RamDiskProtocol.c  第25,26行,我猜这个是让bootmgfw能够找到iso下bcd的关键
RamDiskBlockIo.c   第70行,改为只读,效果不明,没有进一步测试

硬盘镜像没有测试,应该需要进一步修改
mrd原来的程序中StartingAddr这个名称猜测和库中某个宏冲突,编译正常,但是打开ramdisk协议后会破坏内存镜像,不改就死活不行

uefi启动iso镜像含源码.zip

86.1 KB, 下载次数: 32, 下载积分: 无忧币 -2

评分

参与人数 1无忧币 +5 收起 理由
liuzhaoyzz + 5 很给力!

查看全部评分

回复

使用道具 举报

15#
发表于 2019-4-24 13:39:13 | 只看该作者
dido0379 发表于 2019-4-24 10:12
RamDisiImpl.h 第54行,改为光盘扇区大小
RamDiskProtocol.c  第25,26行,我猜这个是让bootmgfw能够找到is ...

大神你可以参考wintoflash大神的,W大写的那个是可以过bcd的,就是在winload.efi过不了,出显00e的代码,
回复

使用道具 举报

16#
发表于 2019-4-24 14:07:29 | 只看该作者
    我碰到过启动的时候00e的问题,说下我的场景,一个机械硬盘bootmgr、bcd,系统是安装在NVME SSD上面的,系统怎么都安装不上去,用winntsetup安装的时候,启动就显示00e错误。后来把bootmgr、bcd以及系统都安装在NVME SSD,启动就没有00e这个错误了。
    再看下虎大在一楼的发帖,已经说的很清楚了,跨越硬盘(虚拟硬盘)启动就会发生盘00e的错误。解决的思路估计也是一样,bootmgr bcd  windows不能跨硬盘(虚拟硬盘),跨越了可能就会出错;当然也会有不出错的情况。
回复

使用道具 举报

17#
发表于 2024-1-4 12:35:41 | 只看该作者
感谢分享
回复

使用道具 举报

18#
发表于 2024-1-4 15:28:02 | 只看该作者
感谢分享
回复

使用道具 举报

19#
发表于 2024-1-4 16:49:10 | 只看该作者
谢谢分享
回复

使用道具 举报

20#
发表于 前天 22:24 | 只看该作者
好像系统安装在VHD时就算不是同一磁盘也能运行,UEFI也不过是申请大块内存池获得指针,再把文件读进这指针,然后把内存块虚拟成RAM盘
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-12-27 12:21

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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