2011yaya2007777 发表于 2020-10-30 12:47:03

chainloader (hd0)      你是没有使用map函数,而直接启动第一个磁盘吗?

江南一根葱 发表于 2020-10-30 13:23:56

2011yaya2007777 发表于 2020-10-29 21:01
原来支持不?我只是把接口由BIOS改为UEFI,另外屏蔽了ipxe.


原来支持的

hkkitlee 发表于 2020-10-30 13:32:22

樓主加油,向勤勞者致敬!

不才 发表于 2020-10-30 13:50:10

本帖最后由 不才 于 2020-10-30 13:53 编辑

liuzhaoyzz 发表于 2020-10-30 11:36
在你昨天58楼和81楼回这个帖子之前,我摸索了好久了。后来我放到根目录下才找到的。而且menu.lst必须要用 ...
嘿嘿,看来超版对于g4d还是不熟悉呀。
自2011年12月开始,g4d只要开启了VBE模式,菜单文件必须采用utf-8编码!这是王八的屁股——龟腚

liuzhaoyzz 发表于 2020-10-30 14:12:56

本帖最后由 liuzhaoyzz 于 2020-10-30 14:18 编辑

不才 发表于 2020-10-30 13:50
嘿嘿,看来超版对于g4d还是不熟悉呀。
自2011年12月开始,g4d只要开启了VBE模式,菜单文件必须采用utf-8 ...
      我知道g4d用中文+vbe模式需要menu.lst用utf-8的编码啊。

现在是grub4dos-uefi,我试了utf-8编码显示不出来,然后我就用ansi编码进行了尝试,结果也不行。

换用了yaya在91楼分享的unifont.hex,用vbe模式可以正常显示并启动pe.iso了。之前我用了我电脑里面保存的unifont.hex不行,可能是精简版本的。

liuzhaoyzz 发表于 2020-10-30 14:18:04

xbmc 发表于 2020-10-30 12:18
怎么两个--mem?
还有 --mem应该没用。
我用的命令是


      正式的菜单里面是只有一个--mem,下面是编辑的时候笔误了。

wintoflash 发表于 2020-10-30 14:18:39

uefi下不存在vbe模式。
建议统一一下术语,叫 gfx模式吧

liuzhaoyzz 发表于 2020-10-30 14:31:47

本帖最后由 liuzhaoyzz 于 2020-10-30 14:48 编辑

wintoflash 发表于 2020-10-30 14:18
uefi下不存在vbe模式。
建议统一一下术语,叫 gfx模式吧
      我们业余人士也搞不懂那么专业的术语,大神们说叫什么就叫什么吧。

@yaya,反馈个问题,前面wintoflash大神也曾经反馈过的。
在虚拟机的虚拟光驱里面挂载个pe1.iso镜像,然后uefi设置本地硬盘优先于光驱启动,引导文件就是grub4dos-uefi那个bootx64.efi,菜单如下:
title /boot/imgs/SXWIN10PEX64_17763_NET20200902.iso
find --set-root /boot/imgs/SXWIN10PEX64_17763_NET20200902.iso
map --mem /boot/imgs/SXWIN10PEX64_17763_NET20200902.iso (cd0)
chainloader (cd0)
结果引导的不是这个仿真出来的(cd0),似乎是虚拟光驱里面挂载的那个pe1.iso,但是有加载到(cd0)的xxxMB的进度。
类似的问题,wintoflash大神在修改grub2的时候曾经碰到过类似的问题,参见152楼,163楼,166楼,303楼已解决,我们也曾经反馈过,这个问题可以稳定重现。
至于原因,wintoflash分析过也提出过改进的办法,主要就是微软的bootmgfw.efi只能支持第一个光驱启动。



2011yaya2007777 发表于 2020-10-30 14:36:56

不如就叫文本模式,图形模式。管他何种图形模式。

2011yaya2007777 发表于 2020-10-30 14:40:01

@yaya,反馈个问题,前面wintoflash大神也曾经反馈过的
昨天测试没有问题,这个容我再测试一下。

blank007 发表于 2020-10-30 15:56:04

建议:菜单文件默认在 \efi\grub\ 下,文件名:grub.txt

liuzhaoyzz 发表于 2020-10-30 16:07:38

本帖最后由 liuzhaoyzz 于 2020-10-30 16:09 编辑

blank007 发表于 2020-10-30 15:56
建议:菜单文件默认在 \efi\grub\ 下,文件名:grub.txt
       其实我一直在想能否和BIOS下的grub4dos共用一套菜单,比如MBR磁盘,根目录下有一个menu.lst,BIOS/UEFI可以共用一套菜单即可。这样子的话,BIOS/UEFI下默认的查找路径都是相同的,menu.lst太多的话,会把人搞晕的。

hilsonma 发表于 2020-10-30 16:15:10

本帖最后由 hilsonma 于 2020-10-30 16:28 编辑

blank007 发表于 2020-10-30 15:56
建议:菜单文件默认在 \efi\grub\ 下,文件名:grub.txt
同建议菜单文件默认在 /EFI/grub/ ,与UEFI规范一致。
菜单文件名个人认为无所谓,可以跟原来一致。

更喜欢的是菜单内置,同时提供修改工具。这样就跟之前一样,一个文件就可以引导。
一个引导文件,一个修改工具,一个学习文档(说明文档 和/或 自己的学习记录),就可以成为完整的软件包。

caocaofff 发表于 2020-10-30 16:19:36

liuzhaoyzz 发表于 2020-10-30 16:07
其实我一直在想能否和BIOS下的grub4dos共用一套菜单,比如MBR磁盘,根目录下有一个menu.lst,BIOS ...
但是如果你原来的menu.lst里有“高级”的命令,用g4efi去执行会出错的(因为不支持这些命令),还是分开好些https://cdn.jsdelivr.net/gh/hishis/forum-master/public/images/patch.gif

2011yaya2007777 发表于 2020-10-30 16:44:40

有人偏爱内置菜单,但是不易修改。再说,现在是在保护模式,内存不能任意指定。内置菜单怎么编译进去,又如何修改,需有这方面知识和经验的人来完成。

2011yaya2007777 发表于 2020-10-30 16:49:01

UEFI规范好像没有规定菜单放在哪里吧。我觉得当务之急是完善启动任意磁盘(光盘)、启动任意分区的efi文件。

hilsonma 发表于 2020-10-30 16:49:11

liuzhaoyzz 发表于 2020-10-30 16:07
其实我一直在想能否和BIOS下的grub4dos共用一套菜单,比如MBR磁盘,根目录下有一个menu.lst,BIOS ...

如果要bios/uefi共用,那也是以UEFI为主,兼容bios,毕竟bios在逐渐逝去。
菜单文件可以按UEFI规范放在 /EFI/grub,然后在bios引导中指定使用 /EFI/grub/menu.lst,这样做为过渡期做法。
新的东西建议还是适应新的方向,向前看。

窄口牛 发表于 2020-10-30 17:56:52

这个我有不同建议,三启用一个菜单文件,我同意 至于高级命令啥的,加一句启动环境判断即可解决;菜单文件路径最好另起名称,grub目录不合适,应该算是一个共用目录了。

wintoflash 发表于 2020-10-30 18:19:29

本帖最后由 wintoflash 于 2020-10-30 18:45 编辑

2011yaya2007777 发表于 2020-10-30 16:49
UEFI规范好像没有规定菜单放在哪里吧。我觉得当务之急是完善启动任意磁盘(光盘)、启动任意分区的efi文件 ...
UEFI 本身没有这种规定。
我也觉得这个目前不重要。

有人偏爱内置菜单,但是不易修改。再说,现在是在保护模式,内存不能任意指定。内置菜单怎么编译进去,又如何修改,需有这方面知识和经验的人来完成。
我记得 grub2 好像是生成镜像的时候把动态加载模块(.mod)、memdisk、内置菜单 都是当作 "模块" 来看的。模块头部记录了类型之类的东西。有一个链表记录了各模块的地址。

我也很好奇 grub4dos efi 是怎么做的,估计以前那些直接读内存地址的菜单用法都不兼容了。比如
write 0x307ff8 1&& configfile
calc *50000=*0x8280

BIOS 的 grub4dos 是一直在实模式下吗?
怎么把c语言代码编译成纯16位的?

moon147369 发表于 2020-10-30 18:21:53

权限不足,不让下载。

wahopi 发表于 2020-10-30 18:34:09

一直不喜欢grub2 这回好了 mbr和uefi 完美了,谢谢老铁。

永远的大象 发表于 2020-10-30 18:38:31

比较建议菜单文件和 GRUB4DOS 的不使用相同的默认位置,但可通过 GRUB4DOS 内置菜单解决,这问题不是很大。
另外,GRUB4DOS 的外部命令是否都不能使用了?

2011yaya2007777 发表于 2020-10-30 19:03:41

函数 Fn.xx 可以使用,注意跟随的参数是 64 位的。变量指针由 0x8304 gbwei

2011yaya2007777 发表于 2020-10-30 19:05:16

手机编辑真麻烦!改变为0x8308.

zds1210 发表于 2020-10-30 19:21:29

这个帖子相当好。好好搞下去,成熟了也把玩下。

my9823 发表于 2020-10-30 20:33:22

U盘分了两个区,前边时exfat分区存数据,后边有个fat16分区作为efi分区,用bootx64.efi启动,没写菜单,在命令行查看当前启动设备为hd1,hd0为台式机固态硬盘,(hd0,0)为台式机固态的efi分区,(hd0.1)是bug10单系统,尝试在命令行chainloader (hd0,0)/efi/boot/bootx64.efi;boot
然后有返回grub4dos命令行界面了。请问如何启动硬盘上的efi?需要设置root么?

2011yaya2007777 发表于 2020-10-30 20:43:57

前面已经说了,启动实机上的磁盘、分区功能还为实现,抱歉<(_ _)>

hilsonma 发表于 2020-10-30 21:21:10

2011yaya2007777 发表于 2020-10-30 16:49
UEFI规范好像没有规定菜单放在哪里吧。我觉得当务之急是完善启动任意磁盘(光盘)、启动任意分区的efi文件 ...

UEFI规范没有规定菜单放在哪里,但有规范efi文件的位置,如 /EFI/vendor_dir/ 或 /EFI/vendor_dir/Boot/
因此我建议相关的文件都放在这一位置。
例如:
\EFI\Microsoft\Boot\
\EFI\Xorboot\
\EFI\grub
以此类推。

当然,这些都是小问题,无关紧要,只是有人提出了建议,我就跟着发表而已。
我翘首期待的是启动 vhdx 和 wim.

2010janyhzn 发表于 2020-10-31 09:06:00

有常用菜单示例不

静听雨下 发表于 2020-10-31 11:11:05

围观围观
页: 1 2 3 [4] 5 6 7 8 9 10 11 12 13
查看完整版本: GRUB4DOS for UEFI