无忧启动论坛

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

[原创] GRUB4DOS for UEFI

    [复制链接]
1921#
发表于 2021-10-8 10:53:07 | 只看该作者
回复

使用道具 举报

1922#
发表于 2021-10-10 11:31:23 | 只看该作者
parttype 貌似不支持gpt分区?在efi shell下修改,好像不起作用?

parttype (hd0,4) 0xFE

然后再查看,没有变化
回复

使用道具 举报

1923#
发表于 2021-10-12 13:42:44 | 只看该作者
我都不知道楼主说的什么,但我知道楼主真的很厉害!
回复

使用道具 举报

1924#
发表于 2021-10-12 19:53:05 | 只看该作者

报告一个现象:

我制作的BIOS/UEFI双启动优盘,神舟优雅x4上要打开CSM支持才能通过Grub4DOS for UEFI 启动,联想上不需要开启就可以启动。

补充:神舟优雅x4 改为纯 UEFI 后,xorboot u 的启动引导没有问题。Grub4DOS for UEFI (2021-09-08)会出现死机状态。

硬盘、优盘上都是这样。猜测应该是 神舟优雅x4 的BIOS比较特殊吧。
回复

使用道具 举报

1925#
发表于 2021-10-12 19:55:36 | 只看该作者
本帖最后由 blank007 于 2021-10-12 19:56 编辑

报告一个现象:  
我制作的BIOS/UEFI双启动优盘,神舟优雅x4上要打开CSM支持才能通过Grub4DOS for UEFI 启动,联想上不需要开启就可以启动。  

补充:神舟优雅x4 改为纯 UEFI 后,xorboot u 的启动引导没有问题。Grub4DOS for UEFI (2021-09-08)会出现死机状态。  
硬盘、优盘上都是这样。猜测应该是 神舟优雅x4 的BIOS比较特殊吧。


回复

使用道具 举报

1926#
发表于 2021-10-12 20:45:06 | 只看该作者
blank007 发表于 2021-10-12 19:55
报告一个现象:  
我制作的BIOS/UEFI双启动优盘,神舟优雅x4上要打开CSM支持才能通过Grub4DOS for UEFI  ...

wintoflash 的 grub205 呢  

另外  xorboot u 能间接 引导 g4e 么?

不会是 安全启动 影响吧 (xor 不开源)

回复

使用道具 举报

1927#
发表于 2021-10-12 21:32:00 | 只看该作者
2011whp 发表于 2021-10-12 20:45
wintoflash 的 grub205 呢  

另外  xorboot u 能间接 引导 g4e 么?

没有用 grub 2.05 测试。

也没有用 xorboot u 间接引导   g4e,安全启动是关闭的
回复

使用道具 举报

1928#
发表于 2021-10-12 21:48:59 | 只看该作者
blank007 发表于 2021-10-12 21:32
没有用 grub 2.05 测试。

也没有用 xorboot u 间接引导   g4e,安全启动是关闭的

还有 ventoy , 挨个 试下

等大神们 解决,(难道 还有什么 机巧 没发现?)
回复

使用道具 举报

1929#
 楼主| 发表于 2021-10-13 21:30:35 | 只看该作者
不支持安全启动
回复

使用道具 举报

1930#
发表于 2021-10-14 16:08:48 来自手机 | 只看该作者
安全启动已关闭。目前的结果:
回复

使用道具 举报

1931#
发表于 2021-10-15 10:28:06 | 只看该作者
本帖最后由 useQQqqq99 于 2021-10-15 10:40 编辑

可以仿造g4d的run/siso的自动菜单吗? menu.lst怎么编辑?
回复

使用道具 举报

1932#
发表于 2021-10-15 10:45:55 | 只看该作者
本帖最后由 lpsyuntao 于 2021-10-15 10:50 编辑
useQQqqq99 发表于 2021-10-15 10:28
可以仿造g4d的run/siso的自动菜单吗? menu.lst怎么编辑?

yaya已经改写了一个for efi的run,用法和G4D一样

yaya原帖:http://bbs.wuyou.net/forum.php?m ... 4995&extra=page%3D2
---------------------------------------------------------------
menu.lst如下

title    Run  AutoMenu /iso/
command /efi/grub/run --automenu-all /iso/

##列出所有设备及其位置、大小等详细信息(菜单模式)
title    Run  AutoMenu
command /efi/grub/run --automenu-all

##列出所有设备及其位置、大小等详细信息(列表模式)
title    Run  AutoList
command /efi/grub/run --autolist-all



回复

使用道具 举报

1933#
发表于 2021-10-15 11:30:23 | 只看该作者
本帖最后由 dearmouse 于 2021-10-15 11:38 编辑
2011yaya2007777 发表于 2021-9-28 15:11
我觉得应当首先弄清楚脚本每一句的含义。

pause --test-key > (md)0x300+1,1 //返回键ASCII到内存0x60 ...

这个我也是继承前人的结果,我自己理解为:通过pause --test-key > (md)0x300+1,1 命令把键盘扫描码写到(md)0x300+1处,然后通过dd if=(md) of=(md) bs=1 count=512 skip=0x4cb00 seek=0x2000000命令转存到0x2000000,后续的命令都是去检索0x2000000的内容。至于为什么要转一下,我也没搞清楚。

我的目的相对简单,通过pause命令等待一个按键,然后要检索这个按键的内容做相对应的操作。
按您说的,pause --test-key > (md)0x300+1,1命令实现返回按键的ASCII到内存0x60000字节位置,但实际我执行这个命令后,输入一个按键,然后马上一个read 0x60000命令,读到的内容都是0x30,不是对应的扫描码呢?
另请教:要实现我的目标,正确应该如何去书写menu得到这个扫描码!
回复

使用道具 举报

1934#
发表于 2021-10-15 13:47:04 | 只看该作者
dearmouse 发表于 2021-10-15 11:30
这个我也是继承前人的结果,我自己理解为:通过pause --test-key > (md)0x300+1,1 命令把键盘扫描码写到( ...

简单的  按了 U 键

回复

使用道具 举报

1935#
发表于 2021-10-15 14:20:05 | 只看该作者
lpsyuntao 发表于 2021-10-15 10:45
yaya已经改写了一个for efi的run,用法和G4D一样

yaya原帖:http://bbs.wuyou.net/forum.php?m ... 49 ...

感谢 辛苦了
回复

使用道具 举报

1936#
 楼主| 发表于 2021-10-15 14:51:27 | 只看该作者
这个我也是继承前人的结果,我自己理解为

pause --test-key > (md)0x300+1   
read 0x60000
如果按u键,在0x6000处是ASCII码: 30 30 37 35
如果使用 read 0x60000 读,结果是 0x35373030

你可以使用 2011whp 的方法,在菜单里使用 %aa%
回复

使用道具 举报

1937#
发表于 2021-10-15 14:53:06 | 只看该作者
本帖最后由 dearmouse 于 2021-10-15 16:06 编辑
2011whp 发表于 2021-10-15 13:47
简单的  按了 U 键

上面这条可以解决我的基本问题,但还有种情况不能涵盖,本是希望没有任何按键时,执行一个默认选项。但这条命令写成:pause --test-key --wait=10 | set aa= 后,不论按什么键,aa通通都是10了!
仔细想了下:必须要考虑无人干预的情况,也就是要用pause的话,必须得加上--wait参数来用。
回复

使用道具 举报

1938#
发表于 2021-10-15 15:52:45 | 只看该作者
2011yaya2007777 发表于 2021-10-15 14:51
pause --test-key > (md)0x300+1   
read 0x60000
如果按u键,在0x6000处是ASCII码: 30 30 37 35


grub> pause --test-key --wait=10 > (md)0x300+1
grub> read 0x60000
Address 0x60000: Value 0x9303109(无按键,10秒后的返回值)
grub> pause --test-key --wait=10 > (md)0x300+1
grub> read 0x60000
Address 0x60000: Value 0x9303109(10秒内按U键的返回值)
grub> pause --test-key  > (md)0x300+1
grub> read 0x60000
Address 0x60000: Value 0x35373030(按U键返回值)
grub> pause --test-key  > (md)0x300+1
grub> read 0x60000
Address 0x60000: Value 0x39363030(按I键返回值)
grub> pause --test-key --wait=10 | set aa=
grub> echo %aa%
10(无按键,10秒后的返回值)
grub> pause --test-key --wait=10 | set aa=
grub> echo %aa%
10
grub> pause --test-key --wait=10 | set aa=
grub> echo %aa%
10(10秒内按U键的返回值)
grub>
目前测试下来,看来还是g4d for UEFI和原来的G4d在处理这个的时候,应该还是有些不同的。
原来的g4dg处理这条命令时 pause --test-key --wait=10 | set aa=,无按键情况下,aa为空值,有按键情况下,aa为该按键的扫描码,现在的情况是不管有无按键,通通为wait=后面的这个数值了。
回复

使用道具 举报

1939#
 楼主| 发表于 2021-10-15 16:41:02 来自手机 | 只看该作者
暂停函数,g4d与g4e是一样的吧,没有更改。
回复

使用道具 举报

1940#
发表于 2021-10-21 09:46:01 | 只看该作者
2011yaya2007777 发表于 2021-10-15 16:41
暂停函数,g4d与g4e是一样的吧,没有更改。

特地去G4D里测试了下,pause --test-key --wait=10 > (md)0x300+1后checkrange 0x60000,发现值也是10。
那奇怪了,在原来的G4D里面,下述写法,是可以实现我要的功能的:
pause --test-key --wait=10 > (md)0x300+1,1
        dd if=(md) of=(md) bs=1 count=512 skip=0x4cb00 seek=0x2000000
        fallback 2
        checkrange 0x1372 read 0x2000000 && kernel
        fallback 3
        checkrange 0x1f73 read 0x2000000 && kernel
        fallback 1
        checkrange 0x316e read 0x2000000 && kernel
        fallback 1
        checkrange 0x1 read 0x2000000 && kernel
        fallback 0
按对应的键,进对应的菜单,不按键,进一个默认的菜单。

回复

使用道具 举报

1941#
 楼主| 发表于 2021-10-21 10:40:08 | 只看该作者
!BAT
pause --test-key --wait=3 > nul
write 0x60000 %@retval% > nul
fallback  
checkrange 0x72 read 0x60000 && kernel
fallback 3
checkrange 0x73 read 0x60000 && kernel
fallback 1
checkrange 0x6e read 0x60000 && kernel
fallback 1
checkrange 0x1 read 0x60000 && kernel
fallback 0

注意,0x1键是 SOH 头标开始,是控制字符,uefi 没有这个。
回复

使用道具 举报

1942#
发表于 2021-10-21 13:09:18 | 只看该作者
2011yaya2007777 发表于 2021-10-21 10:40
!BAT
pause --test-key --wait=3 > nul
write 0x60000 %@retval% > nul

感谢yaya的耐心回复,write 0x60000 %@retval%,这条没看懂,@retval是???

按你的这个,应该是差不多了。最后一条的0x1要改成0xffffffff,不按任何键的时候,0x60000是这个值。


另,请教,在g4d 里面,echo  -e  \a原来是输出报警音的,g4d for UEFI 好像不认这个了,现在输出报警音是换成其它的了吗?
回复

使用道具 举报

1943#
 楼主| 发表于 2021-10-21 15:47:31 | 只看该作者
%@retval% 是执行 pause --test-key --wait=3 > nul 的返回值。也就是按键值。

声音使用以下:
beep FREQUENCY DURATION FREQUENCY DURATION ...
回复

使用道具 举报

1944#
发表于 2021-10-22 17:03:42 | 只看该作者
本帖最后由 fuldho 于 2021-10-22 17:07 编辑

uefi启动GRUB4DOS for UEFI菜单menu.lst怎样定义盘符chainloader (xxx)/efi/Microsoft/boot/bootmgfw.efi

efi/Microsoft/boot/bootmgfw.efi在ESP
回复

使用道具 举报

1945#
发表于 2021-10-23 00:38:32 来自手机 | 只看该作者
反馈grub4dos-for_UEF-2021-09-08卡死,
1.refind引导时,有菜单框一闪而过,直接卡死,屏幕全黑
2.直接引导时,有约两行提示也是一闪而过,看不到,而后黑屏卡死

IMG_20211022_162629.jpg (61.3 KB, 下载次数: 181)

IMG_20211022_162629.jpg
回复

使用道具 举报

1946#
发表于 2021-10-23 01:05:20 | 只看该作者
向开发者致敬!
回复

使用道具 举报

1947#
 楼主| 发表于 2021-10-23 07:44:09 | 只看该作者
find --set-root /efi/Microsoft/boot/bootmgfw.efi
chainloader /efi/Microsoft/boot/bootmgfw.efi
回复

使用道具 举报

1948#
 楼主| 发表于 2021-10-23 07:51:19 | 只看该作者
fdd_ds:
请把有关菜单贴上来。
是2021-09-08版本开始有错误?之前版本是正常的?
回复

使用道具 举报

1949#
发表于 2021-10-23 09:32:46 来自手机 | 只看该作者
@yaya     菜单就是压缩包中的示例,之前的版本没用过

点评

http://bbs.wuyou.net/forum.php?mod=viewthread&tid=423059&extra=page%3D1 到上面的链接 下载模板( 1楼 54楼 55 楼 三择一) 然后说明 用的 bootx64.efi 版本  详情 回复 发表于 2021-10-23 11:40
回复

使用道具 举报

1950#
发表于 2021-10-23 11:40:42 | 只看该作者
fdd_ds 发表于 2021-10-23 09:32
@yaya     菜单就是压缩包中的示例,之前的版本没用过

http://bbs.wuyou.net/forum.php?m ... &extra=page%3D1

到上面的链接 下载模板( 1楼  54楼   55 楼   三择一)
然后说明 用的 bootx64.efi 版本
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-11-27 16:51

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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