无忧启动论坛

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

[原创] GRUB4DOS for UEFI

    [复制链接]
1#
发表于 2021-9-26 16:34:26 | 显示全部楼层
请问g4d-for-uefi目前支持哪些文件系统,FAT、FAT32、ext3、ext4、XFS?
回复

使用道具 举报

2#
发表于 2021-9-26 17:51:02 | 显示全部楼层
引导硬盘ext4分区上的linux系统失败

root (hd1,1)后能显示分区为ext2文件系统,但在这之后按TAB键后死掉了。

不知道跟硬盘是M2接口的有没有关系。
回复

使用道具 举报

3#
发表于 2021-9-27 08:55:09 | 显示全部楼层
2011whp 发表于 2021-9-26 18:25
这个样,识别不到

你这是回复我的问题吗?还是说自己的问题。

引导硬盘上的LINUX系统,我自以为是基本功能,应该可以的!
回复

使用道具 举报

4#
发表于 2021-9-28 11:11:35 | 显示全部楼层
2011yaya2007777 发表于 2021-9-27 15:24
g4e,g4d如何引导linux?应当是使用kerenl与initrd吧。命令后面有参数,而且版本不同,参数也不一样。

是用kernel和initrd,但前提是要能访问分区中的文件才行,像我说的在访问文件时就死掉了。
回复

使用道具 举报

5#
发表于 2021-9-28 11:25:06 | 显示全部楼层
请教一个问题:

在G4D时代,用下面的菜单可以实现一键跳转执行某个菜单:
title
#        clear
  echo -e \a\a\a\a\a\a\a\a\a\a\a\a
        echo avconbooting
        echo avconbooting
        pause --test-key > (md)0x300+1,1  
        dd if=(md) of=(md) bs=1 count=512 skip=0x4cb00 seek=0x2000000
        fallback 1
        checkrange 0x1769 read 0x2000000 && kernel
        fallback 2
        checkrange 0x316e read 0x2000000 && kernel
        fallback 3
        checkrange 0x1372 read 0x2000000 && kernel
        fallback 4
        checkrange 0x1f73 read 0x2000000 && kernel
#        fallback 2
#        kernel

时间来到G4D-For-UEFI,上述菜单好像是失效了,
那请问,在G4D-For-UEFI里面还可以读到某个按键码吗?如果能,正确的方法是?

做为G4D-For-UEFI中的上述功能的替代方案,我写了下面的菜单:(相比上面的,虽然输入要多按一回车,但也基本能接受)
title  \n
#        clear
fallback 0
set /p:10 os=Please Input:
if /i %os%==i && goto 1
if /i %os%==b && goto 4
if /i %os%==n && goto 2
if /i %os%==r && goto 3
if /i %os%==  && goto 2
kernel
最后一条if,想实现没任何输入时跳转执行一个默认的菜单,但语法估计有误,请问正确的写法是?
回复

使用道具 举报

6#
发表于 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得到这个扫描码!

点评

简单的 按了 U 键 [attachimg]488618[/attachimg]  详情 回复 发表于 2021-10-15 13:47
回复

使用道具 举报

7#
发表于 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参数来用。
回复

使用道具 举报

8#
发表于 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=后面的这个数值了。
回复

使用道具 举报

9#
发表于 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
按对应的键,进对应的菜单,不按键,进一个默认的菜单。

回复

使用道具 举报

10#
发表于 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 好像不认这个了,现在输出报警音是换成其它的了吗?
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-5-22 15:38

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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