无忧启动论坛

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

[原创] GRUB4DOS for UEFI

    [复制链接]
661#
 楼主| 发表于 2020-12-7 12:37:37 来自手机 | 只看该作者
不对。首先要确定hd对应的驱动器号,- 就是一个减号,与虚拟化无关。比如hd对应0x83,那hd-1对应0x82,hd-2对应0x81,以此类推。hd是一个变量。每增加一个硬盘,它都要加1。

点评

嗯,- 是倒序的意思 hd类似 数据库 的游标(记录号) 只是当前,它是指最后一个的,相当于硬盘数 (以后有有需求的话 会有 类似游标 移动的应用)  详情 回复 发表于 2020-12-7 13:26
回复

使用道具 举报

662#
发表于 2020-12-7 12:42:21 | 只看该作者
本帖最后由 liuzhaoyzz 于 2020-12-7 12:49 编辑
2011yaya2007777 发表于 2020-12-7 09:51
这个提示不是 G4E 的,提示 out of memory 是 G4E 的。
以前 G4D 支持动态 vhd 加载,现在的 G4E 也应当 ...

试了这个1207版本的bootx64.efi,一样提示“out of memory”.跟上面的帖子665楼截图一样。

blocklist /VHD/UEFIltsb-svbus.vhd
好像是没有碎片。






另外想请问下,UEFI下面,displaymem命令还有没有用,能否正常指示内存碎片值?



点评

displaymem当然是正常工作的。 bios下能分配那么多内存,uefi下就不一定。  详情 回复 发表于 2020-12-7 14:11
回复

使用道具 举报

663#
发表于 2020-12-7 13:26:46 | 只看该作者
本帖最后由 2011whp 于 2020-12-7 14:03 编辑
2011yaya2007777 发表于 2020-12-7 12:37
不对。首先要确定hd对应的驱动器号,- 就是一个减号,与虚拟化无关。比如hd对应0x83,那hd-1对应0x82,hd-2 ...

嗯,- 是倒序的意思

hd类似 数据库 的游标(记录号)
只是当前,它是指最后一个的(待新建记录号),相当于硬盘数
(hd-1) 间接实现了,最后一个盘(或虚拟盘)

(以后有有需求的话  会有 类似游标 移动的应用)


回复

使用道具 举报

664#
发表于 2020-12-7 14:11:19 | 只看该作者
liuzhaoyzz 发表于 2020-12-7 12:42
试了这个1207版本的bootx64.efi,一样提示“out of memory”.跟上面的帖子665楼截图一样。

blocklist  ...

displaymem当然是正常工作的。
bios下能分配那么多内存,uefi下就不一定。

点评

你看我displaymem,最后一行显示length=71F000000=10进制30584864768=28GB,这个应该是高位内存吧,应该足够放下13GB的vhd啊,4GB以内的内存块,似乎很零散。提示“out of memory”是不是因为g4e把vhd放到其  详情 回复 发表于 2020-12-7 14:50
回复

使用道具 举报

665#
发表于 2020-12-7 14:50:12 | 只看该作者
本帖最后由 liuzhaoyzz 于 2020-12-7 14:51 编辑
wintoflash 发表于 2020-12-7 14:11
displaymem当然是正常工作的。
bios下能分配那么多内存,uefi下就不一定。

        你看我displaymem,最后一行显示length=71F000000=10进制30584864768=28GB,这个应该是高位内存吧,应该足够放下13GB的vhd啊,4GB以内的内存块,似乎很零散。提示“out of memory”是不是因为g4e把vhd放到比较小的内存块上面去了?
回复

使用道具 举报

666#
 楼主| 发表于 2020-12-7 14:52:40 | 只看该作者
试了这个1207版本的bootx64.efi,一样提示“out of memory

这就奇怪了!原来有两处提示 “out of memory“,我修改为不同的提示了。可否再仔细看看。

点评

你是给我说的,还是个wintoflash说的,我这边想不出是什么原因,该怎么尝试。  详情 回复 发表于 2020-12-7 18:20
回复

使用道具 举报

667#
 楼主| 发表于 2020-12-7 14:53:48 | 只看该作者
hd类似 数据库 的游标(记录号)

理解得透彻!
回复

使用道具 举报

668#
发表于 2020-12-7 18:20:42 | 只看该作者
本帖最后由 liuzhaoyzz 于 2020-12-8 06:49 编辑
2011yaya2007777 发表于 2020-12-7 14:52
这就奇怪了!原来有两处提示 “out of memory“,我修改为不同的提示了。可否再仔细看看。
可否再仔细看看。

你是给我说的,还是给wintoflash说的,我这边想不出是什么原因,该怎么尝试。
“out of memory“,有没有可能不是主程序抛出的,是其调用的子程序抛出的?用文本内容搜索器比如filelocator搜索下这个关键字试试呢?

点评

艹 基本上确定了,x64 UEFI 固件一般都不会分配 4GB 以上内存,有的甚至不会分配 2GB 以上内存。  详情 回复 发表于 2020-12-7 18:37
回复

使用道具 举报

669#
发表于 2020-12-7 18:37:09 | 只看该作者
本帖最后由 wintoflash 于 2020-12-7 18:48 编辑
liuzhaoyzz 发表于 2020-12-7 18:20
你是给我说的,还是个wintoflash说的,我这边想不出是什么原因,该怎么尝试。
“out of  ...

艹 基本上确定了,x64 UEFI 固件一般都不会分配 4GB 以上内存,有的甚至不会分配 2GB 以上内存。
强行指定一个 4GB 以上的地址是可以的。下图是先把一个vhd加载到内存,再启动 winpe 安装 svbus 驱动。


回复

使用道具 举报

670#
 楼主| 发表于 2020-12-7 19:45:53 | 只看该作者
liuzhaoyzz:我是跟你说的。wintoflash已经有结论了,就不用费事了。
回复

使用道具 举报

671#
 楼主| 发表于 2020-12-7 20:24:20 来自手机 | 只看该作者
本帖最后由 2011yaya2007777 于 2020-12-7 20:25 编辑

那就利用 --top 强制加载到4Gb以上内存。明天看看怎么修改。
回复

使用道具 举报

672#
 楼主| 发表于 2020-12-8 15:33:50 | 只看该作者
看看使用 map --mem --top 能不能强制加载到4GB以上内存。

BOOTX64.rar

137.5 KB, 下载次数: 19, 下载积分: 无忧币 -2

点评

map --mem --top加载到高位内存成功了,因为看到了尺寸在变大,慢慢地达到100%那个尺寸。 然后启动的时候蓝屏了,0xc00000225错误,这个错误,我们在尝试UEFI-RAMOS的时候多次碰到过,不明白原因。  详情 回复 发表于 2020-12-8 18:16
回复

使用道具 举报

673#
发表于 2020-12-8 18:09:20 来自手机 | 只看该作者
我用g4e加载grubfm.iso不成功

IMG_20201207_213341.jpg (55.87 KB, 下载次数: 98)

IMG_20201207_213341.jpg

点评

grubfm.iso 是传统模式下用的,不支持UEFI, 你得 grubfm.efi  发表于 2020-12-8 19:13
回复

使用道具 举报

674#
发表于 2020-12-8 18:16:06 | 只看该作者
2011yaya2007777 发表于 2020-12-8 15:33
看看使用 map --mem --top 能不能强制加载到4GB以上内存。

map --mem --top加载到高位内存成功了,因为看到了尺寸在变大,慢慢地达到100%那个尺寸。
然后启动的时候蓝屏了,0xc00000225错误,这个错误,我们在尝试UEFI-RAMOS的时候多次碰到过,不明白原因。

QQ图片20201208181253.jpg (51.88 KB, 下载次数: 81)

QQ图片20201208181253.jpg

点评

winload.efi 一般有两个位置 \windows\winload.efi 或 \window\sytem32\winload.efi 会不会是BCD没指定对  详情 回复 发表于 2020-12-8 19:25
试试这里的grub2 http://bbs.wuyou.net/forum.php?mod=redirect&goto=findpost&ptid=417233&pid=4190985&fromuid=487838  详情 回复 发表于 2020-12-8 18:32
回复

使用道具 举报

675#
发表于 2020-12-8 18:32:49 | 只看该作者
liuzhaoyzz 发表于 2020-12-8 18:16
map --mem --top加载到高位内存成功了,因为看到了尺寸在变大,慢慢地达到100%那个尺寸。
然后启动的时 ...

试试这里的grub2
http://bbs.wuyou.net/forum.php?m ... &fromuid=487838
回复

使用道具 举报

676#
 楼主| 发表于 2020-12-8 18:40:32 | 只看该作者
我用g4e加载grubfm.iso不成功

在菜单第一行增加
debug=3
再测试,截图。
回复

使用道具 举报

677#
 楼主| 发表于 2020-12-8 18:50:27 | 只看该作者
然后启动的时候蓝屏了

不知是不是因为4GB以上内存被占用引起的。
记得以前在BIOS模式,启动Windows前,在内存高位空白处写入一些数据,就出现问题了。记不清当时是什么错误代码。

点评

我觉得不是4GB以上内存被占用引起的。 windows到bootmgfw.efi是个黑盒子,关于这个黑盒子里面的秘密,在UEFI-RAMOS启动领域,已经有很多很多前辈们做过很多尝试,我感觉可能是windows不能顺利读取内存盘里面的\EFI\  详情 回复 发表于 2020-12-8 19:30
回复

使用道具 举报

678#
发表于 2020-12-8 19:25:17 | 只看该作者
本帖最后由 2011whp 于 2020-12-8 19:30 编辑
liuzhaoyzz 发表于 2020-12-8 18:16
map --mem --top加载到高位内存成功了,因为看到了尺寸在变大,慢慢地达到100%那个尺寸。
然后启动的时 ...

winload.efi   一般有两个位置   \windows\winload.efi    或  \window\sytem32\winload.efi

会不会是BCD没指定对

或者
参照 627楼(在21页),转到  shell 下启动  


点评

vhd里面的bcd设置是这样子的,我感觉不应该是vhd里面的\Windows\System32\Boot\winload.efi路径指向的问题,因为同一个vhd,用bootmgfw.efi引导这个vhd完全没问题,引导路径就是vhd之外的bootmgfw.efi→BCD→vhd里面  详情 回复 发表于 2020-12-8 19:34
回复

使用道具 举报

679#
发表于 2020-12-8 19:30:24 | 只看该作者
本帖最后由 liuzhaoyzz 于 2020-12-8 19:38 编辑
2011yaya2007777 发表于 2020-12-8 18:50
不知是不是因为4GB以上内存被占用引起的。
记得以前在BIOS模式,启动Windows前,在内存高位空白处写入一 ...

我觉得不是4GB以上内存被占用引起的。


windows的bootmgfw.efi是个黑盒子,关于这个黑盒子里面的秘密,在UEFI-RAMOS启动领域,已经有很多很多前辈们做过很多尝试,我感觉可能是windows的
\EFI\Microsoft\Boot\BCD不能顺利读取内存盘里面的\windows\sytem32\winload.efi文件引起的,不知道是不是因为svbus驱动启动时间太晚?按道理上来说,不应该晚啊,因为BIOS下面svbus所在的驱动组就没问题。
回复

使用道具 举报

680#
发表于 2020-12-8 19:34:16 | 只看该作者
2011whp 发表于 2020-12-8 19:25
winload.efi   一般有两个位置   \windows\winload.efi    或  \window\sytem32\winload.efi

会不会是 ...

vhd里面的bcd设置是这样子的,我感觉不应该是vhd里面的\Windows\System32\Boot\winload.efi路径指向的问题,因为同一个vhd,用bootmgfw.efi引导这个vhd完全没问题,引导路径就是vhd之外的bootmgfw.efi→BCD→vhd里面的bootmgfw.efi→VHD里面的BCD,如果BCD指向错误,VHD本身就不可能正常启动。

回复

使用道具 举报

681#
发表于 2020-12-8 19:47:35 | 只看该作者
本帖最后由 2011whp 于 2020-12-8 20:09 编辑

直接启动 vhd  是不是方向错了,因为这样启动,本身短路了,微软的标准流程

vhd  是否是 真的磁盘(没有 外置引导 护架的情况下)

别的是用专用模块启动 vhd  是模块内 模拟了  外置的 bootmgfw ,有了 外置 加持,才能正确

VHD设计 不是被 加到内存用的
测试 svbus  还是 img 的好

点评

不管是什么原因,我感觉g4e或者grub2已经做完了他作为一个UEFI引导器该做的事情了,加载镜像到内存盘,并且做好了与svbus驱动的对接。 而svbus也做了他还做的事情了,就是让windows能够识别内存盘。  详情 回复 发表于 2020-12-8 20:20
回复

使用道具 举报

682#
发表于 2020-12-8 20:20:43 来自手机 | 只看该作者
本帖最后由 liuzhaoyzz 于 2020-12-8 20:35 编辑
2011whp 发表于 2020-12-8 19:47
直接启动 vhd  是不是方向错了,因为这样启动,本身短路了,微软的标准流程

vhd  是否是 真的磁盘(没有 ...


       不管是什么原因,我感觉g4e或者grub2已经做完了他作为一个UEFI引导器该做的事情了,加载镜像到内存盘,并且做好了与svbus驱动的对接(因为众多国外网友反馈成功在RAMOS中看到了svbus的仿真磁盘,证明g4d引导器与svbus对接成功)。
       而svbus也做了他该做的事情了,就是让windows能够识别内存盘。
       剩下的问题,可能就需要对启动领域和RAMOS大神们继续深究下去了。现在面临的问题,就是如何让RAMOS启动流程继续下去的问题了。
回复

使用道具 举报

683#
发表于 2020-12-8 20:26:39 | 只看该作者
本帖最后由 2011whp 于 2020-12-9 11:18 编辑

嗯, 解决了加载大镜像 的问题,g4e 与svbus 握手方面也能了

估计,做成 img 的RAMOS 问题不大(除非 svbus 读不到 高位内存)
目前,绕开 bootmgfw的问题  
        1.  直接 chainloader (hd-1)
        2.   是去 uefi shell  下 启动

点评

vhd与img区别不大,img似乎有两种,一种是软盘格式,没有MBR;一种是硬盘格式,有MBR的,这种格式似乎和VHD格式差不多,格式上的区别,对于启动影响应该不大吧。  详情 回复 发表于 2020-12-8 20:32
回复

使用道具 举报

684#
发表于 2020-12-8 20:32:45 来自手机 | 只看该作者
本帖最后由 liuzhaoyzz 于 2020-12-8 20:40 编辑
2011whp 发表于 2020-12-8 20:26
嗯, 解决了加载大镜像 的问题,g4e 与svbus 握手方面也能了

估计,做成 img 的RAMOS 问题不大(除非 sv ...


        vhd与img区别不大,img似乎有两种,一种是软盘格式,没有MBR;一种是硬盘格式,有MBR的,这种格式似乎和VHD格式差不多,格式上的区别,对于启动影响应该不大吧。

直接 chainloader (hd-1),我现在的菜单就是的呀。

转到UEFI的shell下面去启动,感觉太绕了,太麻烦,已经有了g4e/grub2,转去shell下,感觉没什么意思,我没兴趣尝试,如果你有兴趣,等待你的探索结果。

点评

说来怎么消除vhd的碎片?  详情 回复 发表于 2020-12-8 20:51
回复

使用道具 举报

685#
发表于 2020-12-8 20:49:00 | 只看该作者
估计是部份数据被覆盖了
map,不加 --mem或加--mem后进pe,能发现硬盘,不过分区丢失
不过我试的是grub2
回复

使用道具 举报

686#
发表于 2020-12-8 20:51:36 | 只看该作者
liuzhaoyzz 发表于 2020-12-8 20:32
vhd与img区别不大,img似乎有两种,一种是软盘格式,没有MBR;一种是硬盘格式,有MBR的,这种 ...

说来怎么消除vhd的碎片?
回复

使用道具 举报

687#
发表于 2020-12-8 21:34:01 | 只看该作者
本帖最后由 2011whp 于 2020-12-9 11:18 编辑

做了个 img 4G  分了两个区:
     第一分区:fat32  (复制了一PE光盘内的所有内容)
     第二分区:ntfs 空

map --mem --top /img.img (hd)
chainloader (hd-1)
可以启动PE,


说明:
img高位内存  运行引导  没问题
剩下的不会试了
回复

使用道具 举报

688#
发表于 2020-12-8 22:41:47 来自手机 | 只看该作者
江南一根葱 发表于 2020-12-8 20:51
说来怎么消除vhd的碎片?

方法一,复制粘贴该vhd,副本就是没有碎片的,前提是需要硬盘有足够的剩余空间用于腾挪。
方法二,直接用wincontig分析并整理文件。前提也是需要硬盘有足够的剩余空间。
一般地来说,上面的方法对于机械硬盘很有效。对于ssd不一定有效果,因为ssd有FTL逻辑转换电路中间层,ssd直接格盘拷贝文件进去,应该就是连续的吧。
回复

使用道具 举报

689#
发表于 2020-12-8 23:29:14 | 只看该作者
本帖最后由 mdyblog 于 2020-12-8 23:30 编辑

支持 的Windows驱动程序和测试演示包: https://www.lanzoui.com/b089yxk9e
支持磁盘BLOCKLIST。 支持内存盘。支持 不连续。

点评

mdyblog大神,这些对于g4e或者grub2开发方面,有哪些可以借鉴的地方,原理或者部分源代码可以公开吗?  详情 回复 发表于 2020-12-9 07:32
回复

使用道具 举报

690#
发表于 2020-12-9 06:44:55 来自手机 | 只看该作者
这是启动grubfm.ISO,加debug=3后的启动截图。换用启动grubfm.efi后启动成功。

IMG_20201209_064115.jpg (56.09 KB, 下载次数: 116)

IMG_20201209_064115.jpg
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-5-8 17:34

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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