无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站广告联系 微信:wuyouceo QQ:184822951
查看: 416357|回复: 3311
打印 上一主题 下一主题

[原创] GRUB4DOS for UEFI

    [复制链接]
1#
发表于 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规范一致。
菜单文件名个人认为无所谓,可以跟原来一致。

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

使用道具 举报

2#
发表于 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,这样做为过渡期做法。
新的东西建议还是适应新的方向,向前看。
回复

使用道具 举报

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

使用道具 举报

4#
发表于 2020-11-3 20:57:42 | 显示全部楼层
gmy 发表于 2020-11-3 09:11
怎么写入启动项,写个简单教程吧

跟其他UEFI启动项是一样的操作。我知道的两个工具一个是bootice里的 UEFI / 启动项管理,另一个是DiskGenius里的 工具 / 设置UEFI BIOS启动项。

但这两个工具只是提供了功能,能不能起作用还要取决于主板的UEFI固件。
有的主板自动识别,不支持手动;而有的主板不自动识别,需要手动添加。
需要手动添加的我接触过的是dell,在UEFI设置里添加。
自动添加的我接触过的是联想电脑和技嘉主板,都是自动识别 \EFI\Microsoft\Boot\bootmgfw.efi 为 Windows Boot Manager, 技嘉主板在找不到  \EFI\Microsoft\Boot\bootmgfw.efi 的情况下还会识别 \EFI\boot\bootx64.efi 为UEFI OS.

所以,怎么写入启动项要视乎主板固件。
一般情况下我会将efi 文件替换为  \EFI\Microsoft\Boot\bootmgfw.efi
遇到需要手动添加的,我就将efi文件放在路径如 \EFI\grub\g4d.efi ,然后将 \EFI\grub\g4d.efi 添加为 UEFI G4d 启动项。
回复

使用道具 举报

5#
发表于 2020-11-5 16:03:45 | 显示全部楼层
我也是遇到同样的问题

回复

使用道具 举报

6#
发表于 2020-11-6 16:45:57 | 显示全部楼层
本帖最后由 hilsonma 于 2020-11-6 16:54 编辑
2011yaya2007777 发表于 2020-11-5 21:15
问题找到了。是启动光盘制作不规范。请问,是所以什么软件制作的?

我的z.iso是用mkisofs 制作的,出错信息同样是boot_image_handle not found
iso制作脚本如下:
  1. @echo off
  2. set bios=-no-emul-boot -boot-load-size 4 -b grldr
  3. set uefi=-eltorito-alt-boot -no-emul-boot -eltorito-platform efi -b efi.img
  4. set iso=-o z.iso
  5. set dir=%1
  6. if %1a==a set dir=iso1
  7. set iso9660x=-U -max-iso9660-filenames -D
  8. set RR=-R
  9. set joliet=-J -joliet-long -hide-joliet boot.catalog
  10. pushd %~dp0
  11. bin\mkisofs %iso9660x% %RR% %joliet% %bios% %uefi% %iso% %dir%
复制代码


请问怎样制作才规范?
-----------------------------
不好意思,没注意看有更新,用244#的更新版,我的iso可以启动了。
回复

使用道具 举报

7#
发表于 2020-11-6 17:47:58 | 显示全部楼层
2011whp 发表于 2020-11-6 16:55
是不是,没有efi.img的iso更好

efi.img  多了个步骤,cdboot.efi 找 bootmgr.efi

oscdimg 制作的 iso 就是没有 efi.img 的。但是制作速度慢,制作出来的iso体积较大。
mkisofs 制作的 iso 有efi.img,但制作速度较快,制作出来的iso体积较小。
至于引导效果,有没有efi.img 我感觉不到差别。
回复

使用道具 举报

8#
发表于 2020-11-10 16:34:54 | 显示全部楼层
有坛友把g4d for uefi 当成了g4d的升级版,所以按g4d的功能去试,然后就产生各种问题。

其实把g4d for uefi 当成一个新的软件就好了,它实现了哪些功能,以yaya公布的为准,这样试了有问题的再反馈。其他的功能等待yaya拓展,并不是g4d有的现在g4d for uefi都有了,需要耐心等待yaya。
回复

使用道具 举报

9#
发表于 2020-11-11 15:39:43 | 显示全部楼层
cchessbd 发表于 2020-11-11 13:26
谢谢您的解释,如果不能用bios的那套,那grub uefi下怎么启动windows呢。怎么启动某个分区?
启动img是 ...

启动windows应该是 chainloader /EFI/Microsoft/Boot/bootmgfw.efi 这样子,不过现在好象还不行,还要耐心等。

启动某个分区,特别是(hd0)+1之类,是bios启动的那一套,是扇区引导;而uefi不用这一套的,是直接文件引导的,在uefi环境要引导指定分区,应该引导该分区某文件,我一般是在相应分区放一个唯一的文件,然后引导这个文件。

点评

谢谢解惑,我又研究了下Ventoy,也启动不了win,uefi启动可能还需要修复硬盘的bcd,如果有多个主分区,多个系统,每个系统分区隐藏不一样的情况下,麻烦事一堆,uefi从硬盘启动win那只好放弃了。那这样目前就好像只  详情 回复 发表于 2020-11-11 21:31
回复

使用道具 举报

10#
发表于 2020-11-11 15:58:41 | 显示全部楼层
建议还是象之前发的32位版本那个一样,叫GRUB4EFI,简称g4e。
是grub4dos的全新分支,是新的软件,不是g4d的加强版或升级版。
回复

使用道具 举报

11#
发表于 2020-11-20 00:44:36 | 显示全部楼层
wintoflash 发表于 2020-11-19 19:37
测试:增加启动linux的功能。

使用 kernel 和 initrd 命令启动 linux。

好象我这里kernel 不成功

点评

[attachimg]468835[/attachimg] 你用的是老版本  详情 回复 发表于 2020-11-20 09:15
回复

使用道具 举报

12#
发表于 2020-11-20 10:10:45 | 显示全部楼层

重新下载后能引导了,porteus 启动中途出错,不懂怎么搞

点评

说明porteus不认你的硬盘/U盘。porteus带的驱动太少了。  详情 回复 发表于 2020-11-20 10:18
回复

使用道具 举报

13#
发表于 2020-11-20 10:30:18 | 显示全部楼层
wintoflash 发表于 2020-11-20 10:18
说明porteus不认你的硬盘/U盘。porteus带的驱动太少了。

是这个porteus版本的问题,换了grub2引导也是一样的。

我试了另一个porteus版本,这个版本可以用grub2引导成功,但用g4e引导提示如下:

点评

因为g4e上用的是 EFI handover protocol,相当于 grub2下的 linuxefi 和 initrdefi 命令。 对于没开启 EFI stub 或者非 64 位 linux 是不支持的。 主流的 linux (比如 Ubuntu, Fedora) 都支持,你可以试一下。你用  详情 回复 发表于 2020-11-20 10:49
回复

使用道具 举报

14#
发表于 2020-11-20 10:59:43 | 显示全部楼层
wintoflash 发表于 2020-11-20 10:49
因为g4e上用的是 EFI handover protocol,相当于 grub2下的 linuxefi 和 initrdefi 命令。
对于没开启 E ...

刚才又重新检查了一次,发现是我没有按要求先提取porteus文件夹,只提取了 vmlinuz 和initrd.xz 两个文件,所以启动失败。

再次按照你441楼的操作,启动成功了。

不过还是你之前做那个版本方便,进去就能用,现在提取这个版本进去想用浏览器都用不了,还要输密码之类的,可能是我不懂使用吧。(题外话,与引导无关,不用回复了。)
回复

使用道具 举报

15#
发表于 2020-11-28 08:25:40 | 显示全部楼层
本帖最后由 hilsonma 于 2020-11-28 08:41 编辑
好吧,我再问一个白得不能再白的问题,这个bootx64.efi 文件怎么用?

光盘上,替换到软盘镜像里面的 \efi\boot\bootx64.efi
这个软盘镜像在封装成iso之前可能是efi.img 或 efisys.bin 之类,封装到iso后是 [BOOT]\2-Boot-NoEmul.img

U盘上,替换到efi分区里的 \efi\boot\bootx64.efi

硬盘上,替换到efi分区里的 \efi\microsoft\boot\bootmgfw.efi
有的主板也接受替换到efi分区里的 \efi\boot\bootx64.efi

以上是作为主引导使用时的做法,是uefi引导的知识。
现在g4e还在测试阶段,可以不做主引导,在其他主引导中链接这个bootx64.efi也可以的,例如改名为g4e.efi放在\efi\grub中,在grub2中如下引导
chainloader /efi/grub/g4e.efi

建议放在U盘上做为主引导测试。

要配合哪些文件使用?

现在是要菜单文件 \efi\grub\menu.lst
如果是图形模式,还要字体文件 \efi\grub\unifont.hex.gz


你在光盘中启动出来windows boot manager 说明光盘启动使用的软盘镜像里还是ms的bootmgfw.efi (在软盘镜像里已改名为bootx64.efi)

你进入图形菜单花屏也有可能是字体文件的原因,改用本贴90楼的字体文件试试。

点评

我制作光盘用的是论坛里2011hiboy提供的工具。 要制作 BIOS/UEFI双启动ISO 你首先必须了解怎样制作ISO,普遍的我们使用微软的一款叫OSCDimg.exe的命令行工具,该工具非系统自带需要另外下载。 OSCDimg.exe的版本有  详情 回复 发表于 2020-11-28 10:58
回复

使用道具 举报

16#
发表于 2020-11-28 12:04:42 | 显示全部楼层
本帖最后由 hilsonma 于 2020-11-28 12:10 编辑
ko20010214 发表于 2020-11-28 10:58
我制作光盘用的是论坛里2011hiboy提供的工具。以下引用他的话:
================== ...

我早期也是使用oscdimg制作iso,后来发现 mkisofs 制作速度更快,iso体积更小,就改用mkisofs了。

只写入512字节说明只写了一个引导扇区,剩余部分我也不清楚,一个可能是不要了,只要头部512字节,这个头部引导光盘上的同路径的efi文件 (你只要将uefi_all.bin 当成一个软盘镜像用解压软件打开就能看到其内包含的路径),另一个可能是整个软盘镜像也写入iso了,只是隐藏了,在文件系统上看不到。

你把光盘上同路径的efi文件删除了,再制作iso,如果还能启动那就是隐藏了,如果不能启动就证明那512字节指向了光盘上同路径的efi文件。

如果是用mkisofs 制作的是肯定写入iso了的,iso上的 efi/boot/bootx64和 efi/boot/bootia32.efi 是不起作用的。
参见 http://bbs.wuyou.net/forum.php?m ... &fromuid=586362

硬盘启动时应该不是只找 /efi/boot/bootx64.efi 应该是优先找 /efi/microsoft/boot/bootmgfw.efi
参见 http://bbs.wuyou.net/forum.php?m ... 9813&fromuid=586362

如果要继续讨论请到上面两个对应的贴子回贴,这些与g4e关系不直接,不密切,就不在这里讨论了。

点评

硬盘启动时应该不是只找 /efi/boot/bootx64.efi 应该是优先找 /efi/microsoft/boot/bootmgfw.efi 我的台式机就是优先找 /efi/boot/bootx64.efi 文件的,发现不少电脑也是这样。  详情 回复 发表于 2020-11-28 13:43
回复

使用道具 举报

17#
发表于 2020-12-14 22:04:44 | 显示全部楼层
2011whp 发表于 2020-12-14 18:33
这个怎么解释
windows boot manager  抢了  普通设备启动,而列出启动项,启动蓝屏
(MBR 本地固 ...

UEFI优先识别硬盘上的bootmgfw.efi 为 Windows Boot Manager
在没有bootmgfw.efi的情况下才识别bootx64.efi为UEFI OS
http://bbs.wuyou.net/forum.php?m ... &fromuid=586362
回复

使用道具 举报

18#
发表于 2020-12-19 18:04:32 | 显示全部楼层
kenddy 发表于 2020-12-19 12:37
弱弱问一下,支持VHDX差分启动了吗?

我现在也是用差分系统,等待中。

点评

GRUB4DOS BIOS 版就不支持差分 VHD 啊,更别说 VHDX 了。 你是不是 BIOS 下用的 NTBOOT? https://github.com/chenall/grub4dos/blob/0da21fe58ac4df19ecb84608a6aa81b14326a9fb/stage2/dec_vhd.c#L199  详情 回复 发表于 2020-12-19 19:02
回复

使用道具 举报

19#
发表于 2020-12-19 19:04:38 | 显示全部楼层
本帖最后由 hilsonma 于 2020-12-19 19:19 编辑
wintoflash 发表于 2020-12-19 19:02
GRUB4DOS BIOS 版就不支持差分 VHD 啊,更别说 VHDX 了。
你是不是 BIOS 下用的 NTBOOT?
https://gith ...

是的,bios下我用g4d+siso (应该就是ntboot,命令:command siso ntboot NT6=/vhd/win.vhdx)
uefi下用你的ntboot

我知道ntboot调用了bootmgr/bootmgfw.efi,但只要封装好了,不需要自己配置bcd,我就当是g4d/grub2实现了,虽然不是原身支持。

其实也不能说不是原身支持,象你的ntboot,都已经做成grub2的模块了,虽然还是调用外部bootmgfw.efi/bootmgr.exe

点评

http://bbs.wuyou.net/forum.php?mod=redirect&goto=findpost&ptid=422652&pid=4196364&fromuid=487838 827# yaya放出的测试用外部命令,你的电脑上能正常使用吗? 我觉得把 NTBOOT 做成外部命令比较合适。  详情 回复 发表于 2020-12-19 19:31
回复

使用道具 举报

20#
发表于 2020-12-19 20:29:54 | 显示全部楼层
wintoflash 发表于 2020-12-19 19:31
http://bbs.wuyou.net/forum.php?mod=redirect&goto=findpost&ptid=422652&pid=4196364&fromuid=487838
...

我不懂怎么使用

点评

提取里面的g4e_wb,在grub4dos下运行它,看看有什么反应。 title g4e_wb g4e_wb abcdef pause  详情 回复 发表于 2020-12-19 21:09
回复

使用道具 举报

21#
发表于 2020-12-19 22:33:47 | 显示全部楼层
wintoflash 发表于 2020-12-19 21:09
提取里面的g4e_wb,在grub4dos下运行它,看看有什么反应。
title g4e_wb
g4e_wb abcdef

卡停,实体机与qemu一样。



点评

等yaya解决这个问题吧。 能写外部命令了就可以移植ntboot。  详情 回复 发表于 2020-12-19 22:35
回复

使用道具 举报

22#
发表于 2020-12-19 23:05:53 | 显示全部楼层
wintoflash 发表于 2020-12-19 22:35
等yaya解决这个问题吧。
能写外部命令了就可以移植ntboot。

好的。一直在等待。喜欢g4d的轻量高效。
在使用了你的grub2后,也喜欢grub2的高度自定。
回复

使用道具 举报

23#
发表于 2020-12-20 17:12:14 | 显示全部楼层
2011yaya2007777 发表于 2020-12-20 16:06
试一试这一个。
这一个与前一个,我在qemu虚拟机以及实机测试,都正常,所以也不知问题在哪里。
我猜测是 ...

这一个跟之前的一样,在我的电脑上qemu和实机都卡停,跟之前的反应是一样的,同样的出错提示。
回复

使用道具 举报

24#
发表于 2020-12-20 21:40:16 | 显示全部楼层
artour 发表于 2020-12-20 21:32
看了半天,不知道怎么上手。 GRUB4DOS 之前 是根目录放三个文件,menu.lst,grldr.mbr,grldr,修改下menu. ...

grub4dos.efi的下载和使用:http://bbs.wuyou.net/forum.php?mod=viewthread&tid=423365
回复

使用道具 举报

25#
发表于 2020-12-23 13:45:32 | 显示全部楼层
2011yaya2007777 发表于 2020-12-23 10:16
修改了 G4E 外部命令模板,再测试一下。我这里正常。要使用里边那个 BOOTX64.EFI,是配套的。
另外我想 ...

我测试g4e_wb 是使用 g4e_wb-2020-12-23.rar 中的bootx64.efi 和 g4e_wb ,bootx64.efi放在U盘作为主引导,qemu和实体机都依然是死机,但这次qemu不再出现错误弹窗。



回复

使用道具 举报

26#
发表于 2020-12-25 12:19:07 | 显示全部楼层
2011yaya2007777 发表于 2020-12-25 10:26
再次测试G4E外部命令。

我这也是g4e_wb OK!
回复

使用道具 举报

27#
发表于 2020-12-25 15:39:50 | 显示全部楼层
本帖最后由 hilsonma 于 2020-12-25 15:41 编辑
wintoflash 发表于 2020-12-25 15:20
写了两个实验性的外部命令。date 和 ver。
date 显示直接从 UEFI 系统表运行时服务获取的日期,ver 命令显 ...

3个命令都执行ok

回复

使用道具 举报

28#
发表于 2021-1-20 20:04:59 | 显示全部楼层
2011yaya2007777 发表于 2021-1-20 18:49
支持差分VHD,请测试。
map --mem --parent-vhd-name="父VHD文件名称(带路径)“ 子VHD文件名称(带路径 ...

两级差分是不是这样:
map --mem --parent-vhd-name="/vhd/win81_0.vhdx" "/vhd/win81_1b.vhdx" "/vhd/win.vhdx" (hd)
回复

使用道具 举报

29#
发表于 2021-1-22 09:49:55 | 显示全部楼层
2011yaya2007777 发表于 2021-1-21 11:03
昨天的版本,父vhd只能说动态的。现在正考虑父vhd是固定的。

为什么chenall网站那里每次发新版本都是那个2020-12-20的置顶呢,能不能改过来,让最新版本置顶。

点评

这些是 CI 自动生成的页面,因为原来的 CI 已经不能使用了。 正在重新处理,目前自动编译的已经没有可以了,这些天我会处理一下发布页的问题。  详情 回复 发表于 2021-1-22 09:54
回复

使用道具 举报

30#
发表于 2021-1-22 10:04:11 | 显示全部楼层
2011yaya2007777 发表于 2021-1-21 11:03
昨天的版本,父vhd只能说动态的。现在正考虑父vhd是固定的。

建议多层差分也考虑一下。
或者可以跟wintoflash参考一下,他改的grub2的ntboot模块是可以直接引导子vhdx的,不用指明父vhd,也不管有几层差分。

点评

我以前说过,ntboot 不会读 vhd。读 vhd 的是 bootmgfw.efi,它支持什么样的格式,那就能启动什么样的vhd。 不是。只是借鉴了 chenall 的 ntboot 的原理。现在 grub2 的 ntboot 和 早期的版本完全不是一回事了。  详情 回复 发表于 2021-1-22 14:34
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-7-8 00:45

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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