my9823 发表于 2020-11-18 20:36:48

diff应该是linux下diff命令产生的文件吧?

2011yaya2007777 发表于 2020-11-18 20:44:52

是grub2原版,64位。在linux环境编译。使用它转换为pe。

jmwjy 发表于 2020-11-18 21:47:15

这个更名为grub4UEFI好了

wintoflash 发表于 2020-11-18 21:55:58

2011yaya2007777 发表于 2020-11-18 20:44
是grub2原版,64位。在linux环境编译。使用它转换为pe。

你的这个明明是32位grub-mkimage。64位grub-mkimage弄不了。

hfxiang 发表于 2020-11-19 08:46:24

本帖最后由 hfxiang 于 2020-11-19 08:47 编辑

2011whp 发表于 2020-11-18 20:25
PXE的核心是 dhcpd 配置的参数
从参数里指定的 一个文件bootx64.efi(也可指定一个菜单文件menu.lst共两 ...
我对您所说的理解为“用bootx64.efi替代pxelinux.0”,是这样吧?谢谢您的热心回复

2011yaya2007777 发表于 2020-11-19 09:46:23

你的这个明明是32位grub-mkimage。64位grub-mkimage弄不了。
我是把 grub-2.03 配置了一个 32 位的 grub-32,又配置了一个 64 位的grub-64。
编译 bootia32.efi 时,grub-mkimage 取自 grub-32。
编译 bootx64.efi 时,grub-mkimage 取自 grub-64。
难道这两个 grub-mkimage 是一样的?都是 32 位的?那意思就是说,还有一个 64 位的 grub-mkimage 。

fukegdlfm 发表于 2020-11-19 11:08:48

支持楼主的分享,改天下来试试。支持支持

wintoflash 发表于 2020-11-19 11:24:41

2011yaya2007777 发表于 2020-11-19 09:46
我是把 grub-2.03 配置了一个 32 位的 grub-32,又配置了一个 64 位的grub-64。
编译 bootia32.efi 时 ...

grub-mkimage的位数是和系统保持一致的,与./configure --target=i386 ./configure --target=x86_64无关。


我又自己编译了一个64位的grub-mkimage,改了一下build脚本弄成检测系统位数然后自动选择的。
https://github.com/a1ive/grub4dos/commit/65a7531985e99eb8af6ac8da911321a5c557b90a

现在正在研究把 kernel 命令加载linux内核的功能加回来,等研究好了一并合并到你那边。

2011yaya2007777 发表于 2020-11-19 12:19:11

嗷,视乎明白了,是我的操作系统是32位的,在64位系统下编译通不过。等待你的好消息。

chenall 发表于 2020-11-19 13:04:46

2011yaya2007777 发表于 2020-11-19 12:19
嗷,视乎明白了,是我的操作系统是32位的,在64位系统下编译通不过。等待你的好消息。

我这边是64位(centos)的也可以直接编译通过。。

liuzhaoyzz 发表于 2020-11-19 14:19:43

本帖最后由 liuzhaoyzz 于 2020-11-19 14:21 编辑

友情提示,菜单应当是 utf-8 格式,默认位置在
/menu.lst
/boot/grub/menu.lst
/grub/menu.lst
      一楼的介绍,是不是可以直接改为:
友情提示,菜单应当是 utf-8 格式,默认位置在/efi/grub/menu.lst
我还特地尝试了下。


看了grub4dos-0.4.6a_for_UEFI-2020-11-18里面的menu.lst的demo和ChangeLog_UEFI.txt,简单明了,很好啊!


2011yaya2007777 发表于 2020-11-19 14:34:24

一楼的介绍,是不是可以直接改为
我已经把一楼的菜单删除了,怎么又有了?再删除一次。

liuzhaoyzz 发表于 2020-11-19 14:50:57

2011yaya2007777 发表于 2020-11-19 14:34
我已经把一楼的菜单删除了,怎么又有了?再删除一次。

      一楼已经改好了。另外wintoflash大神说的else拼写错误,ChangeLog_UEFI.txt里面也有的,不单单是论坛帖子写错了,别忘了哟

3ax31a 发表于 2020-11-19 17:00:37

大佬牛乂

my9823 发表于 2020-11-19 19:00:13

yaya大,grub2的grub-mkimage制作efi时可以用-c嵌入内置菜单,不知道grub4dos的efi支持不支持嵌入内置菜单?

wintoflash 发表于 2020-11-19 19:37:52

本帖最后由 wintoflash 于 2020-11-19 19:46 编辑

测试:增加启动linux的功能。

使用 kernel 和 initrd 命令启动 linux。
测试 Linux:Porteus 5.0 x86_64 openbox
下载 http://dl.porteus.org/x86_64/Por ... -v5.0rc1-x86_64.iso
把 porteus 文件夹解压到 U 盘根目录。
提取 /boot/syslinux/vmlinuz 和 /boot/syslinux/initrd.xz 到 /porteus 下。
命令:
kernel /porteus/vmlinuz copy2ram
initrd /porteus/initrd.xz


目前是通过 EFI handover protocol 启动 linux 的,要求版本 >= 3.6 且开启 EFI stub。
以下功能未实现:
[*]支持加载多个 initrd
[*]支持 wimboot @file:path

2011yaya2007777 发表于 2020-11-19 19:56:26

高效率,赞一个!

wintoflash 发表于 2020-11-19 20:10:30

map --mem 这里处理得应该不太对。
status = efi_call_4 (b->allocate_pages, GRUB_EFI_ALLOCATE_ANY_PAGES, GRUB_EFI_LOADER_CODE,
                              (grub_efi_uintn_t)bytes_needed >> 12, (void **)&alloc);
GRUB_EFI_LOADER_CODE 是不是应该改成 GRUB_EFI_RUNTIME_SERVICES_DATA
还有 (grub_efi_uintn_t)bytes_needed >> 12 , 这个处理我不清楚对不对,是不是改成
(grub_efi_uintn_t)(bytes_needed + 0xfff) >> 12 更好一些。

2011yaya2007777 发表于 2020-11-19 20:39:23

关于第一个问题:不知道我理解的对不对,如果加载到内存的镜像是准备启动的,使用那一种内存类型都可以。如果是供启动后的镜像使用,那就应当是运行数据类型。    关于第二个问题,那个变量在前几行已经4k对齐了。

wintoflash 发表于 2020-11-19 20:45:48

2011yaya2007777 发表于 2020-11-19 20:39
关于第一个问题:不知道我理解的对不对,如果加载到内存的镜像是准备启动的,使用那一种内存类型都可以。如 ...

这个地方是给map --mem的内存盘分配内存的吧。如果希望svbus能够认这块内存盘,那就得是RUNTIME DATA。

hilsonma 发表于 2020-11-20 00:44:36

wintoflash 发表于 2020-11-19 19:37
测试:增加启动linux的功能。

使用 kernel 和 initrd 命令启动 linux。


好象我这里kernel 不成功

chenall 发表于 2020-11-20 08:48:09

支持linux 启动的pr已经合并

wintoflash 发表于 2020-11-20 09:15:49

hilsonma 发表于 2020-11-20 00:44
好象我这里kernel 不成功


你用的是老版本

wintoflash 发表于 2020-11-20 09:58:02

chenall 发表于 2020-11-20 08:48
支持linux 启动的pr已经合并

大佬 把 0.4.6a 或者 efi 分支设成主分支吧。

hilsonma 发表于 2020-11-20 10:10:45

wintoflash 发表于 2020-11-20 09:15
你用的是老版本

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

wintoflash 发表于 2020-11-20 10:18:34

hilsonma 发表于 2020-11-20 10:10
重新下载后能引导了,porteus 启动中途出错,不懂怎么搞

说明porteus不认你的硬盘/U盘。porteus带的驱动太少了。

hilsonma 发表于 2020-11-20 10:30:18

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

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

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

2011yaya2007777 发表于 2020-11-20 10:37:32

不知道grub4dos的efi支持不支持嵌入内置菜单?
现在不支持。

2011yaya2007777 发表于 2020-11-20 10:39:30

wintoflash:
实体机测试成功。
qemu虚拟机失败。

wintoflash 发表于 2020-11-20 10:45:17

2011yaya2007777 发表于 2020-11-20 10:39
wintoflash:
实体机测试成功。
qemu虚拟机失败。
Not enough memory to copy ...
内存不足了。
我给的这个kernel命令行是全部加载到内存的,去掉 copy2ram 应该就可以了。
kernel /porteus/vmlinuz
initrd /porteus/initrd.xz



页: 5 6 7 8 9 10 11 12 13 14 [15] 16 17 18 19 20 21 22 23 24
查看完整版本: GRUB4DOS for UEFI