无忧启动论坛

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

[原创] GRUB4DOS for UEFI

    [复制链接]
1021#
发表于 2021-1-11 18:51:57 | 只看该作者
按你说,有一个PE能启动,另一个不行,

推下来:PE自身问题值得 怀疑
  直接把iso挂到虚拟机  或者 用简易启动 器测试下PE
回复

使用道具 举报

1022#
发表于 2021-1-11 18:54:54 | 只看该作者
本帖最后由 blank007 于 2021-1-11 19:34 编辑
2011yaya2007777 发表于 2021-1-11 18:48
你使用什么版本?截图反馈!!!

2021.01.10 版本。

真机上还不能截屏,只能在qemu下截屏.
菜单全文:

clear

debug off

color light-gray/black light-gray/blue light-blue/black

color border=0x08

font /EFI/Grub/Unicode.gz

graphicsmode -1 640

setmenu --string==9=0xFF="启动菜单"

setmenu --ver-off
setmenu --triangle-on
setmenu --middle-align
setmenu --highlight-full
setmenu --box x=21 y=11 w=0 h=4 l=1
setmenu --help=0=0=16

default=0
timeout=-1

clear

calc *0x8272&0xff > nul
set uefi=%@retval%


#x64

#1

iftitle [if %uefi%==64] WinPE (x64)\n基于 Windows 10,内存要求: 1024 MB\n

chainloader --force /Boot/WinX/x64/WinX.efi


#2

iftitle [if %uefi%==64] Acronis (x64)\nAcronis 11.7 中文版,内存要求: 1024 MB\n

kernel /Boot/Acronis/x64/kernel.dat  quiet vga=ask product=bootagent media_for_windows

clear

initrd /Boot/Acronis/x64/initrd.dat /Boot/Acronis/x64/initrd.img


#x86

#1

iftitle [if %uefi%==32]] WinPE (x86)\n基于 Windows 10,内存要求: 1024 MB\n

chainloader --force /Boot/WinX/x86/WinX.efi


#2

iftitle [if %uefi%==32]] Acronis (x86)\nAcronis 11.7 中文版,内存要求: 1024 MB\n

kernel /Boot/Acronis/x86/kernel.dat  quiet vga=ask product=bootagent media_for_windows

clear

initrd /Boot/Acronis/x86/initrd.dat /Boot/Acronis/x86/initrd.img

#3

title reboot\n重启计算机\n

reboot

#4

title halt\n关闭计算机\n

halt


[if %uefi%==32]]  这里多了一个] 。但应该还没有执行到这里,因为 uefi=0 了

这里改正后,uefi=0 依然


真机上测试,chainloader --force /Boot/WinX/x64/WinX.efi 这里不能有 --force 。但这是另外一个问题。

snap00001.jpg (21.29 KB, 下载次数: 154)

snap00001.jpg

snap00002.jpg (28.03 KB, 下载次数: 149)

snap00002.jpg
回复

使用道具 举报

1023#
 楼主| 发表于 2021-1-11 19:33:37 | 只看该作者
真机上还不能截屏,只能在qemu下截屏.

确实有问题。

点评

补充一个: title Acronis (x64)\nAcronis 11.7 中文版,内存要求: 1024 MB\n kernel /Boot/Acronis/x64/kernel.dat quiet vga=ask product=bootagent media_for_windows clear initrd /Boot/Acronis/x  详情 回复 发表于 2021-1-11 20:19
刚刚又在我的回复中添加了一些情况说明。你可以参考一下。 至于判断是 64位还是32位的 UEFI ,请您慢慢研究,不用着急。  详情 回复 发表于 2021-1-11 19:36
回复

使用道具 举报

1024#
发表于 2021-1-11 19:36:26 | 只看该作者

刚刚又在我的回复中添加了一些情况说明。您可以参考一下。

至于判断是 64位还是32位的 UEFI ,请您慢慢研究,不用着急。
回复

使用道具 举报

1025#
发表于 2021-1-11 19:54:47 | 只看该作者
本帖最后由 2011whp 于 2021-1-12 08:33 编辑

觉得,依托 标记判断,影响 ia32  和 x64 的独立性,实际上它们也不会有交集(增加菜单复杂度了)

还好Ia32 这类主板不多 未来也不会多 。细想一般人不用 这个 判断标记。





点评

这个确实也是一种情况。 当然,calc *0x8272&0xff 返回的结果可能又是另外一个问题,或许要修改一些代码。  详情 回复 发表于 2021-1-11 19:59
回复

使用道具 举报

1026#
发表于 2021-1-11 19:55:34 | 只看该作者
liuzhaoyzz 发表于 2021-1-10 11:24
自行加载unifont.hex.gz,前面帖子yaya有分享!

新手新手,见谅见谅!
回复

使用道具 举报

1027#
发表于 2021-1-11 19:59:40 | 只看该作者
2011whp 发表于 2021-1-11 19:54
觉得,还是在菜单名 menu.lst 上作区分的好,

依托 标记判断,影响 ia32  和 x64 的独立性,实际上它们 ...

这个确实也是一种情况。

当然,calc *0x8272&0xff 返回的结果可能又是另外一个问题,或许要修改一些代码。
回复

使用道具 举报

1028#
发表于 2021-1-11 20:19:34 | 只看该作者
本帖最后由 blank007 于 2021-1-11 20:24 编辑

补充一个:

title Acronis (x64)\nAcronis 11.7 中文版,内存要求: 1024 MB\n

kernel /Boot/Acronis/x64/kernel.dat  quiet vga=ask product=bootagent media_for_windows

clear

initrd /Boot/Acronis/x64/initrd.dat /Boot/Acronis/x64/initrd.img

这个菜单,执行完 initrd /Boot/Acronis/x64/initrd.dat  ,也就是说,数据读完后,没办法再执行。说好像是 VFS 有关的问题。
当然,这种情况也可能和我的优盘格式有关:我用 UltraISO把优盘写为  USB-ZIP+ V2 格式了

但这个执行正常:

title Acronis (x64)\nAcronis 11.7 中文版,内存要求: 1024 MB\n

chainloader /Boot/Acronis/x64/Acronis.efi

上述情况,和 XorBootU 的情况一样。


点评

试试: 测试通过  详情 回复 发表于 2021-1-12 16:03
能不能传一下这个Linux?  详情 回复 发表于 2021-1-12 14:54
目前暂时不支持加载多个initrd  详情 回复 发表于 2021-1-11 20:57
回复

使用道具 举报

1029#
发表于 2021-1-11 20:57:18 | 只看该作者
blank007 发表于 2021-1-11 20:19
补充一个:

title Acronis (x64)\nAcronis 11.7 中文版,内存要求: 1024 MB\n

目前暂时不支持加载多个initrd

点评

原来如此。 多谢  详情 回复 发表于 2021-1-11 20:58
回复

使用道具 举报

1030#
发表于 2021-1-11 20:58:54 | 只看该作者
wintoflash 发表于 2021-1-11 20:57
目前暂时不支持加载多个initrd

原来如此。

多谢
回复

使用道具 举报

1031#
发表于 2021-1-12 11:42:45 | 只看该作者
2011yaya2007777 发表于 2021-1-11 17:44
这个 NTFS 分区有 /efi/boot/bootx64.efi 文件吗?
如果有,map 之后,使用 vol 探测一下文件所在分区, ...

这个 VHD 里有一个 656KB 的 BOOTX64.EFI 文件,UEFI 下就是用它启动的 Windows 7 x64。

之前的版本,是可以这样启动的,因为我的 ESP 分区里面,/EFI/BOOT 下是微软的 1.1MB 多的 BOOTX64.EFI 文件,而 G4E 的在 /EFI/GRUB 下面,开机时可以 F11 选择 G4E、GRUB2、微软等。
回复

使用道具 举报

1032#
发表于 2021-1-12 11:51:28 | 只看该作者
2011whp 发表于 2021-1-11 18:37
你说的第一个问题,以前就是那样的,没有变化吧

之前 12.29、元旦等的版本,同样的环境是完全没有问题的。

至于抢启动的问题,也应该不存在,因为我的 ESP 分区或者 VHD 里的 NTFS 单分区,EFI 相应目录下,都是微软的 EFI 启动文件。

以前写过 Foxbase 程序,也试过修改了一些问题,导致出现原来没有问题的地方出问题,感觉 G4E 的这个情况,也可能类似。
回复

使用道具 举报

1033#
发表于 2021-1-12 12:28:06 | 只看该作者
本帖最后由 2011whp 于 2021-1-12 14:09 编辑

xianglang
  第一个问题: 确认win7的 bootmgfw能在 ntfs上运行?(win10的可以,但我映像g4e本来抛错的)
         意思是:12-29版 时,你能启动vhd 内 ntfs分区上 的win7 ?
       记得,你的电脑 启动不了shellx64,   试下老shell 和驱动 能用不?http://wuyou.net/forum.php?mod=r ... 1258&fromuid=413782
  第二个问题:
           你是工具盘 用了 esp分区,然后启动本机win系统硬盘 失败吧,不是启动其它的吧

另说:
  你说的 修一个地方,影响另一个地方,是可能的

点评

第一个问题,确定,元旦及之前正常的 G4E 换回去,正常。 第二个问题:SSD 盘中,0分区是系统,有微软的 EFI 相关文件,1分区只是程序和数据盘,2分区是 ESP 分区,UEFI 相关的文件全在那里。强调一点:是使用 ch  详情 回复 发表于 2021-1-12 14:27
回复

使用道具 举报

1034#
发表于 2021-1-12 12:33:45 | 只看该作者
本帖最后由 2011whp 于 2021-1-29 20:42 编辑

windows启动过程(图是 自个画的,文字是网上的)
Winload.efi做的第一件事就是通过BootService的GetMemoryMap提供的物理内存信息来构造页表以及PFN数据库,然后将ntoskrnl,hal以及SYSTEM\Service下的所有Boot型驱动以及他们需要的导入库读取加载到内存中,因为此时还是保护模式下,所以需要页表中建立这些文件的映射信息。(在IA32e下的UEFI开机后是会默认开启分页的,但是虚拟内存和物理内存是1:1映射的,所以进了Windows内核后不可能还用原来的地址)读取完成后,会对这些文件进行签名校验,如果校验失败,那么会蓝屏INACCESSIBLE_BOOT_DEVICE,即启动设备无效。这一步完成后,Windows会进一步初始化GDT和IDT,然后在页表中分配内核堆栈,初始化SystemPTE。最后调用ExitBootService退出引导阶段,调用SetVirtualAddress将EFI部分固件内存映射到虚拟内存,然后把页表基址载入CR3寄存器,开启分页并跳转到ntoskrnl的KiSytemStartup进入内核。




回复

使用道具 举报

1035#
发表于 2021-1-12 13:53:36 | 只看该作者
本帖最后由 liuzhaoyzz 于 2022-9-14 08:25 编辑
xianglang 发表于 2021-1-11 15:31
1月10日的版本,map --mem --top 已经没有问题,但是直接 chainloader (hd-1) 时,只有一个 NTFS 分区的固 ...

文件名称: bootx64.efi
文件大小: 388.00 KB (397,312 字节)
修改时间: 2021年01月10日,16:30:22
MD5: 0EC017DA9D4C9041C5415B17DAEBC3B2
2021年01月10日的版本,启动基于svbus驱动的WIN7.VHD和基于primo驱动的vdf,都正常,本人亲测。

你所遇到的问题,
Failed to load virtual partition image .
Failed to load virtual disk image .
我曾经也遇到过,937楼,http://wuyou.net/forum.php?mod=r ... =422652&pid=4204397,后来我直接重做系统,就好了,原因没有深究。
然后有个网友2011jianfaer说修复引导之后,再启动就好了。100楼和102楼。http://bbs.wuyou.net/forum.php?mod=redirect&goto=findpost&ptid=423275&pid=4208816&fromuid=298214


所以我感觉这不是g4e层面的问题,而是vhd内部的bootx64.efi(即bootmgfw.efi)以及配套的引导文件出了问题,可能是不配套,或者非正常关机导致搞坏了。

点评

没有出现过非正常关机的情况。而且,同样的 VHD 文件中的系统,换回元旦等原来正常的 G4E 就正常了,而换10号的就不正常,因此我觉得还是 10号的 G4E 的原因。还有就是实体 SSD 盘,也是一样的情况。  详情 回复 发表于 2021-1-12 14:19
回复

使用道具 举报

1036#
发表于 2021-1-12 14:19:19 | 只看该作者
liuzhaoyzz 发表于 2021-1-12 13:53
文件名称: bootx64.efi
文件大小: 388.00 KB (397,312 字节)
修改时间: 2021年01月10日,16:30 ...

没有出现过非正常关机的情况。而且,同样的 VHD 文件中的系统,换回元旦等原来正常的 G4E 就正常了,而换10号的就不正常,因此我觉得还是 10号的 G4E 的原因。还有就是实体 SSD 盘,也是一样的情况。
回复

使用道具 举报

1037#
发表于 2021-1-12 14:27:30 | 只看该作者
2011whp 发表于 2021-1-12 12:28
xianglang
  第一个问题: 确认win7的 bootmgfw能在 ntfs上运行?(win10的可以,但我映像g4e本来抛错的) ...

第一个问题,确定,元旦及之前正常的 G4E 换回去,正常。

第二个问题:SSD 盘中,0分区是系统,有微软的 EFI 相关文件,1分区只是程序和数据盘,2分区是 ESP 分区,UEFI 相关的文件全在那里。强调一点:是使用 chainloader (hd0) 之类,回车后没下文,这是关键,不只是 VHD 中的,就是 SSD 和西数 4T GPT 盘上的也都是一样的问题。

点评

奇怪的很,墨西哥的alacrac也说2021-1-10日的版本,启动都正常啊。  详情 回复 发表于 2021-1-12 18:00
回复

使用道具 举报

1038#
发表于 2021-1-12 14:54:36 | 只看该作者
blank007 发表于 2021-1-11 20:19
补充一个:

title Acronis (x64)\nAcronis 11.7 中文版,内存要求: 1024 MB\n

能不能传一下这个Linux?

点评

没问题。 先解释几个问题: 您说的这个Linux,其实就是 Acronis Bakucp 11.7.50230 ,我只是按照习惯对文件改名,然后制做成自己习惯的 GRUB4DOS (bios版)、XorBoot U 可分别引导的版本。 另外,您将要下  详情 回复 发表于 2021-1-12 15:45
回复

使用道具 举报

1039#
发表于 2021-1-12 15:45:20 | 只看该作者
本帖最后由 blank007 于 2021-1-12 15:54 编辑
wintoflash 发表于 2021-1-12 14:54
能不能传一下这个Linux?
有些工具会被杀毒软件误报、清除,请注意


没问题。

先解释几个问题:

        您说的这个Linux,其实就是 Acronis Bakucp 11.7.50230 ,我只是按照习惯对文件改名,然后制做成自己习惯的 GRUB4DOS (bios版)、XorBoot U 可分别引导的版本。

        另外,您将要下载的FTP目录 \USB 其实就是我自用的USB启动盘根目录下的的所有文件、文件夹、常用工具,都是网上获得的。

        根目录下的BIOS.bin 就是GRUB4DOS 0.4.6a (2020-08-09) 的改名,内置菜单文件中指定了真正起作用的菜单 \efi\grub\bios.txt (UTF-8格式)。

        如果您打算据此制做成可启动的优盘,建议先用 UltraISO 将优盘写成 USB-ZIP+ V2 格式。然后,用 \Lotus\Grub\Setup\GRUB4DOS.exe 将引导记录安装到优盘的PBR。

请注意,优盘强行写成 USB-ZIP+ V2 格式,极有可能造成优盘的物理损坏。如果您不能确定,可选择写成 USB-ZIP+。

        文件在我自己个人使用的计算机上,请您尽快下载。

     我的计算机将在 23:55 自动关机

     ftp://alotus.meibu.net
回复

使用道具 举报

1040#
 楼主| 发表于 2021-1-12 15:55:20 | 只看该作者
真机下也是 ver=0

iftitle [if %@uefi%==64] WinPE (x64)\n基于 Windows 10,内存要求: 1024 MB\n
chainloader /Boot/WinX/x64/WinX.efi

iftitle [if %@uefi%==32]] WinPE (x86)\n基于 Windows 10,内存要求: 1024 MB\n
chainloader /Boot/WinX/x86/WinX.efi


BOOTX64.rar

135.68 KB, 下载次数: 22, 下载积分: 无忧币 -2

点评

qemu下,UEFI位数判断正常,真机下通过。 现在就差 bootia32.efi 了  详情 回复 发表于 2021-1-12 16:12
收到。 多谢。现在,正在给 wintoflash 传 Acronis ,不宜动计算机。稍候将测试。  详情 回复 发表于 2021-1-12 15:59
回复

使用道具 举报

1041#
发表于 2021-1-12 15:59:03 | 只看该作者
2011yaya2007777 发表于 2021-1-12 15:55
iftitle  WinPE (x64)\n基于 Windows 10,内存要求: 1024 MB\n
chainloader /Boot/WinX/x64/WinX.efi
...

收到。


多谢。现在,正在给 wintoflash 传 Acronis ,不宜动计算机。稍候将测试。
回复

使用道具 举报

1042#
发表于 2021-1-12 16:03:39 | 只看该作者
blank007 发表于 2021-1-11 20:19
补充一个:

title Acronis (x64)\nAcronis 11.7 中文版,内存要求: 1024 MB\n

试试:
grub4dos-for_UEFI-2021-01-12.7z (241.59 KB, 下载次数: 24)
  1. title acronis
  2. kernel /acronis/kernel.dat quiet vga=791 product=bootagent media_for_windows
  3. initrd /acronis/initrd.dat /acronis/initrd.img
复制代码

测试通过

点评

另外,您刚刚的版本和 yaya 的 2021.01.10 版一样,判断 uefi 位数的结果不正确  详情 回复 发表于 2021-1-12 16:52
可能受 flash 插件禁用影响,无法上传图片和文件了。 请到我的FTP看照片 我估计还是和优盘格式有关  详情 回复 发表于 2021-1-12 16:43
回复

使用道具 举报

1043#
发表于 2021-1-12 16:12:40 | 只看该作者
2011yaya2007777 发表于 2021-1-12 15:55
iftitle  WinPE (x64)\n基于 Windows 10,内存要求: 1024 MB\n
chainloader /Boot/WinX/x64/WinX.efi
...

qemu下,UEFI位数判断正常,真机下通过。


现在就差 bootia32.efi 了
回复

使用道具 举报

1044#
发表于 2021-1-12 16:43:17 | 只看该作者

可能受 flash 插件禁用影响,无法上传图片和文件了。

请到我的FTP看照片

我估计还是和优盘格式有关


回复

使用道具 举报

1045#
发表于 2021-1-12 16:52:05 | 只看该作者

另外,您刚刚的版本和 yaya 的 2021.01.10 版一样,判断 uefi 位数的结果不正确

点评

那部分是yaya写的,跟我无关。yaya还没有推送代码。 在命令行手动执行这两条命令 (kernel 和 initrd),拍个照看看。  详情 回复 发表于 2021-1-12 16:54
回复

使用道具 举报

1046#
发表于 2021-1-12 16:54:07 | 只看该作者
blank007 发表于 2021-1-12 16:52
另外,您刚刚的版本和 yaya 的 2021.01.10 版一样,判断 uefi 位数的结果不正确

那部分是yaya写的,跟我无关。yaya还没有推送代码。
在命令行手动执行这两条命令 (kernel 和 initrd),拍个照看看。


点评

晕。 很抱歉。用了的yaya的版本。刚刚用你的版本试了,通过。 另外,你的版本对文件夹、文件名大小写敏感。  详情 回复 发表于 2021-1-12 17:04
回复

使用道具 举报

1047#
发表于 2021-1-12 17:04:55 | 只看该作者
本帖最后由 blank007 于 2021-1-12 17:10 编辑
wintoflash 发表于 2021-1-12 16:54
那部分是yaya写的,跟我无关。yaya还没有推送代码。
在命令行手动执行这两条命令 (kernel 和 initrd), ...

晕。

很抱歉。用了的yaya的版本。刚刚用你的版本试了,通过。

另外,你的版本对文件夹、文件名大小写敏感。
屏幕分辨率可能受了 graphicsmode -1 640 的影响,比较低。估计用 1024 会好。

是64位版本,32位的没有测试
回复

使用道具 举报

1048#
发表于 2021-1-12 17:24:56 | 只看该作者
本帖最后由 2011whp 于 2021-1-13 13:11 编辑

xianglang : 试了下   死机了  只能电源关机(B360主板台机)

chainloader (hd3,0)  倒是 能用
chainloader (hd3,0)/efi/microsoft/boot/bootmgfw.efi    也可以用 的


标记测试:

vbox测试,还是不错的,介于简易测试器  和  vm 之间  安装后 200+MB
比简易测试器  先进的 地方 就是能 启动PE系统(或真实系统)
方法:做个vhd,win10原生支持,挂载。  修改后,弹出即可。启动vhd,代替插U盘。








点评

我刚才也试了下,指定分区可以引导成功,只指定硬盘就不行。  详情 回复 发表于 2021-1-13 09:14
回复

使用道具 举报

1049#
发表于 2021-1-12 18:00:43 来自手机 | 只看该作者
xianglang 发表于 2021-1-12 14:27
第一个问题,确定,元旦及之前正常的 G4E 换回去,正常。

第二个问题:SSD 盘中,0分区是系统,有微软 ...


        奇怪的很,墨西哥的alacran也说2021-1-10日的版本,启动都正常啊。
回复

使用道具 举报

1050#
发表于 2021-1-12 20:13:54 | 只看该作者
测试:使用 gcc-7 编译的 grub4dos
grub4dos-for_UEFI-2021-01-12.7z (238.6 KB, 下载次数: 212)

点评

adobe flash player 被禁用后,无法向论坛发送任何附件。 只能文字描述一下:您刚才的这个版本,使用 configfile ,会报告 : 不能加载到内存。其它的还没有测试。  详情 回复 发表于 2021-1-12 21:28
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-11-27 00:15

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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