无忧启动论坛

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

[原创] GRUB4DOS for UEFI

    [复制链接]
3151#
发表于 2024-1-29 13:11:46 | 只看该作者
回复

使用道具 举报

3152#
发表于 2024-2-6 21:09:50 | 只看该作者
本帖最后由 hhh333 于 2024-2-6 23:01 编辑
2011yaya2007777 发表于 2024-1-29 09:44
一般概念,0xA0:0xFF是光盘,这是map一个光盘时,grub内部分配的驱动器号。
但是VM虚拟机原生启动光盘, ...

if %?_BOOT% >= 0x9f
这用法不行啊,%?_BOOT%是带括号的
if比较必须要双目运算符?<、>、=不行,必须要<=、>=、==
回复

使用道具 举报

3153#
发表于 2024-2-7 16:43:37 | 只看该作者
本帖最后由 hhh333 于 2024-2-7 16:44 编辑

判断是不是从光盘启动,是不是只要if %?_BOOT%<=(0xff) echo boot from cd
另外想问一下,只写“<”或“>”要怎么写?
回复

使用道具 举报

3154#
发表于 2024-2-7 19:01:18 | 只看该作者
2010XwX 发表于 2023-12-4 18:02
是的,升级过2次,一次是 g4d 升级到 2023.03.29 版,grubfm 升级一次,另一次是 2023.06.23 版(注意: ...

请问最新的grubfm在哪下载?谢谢!
回复

使用道具 举报

3155#
发表于 2024-2-7 19:38:36 | 只看该作者
481416322 发表于 2024-2-7 19:01
请问最新的grubfm在哪下载?谢谢!

参阅:http://bbs.wuyou.net/forum.php?m ... &fromuid=357299

这是第一次升级,顺着往后,有第二次升级,我目前使用下来没有出现问题。

点评

谢谢!谢谢!  详情 回复 发表于 2024-2-8 05:22
回复

使用道具 举报

3156#
 楼主| 发表于 2024-2-7 19:58:33 | 只看该作者
本帖最后由 2011yaya2007777 于 2024-2-8 06:34 编辑
if比较必须要双目运算符?<、>、=不行,必须要<=、>=、==

是的。

另外想问一下,只写“<”或“>”要怎么写?

不能。

if %?_BOOT% >= 0x9f
这用法不行啊,%?_BOOT%是带括号的

没有注意,谢谢提醒。

判断是不是从光盘启动,是不是只要if %?_BOOT%<=(0xff) echo boot from cd

应该是这样吧
if %?_BOOT%>=(0x9f) echo boot from cd
if %?_BOOT%==(0x80) echo boot from hd

if %?_BOOT%==(0) echo boot from rd

点评

明确几个点: 1、if的比较是字符串比较,即是按字母编码从左到右比较; 2、%?_BOOT%、%@boot%都是带括号的标志,得到的结果可能有UD启动为(ud)、网络启动为(pd)、硬盘启动为(hdx,x)如果(hd0,1) (hd1,1)等、RAM内存  详情 回复 发表于 2024-2-8 09:28
回复

使用道具 举报

3157#
发表于 2024-2-8 05:22:03 | 只看该作者
2010XwX 发表于 2024-2-7 19:38
参阅:http://bbs.wuyou.net/forum.php?mod=redirect&goto=findpost&ptid=427201&pid=4908219&fromuid=35 ...

谢谢!谢谢!
回复

使用道具 举报

3158#
发表于 2024-2-8 09:28:07 | 只看该作者
本帖最后由 hhh333 于 2024-2-8 09:39 编辑

明确几个点:
1、if的比较是字符串比较,即是按字母编码从左到右比较;
2、%?_BOOT%、%@root%都是带括号的标志,得到的结果可能有UD启动为(ud)、网络启动为(pd)、硬盘启动为(hdx,x)如果(hd0,1) (hd1,1)等、RAM内存模拟盘为(rd)不大清楚这个盘有不有编号譬如rd0/rd1/rd2,只有光盘启动标志为(0x9f)~(0xff);
如果是这样那就简单了<=(0xff)都是光盘
回复

使用道具 举报

3159#
发表于 2024-2-8 09:38:09 | 只看该作者
我觉得既然?_BOOT/@root表示启动设备就应该统一格式,CD启动时就是(cd)而不应该其他是ud/hd/rd/pd只有光盘才是0x16进制形式。
回复

使用道具 举报

3160#
发表于 2024-2-8 09:42:46 | 只看该作者
还有一个问题就是?_BOOT和@root是不是有区别?是不是前者表示初始启动设备,后者表示当前启动设备,即开始是相同的,但如果用root命令改变了启动设备,只有@root更新,而?_BOOT不更新。
回复

使用道具 举报

3161#
 楼主| 发表于 2024-2-8 11:54:56 来自手机 | 只看该作者
boot是启动设备,root是根目录,或者说是跟设备。两者可能相同,也可能不同。比如从光盘启动,但是在光盘没有找到menu.lst,而是在硬盘找到了,那么这时boot=cd,root=(hd0,1)
回复

使用道具 举报

3162#
发表于 2024-2-20 23:18:43 来自手机 | 只看该作者
感谢分享。
回复

使用道具 举报

3163#
发表于 2024-2-22 17:48:00 | 只看该作者
学习一下
回复

使用道具 举报

3164#
发表于 2024-2-27 16:59:38 | 只看该作者
yaya大仙法力无边,目前用G4E可以启动原有G4D的系统镜像(F驱动)但是会有win7 7B 蓝屏和win10的 inaceesible boot device 请教如何解决(G4D启动完全没问题)
回复

使用道具 举报

3165#
发表于 2024-2-27 17:00:53 | 只看该作者
(G4D启动镜像完全没问题) 需要换驱动吗
回复

使用道具 举报

3166#
发表于 2024-2-27 17:01:50 | 只看该作者
F驱动 不兼容G4EFI吗?
回复

使用道具 举报

3167#
发表于 2024-2-27 20:45:41 | 只看该作者
谢谢大神的无私奉献!
回复

使用道具 举报

3168#
发表于 2024-2-28 09:55:31 | 只看该作者
本帖最后由 xianglang 于 2024-2-28 09:59 编辑

下载2024-02-26版(http://dl.grub4dos.chenall.net/grub4dos-for_UEFI-2024-02-26.7z)出错,出现如下提示信息(G4D也是一样):

{"error":"Document not found"}

Github 又经常访问困难,或者访问不了——Github刚才试了下,终于可以访问下载了。
回复

使用道具 举报

3169#
发表于 2024-2-28 10:05:32 | 只看该作者
看看
回复

使用道具 举报

3170#
 楼主| 发表于 2024-2-28 10:06:48 来自手机 | 只看该作者
这几天网络抽风了
回复

使用道具 举报

3171#
发表于 2024-2-29 10:46:06 | 只看该作者
2010VT8365A 发表于 2024-2-27 16:59
yaya大仙法力无边,目前用G4E可以启动原有G4D的系统镜像(F驱动)但是会有win7 7B 蓝屏和win10的 inaceesib ...

Firadisk已经完全落伍了。换SVBus。
回复

使用道具 举报

3172#
发表于 2024-3-20 18:19:14 | 只看该作者
本帖最后由 hhh333 于 2024-3-20 18:28 编辑

想请教一个问题,以前我是用grldr.mbr来传统BIOS启动PE,但这个总是从启动盘的根下找文件,能不能从了目录中找文件?我如果要自己编译这个grldr.mbr要怎么做
回复

使用道具 举报

3173#
 楼主| 发表于 2024-3-20 20:31:16 来自手机 | 只看该作者
目前只能从根目录查找。你可以在grldrstart.S里面更改,然后编译grub4dos。grldr在根目录很烦吗?
回复

使用道具 举报

3174#
发表于 2024-3-21 04:38:30 | 只看该作者
hhh333 发表于 2024-3-20 18:19
想请教一个问题,以前我是用grldr.mbr来传统BIOS启动PE,但这个总是从启动盘的根下找文件,能不能从了目录 ...

你可以使用 wee,来取代 grldr.mbr。在 wee 的菜单中,你可以指定查找的位置。这样,就可以避免去修改和编译 grldr.mbr 了。

要编译 grldr.mbr,让它支持从子目录启动 grldr,这决不像看起来那么容易。是超高难度!基本可以认为是 “不可能做到” 的。这是因为,grldr.mbr 里面查找 grldr 的代码,是按照不同分区(卷)的格式来动态制作引导记录,然后再调用引导记录进行查找和引导的。每种卷的引导记录通常只有一个引导扇区(或少数几个扇区),已经经过了充分的优化,512 字节通常都用光了,很难再进行任何调整。即便你是汇编语言的超级高手,也难以修改了。这些引导扇区代码,都不包括引导子目录里面的 grldr。微软的引导扇区也不会去寻找子目录里面的 ntldr 或 bootmgr。如果要查找子目录,那么,单扇区的代码根本就不够,需要多扇区才行。那样的话,grldr.mbr 将会膨胀很多!所以,要想修改,工作量超级庞大,是不可想象的。wee 为何可以支持子目录?因为 wee 总共有 62 个扇区啊,空间大啊。任意多级子目录,wee 都支持。

wee 用于硬盘是没问题的,因为硬盘都支持 LBA。

wee 甚至也能用于优盘,因为现在的主板上的优盘 BIOS,差不多也都支持 LBA 了。如果你只是个人使用,碰上失败的概率不太大。在优盘上万一碰上失败,那就换成 fbinst 或者别的启动方式。
回复

使用道具 举报

3175#
发表于 2024-3-21 10:58:09 | 只看该作者
不点 发表于 2024-3-21 04:38
你可以使用 wee,来取代 grldr.mbr。在 wee 的菜单中,你可以指定查找的位置。这样,就可以避免去修改和 ...

哦,感谢解答,我这技术肯定搞不定,我看下wee
回复

使用道具 举报

3176#
发表于 2024-3-22 09:10:30 | 只看该作者
本帖最后由 hhh333 于 2024-4-7 21:38 编辑
2011yaya2007777 发表于 2024-3-20 20:31
目前只能从根目录查找。你可以在grldrstart.S里面更改,然后编译grub4dos。grldr在根目录很烦吗?

哈哈,grldr不烦。主要是用这个文件来装载bootmgr的,每一个PE对应一个mgr。而这个mgr是放在\BOOT下的。
譬如,我的PE安装到硬盘,其中一种方式就是改boot.ini的:
  1. [BOOT loader]
  2. timeout=10
  3. default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS
  4. [operating systems]
  5. multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP/2003 (Boot to C:\Windows)" /noexecute=optin /fastdetect
  6. C:\BOOT\H3_AVL06.BIN="H3 Win10 PE 64"
  7. C:\BOOT\H3_AVL10.BIN="H3 Win10 PE"
  8. C:\BOOT\H3_AVL16.BIN="H3 Win8.1 PE 64"
  9. C:\BOOT\H3_AVL81.BIN="H3 Win8.1 PE"
  10. C:\BOOT\H3_AVL03.BIN="H3 Win2003 PE"
  11. C:\BOOT\H3_AVLW7.BIN="H3 Win7 PE"
  12. C:\BOOT\H3_AVLW8.BIN="H3 Win8 PE"
  13. C:\BOOT\H3_AVL64.BIN="H3 Win8 PE 64"
  14. C:\BOOT\H3_AVLIN.BIN="H3 Win2003 PE ExtTools-Built-In"
  15. C:\BOOT\H3_AVLRM.BIN="H3 Win2003 PE Non-RAM-Mode"
  16. C:\BOOT\H3_AVLNV.BIN="H3 Win2003 PE Native_Mode"
  17. C:\grldr="H3 Grub4DOS for NT5"
复制代码
对应关系是这样的:
  1. 硬盘启动器(grldr.mbr改名而来)-->指向的PE启动器---->对应的BCD-->对应的WIM------>对应的PE
  2.     H3_AVLW7.BIN------------------------>H3_MGRW7.BIN------>BW7-------->H3_7PE.WIM----->Win7PE
  3.     H3_AVLW8.BIN------------------------>H3_MGRW8.BIN------>BW8-------->H3_8PE.WIM----->Win8 PE
  4.     H3_AVL81.BIN------------------------->H3_MGR81.BIN------>B81---------->H3_81PE.WIM--->Win81 PE
  5.     H3_AVL10.BIN------------------------->H3_MGR10.BIN------>B10---------->H3_10PE.WIM--->Win10 PE
  6.     H3_AVL64.BIN------------------------->H3_MGR64.BIN------>B64---------->H3_864.WIM----->Win8 64 PE
  7.     H3_AVL16.BIN------------------------->H3_MGR16.BIN------>B16---------->H3_8164.WIM--->Win81 64 PE
  8.     H3_AVL06.BIN------------------------->H3_MGR06.BIN------>B06---------->H3_1064.WIM--->Win10 64 PE
  9.     H3_AVL11.BIN------------------------->H3_MGR11.BIN------>B11---------->H3_1164.WIM--->Win11 64 PE
复制代码


这样我就必须把H3_MGRxx.BIN必须复制一份放根目录下,显得有点多,当然也可以做成统一一个BCD,把这些都包含进去,但这需要二次选择不是?
回复

使用道具 举报

3177#
发表于 2024-3-22 09:21:35 | 只看该作者
下载
回复

使用道具 举报

3178#
发表于 2024-3-27 15:44:57 | 只看该作者
2011yaya2007777 发表于 2023-5-22 18:34
有希望。但是容量大了不易使用固定地址,恐怕不兼容SVbus了。

楼主,最新版的,是不是不兼容SVBUS了?
最近,我用“最新版的grub4dos-for_UEFI-2024-02-26.7z+SVBUS”挂载的盘,会出现数据丢失、数据损坏的情况。
================================================

楼主你好,有个问题困扰着小弟,能否帮忙看看:

小弟的需求是,开机后,系统能同时挂载几个差分的VHD:
windows10.vhd,  program.vhd,   data.vhd

//================================
网上的的一些做法是:创建开机启动的“计划任务”、创建开机启动的“Windows服务”。
但是,这些方法,都不能满足小弟的需求。(因为计划任务、Windows服务,这些在开机的启动流程中,都太后了。)
小弟需要的解决方案是:开机后,能最早的挂载(程序盘、数据盘)的VHD,越早越好。
//================================
请问楼主大侠,有好的解决方案吗?





回复

使用道具 举报

3179#
发表于 2024-3-27 23:58:12 | 只看该作者
2011yaya2007777 发表于 2020-12-29 16:03
那就算了吧,不管 SVBus 的碎片问题了,省省心吧。

请问,碎片问题,是不是解决不了噢?
svbus那边,有通知作者吗?
或者说,有没有第三方的支持碎片的其它驱动?
回复

使用道具 举报

3180#
发表于 2024-3-28 09:39:59 | 只看该作者
2011yaya2007777 发表于 2020-12-23 10:54
谢谢你,这么详尽的解答,受教了!

楼主您好,请问,哪里有支持碎片的svbus下载喔?
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-11-22 09:15

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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