无忧启动论坛

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

[原创] GRUB4DOS for UEFI

    [复制链接]
3151#
发表于 2024-1-28 22:52:13 | 只看该作者
本帖最后由 hhh333 于 2024-1-29 00:13 编辑

新版,CD的标志改了?0x9f也是光盘

以前不是0xA0:0xFF才是光盘吗?

不支持诸如:
if %?_BOOT%==(cd)
if %?_BOOT%==(pd)
if %?_BOOT%==(ud)

这类用法了吗?
回复

使用道具 举报

3152#
 楼主| 发表于 2024-1-29 09:44:29 | 只看该作者
新版,CD的标志改了?0x9f也是光盘

一般概念,0xA0:0xFF是光盘,这是map一个光盘时,grub内部分配的驱动器号。
但是VM虚拟机原生启动光盘,虚拟机的BIOS固件自己会分配驱动器号0x9f(QEMU会分配0xe0)。因此grub_0.4.6a初期就修改为0x9F:0xFF是光盘,不是最近的事情。

不支持诸如:
if %?_BOOT%==(cd)
if %?_BOOT%==(pd)
if %?_BOOT%==(ud)
这类用法了吗?

最初(cd)是特指原生启动光盘,不包含映射光盘。为了与G4E的菜单兼容,现在(cd)与(hd)概念相同,即包含原生启动光盘,也包含映射光盘。
使用上,可以这样:
map /xx.iso (cd)
chainloader (cd-1)

因此现在:if %?_BOOT%==(cd) 无效。
可以这样:if %?_BOOT% >= 0x9f

由于pd=0x21,  ud=0x23是固定的,因此:
if %?_BOOT%==(pd)
if %?_BOOT%==(ud)
可以继续使用。

点评

if %?_BOOT% >= 0x9f 这用法不行啊  详情 回复 发表于 2024-2-6 21:09
谢谢解答,终于搞清了  详情 回复 发表于 2024-1-29 12:53
回复

使用道具 举报

3153#
发表于 2024-1-29 11:51:17 | 只看该作者
很给力!
回复

使用道具 举报

3154#
发表于 2024-1-29 12:53:07 | 只看该作者
2011yaya2007777 发表于 2024-1-29 09:44
一般概念,0xA0:0xFF是光盘,这是map一个光盘时,grub内部分配的驱动器号。
但是VM虚拟机原生启动光盘, ...

谢谢解答,终于搞清了
回复

使用道具 举报

3155#
发表于 2024-1-29 13:11:46 | 只看该作者
测试下先。
回复

使用道具 举报

3156#
发表于 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比较必须要双目运算符?<、>、=不行,必须要<=、>=、==
回复

使用道具 举报

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

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

使用道具 举报

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

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

点评

参阅:http://bbs.wuyou.net/forum.php?mod=redirect&goto=findpost&ptid=427201&pid=4908219&fromuid=357299 这是第一次升级,顺着往后,有第二次升级,我目前使用下来没有出现问题。  详情 回复 发表于 2024-2-7 19:38
回复

使用道具 举报

3159#
发表于 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
回复

使用道具 举报

3160#
 楼主| 发表于 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
回复

使用道具 举报

3161#
发表于 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 ...

谢谢!谢谢!
回复

使用道具 举报

3162#
发表于 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)都是光盘
回复

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

点评

Firadisk已经完全落伍了。换SVBus。  详情 回复 发表于 2024-2-29 10:46
回复

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

使用道具 举报

3172#
发表于 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刚才试了下,终于可以访问下载了。
回复

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

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

使用道具 举报

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

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

点评

你可以使用 wee,来取代 grldr.mbr。在 wee 的菜单中,你可以指定查找的位置。这样,就可以避免去修改和编译 grldr.mbr 了。 要编译 grldr.mbr,让它支持从子目录启动 grldr,这决不像看起来那么容易。是超高难度  详情 回复 发表于 2024-3-21 04:38
回复

使用道具 举报

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

点评

哈哈,grldr不烦。主要是用这个文件来装载bootmgr的,每一个PE对应一个mgr。而这个mgr是放在\BOOT下的。 譬如,我的PE安装到硬盘,其中一种方式就是改boot.ini的: 对应关系是这样的: 这样我就必须把H3_AVLx  详情 回复 发表于 2024-3-22 09:10
回复

使用道具 举报

3178#
发表于 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 或者别的启动方式。

点评

哦,感谢解答,我这技术肯定搞不定,我看下wee  详情 回复 发表于 2024-3-21 10:58
回复

使用道具 举报

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

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

使用道具 举报

3180#
发表于 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,把这些都包含进去,但这需要二次选择不是?
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-5-13 12:35

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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