无忧启动论坛

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

[原创] GRUB4DOS for UEFI

    [复制链接]
91#
 楼主| 发表于 2020-11-12 20:10:59 来自手机 | 显示全部楼层
svbus会那样读吗?如果能,那太好了。但是现在还没有做到。

点评

现在没做到,但是做成这个应该还是比较简单的……我在想要不要写个补丁啥的  详情 回复 发表于 2020-11-12 20:12
回复

使用道具 举报

92#
 楼主| 发表于 2020-11-12 20:38:20 来自手机 | 显示全部楼层
到现在为止,还没有收到是否G4E成功配合了svbus.

点评

我过几天闲下来的时候做个测试吧,尼玛这几天全是考试……先测试下能否正常识别虚拟盘以及能否正常从上面开机好了……  详情 回复 发表于 2020-11-12 20:45
回复

使用道具 举报

93#
 楼主| 发表于 2020-11-12 21:16:53 来自手机 | 显示全部楼层
先办正是,闲下来再测试吧。
回复

使用道具 举报

94#
 楼主| 发表于 2020-11-18 19:48:49 来自手机 | 显示全部楼层
打错了。

点评

[attachimg]468749[/attachimg] 你源码里面带的grub-mkimage是不是原版grub2的? 32位的程序在64位系统里面跑不了。如果是原版,那执行系统里面带的grub-mkimage是不是好一些。  详情 回复 发表于 2020-11-18 20:32
回复

使用道具 举报

95#
 楼主| 发表于 2020-11-18 20:44:52 来自手机 | 显示全部楼层
是grub2原版,64位。在linux环境编译。使用它转换为pe。
回复

使用道具 举报

96#
 楼主| 发表于 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 。
回复

使用道具 举报

97#
 楼主| 发表于 2020-11-19 12:19:11 来自手机 | 显示全部楼层
嗷,视乎明白了,是我的操作系统是32位的,在64位系统下编译通不过。等待你的好消息。
回复

使用道具 举报

98#
 楼主| 发表于 2020-11-19 14:34:24 | 显示全部楼层
一楼的介绍,是不是可以直接改为

我已经把一楼的菜单删除了,怎么又有了?再删除一次。
回复

使用道具 举报

99#
 楼主| 发表于 2020-11-19 19:56:26 来自手机 | 显示全部楼层
高效率,赞一个!
回复

使用道具 举报

100#
 楼主| 发表于 2020-11-19 20:39:23 来自手机 | 显示全部楼层
关于第一个问题:不知道我理解的对不对,如果加载到内存的镜像是准备启动的,使用那一种内存类型都可以。如果是供启动后的镜像使用,那就应当是运行数据类型。    关于第二个问题,那个变量在前几行已经4k对齐了。
回复

使用道具 举报

101#
 楼主| 发表于 2020-11-20 10:37:32 | 显示全部楼层
不知道grub4dos的efi支持不支持嵌入内置菜单?

现在不支持。
回复

使用道具 举报

102#
 楼主| 发表于 2020-11-20 10:39:30 | 显示全部楼层
wintoflash:
实体机测试成功。
qemu虚拟机失败。

20201120092238.jpg (66.21 KB, 下载次数: 122)

20201120092238.jpg
回复

使用道具 举报

103#
 楼主| 发表于 2020-11-20 11:02:29 | 显示全部楼层
内存不足了。

那就不用管他了。内存300Mb,肯定启不来,不过原始镜像好像多运行了一点,屏幕改变了分辨率,该转圈圈了。
回复

使用道具 举报

104#
 楼主| 发表于 2020-11-21 07:35:04 来自手机 | 显示全部楼层
这两种设备,在UEFI环境里,还有什么实际的意义?我不知道。

点评

跳转测试需要。 除了要测试各种USB设备类型这个兼容性考虑之外,有这种实际情形: 在一个U盘上实现了CD+HDD+ZIP+FDD各种设备类型共存之后,那么,如果menu.lst存放在fdd/zip上,而要启动存放在HDD上体积庞大的  详情 回复 发表于 2020-11-21 08:48
回复

使用道具 举报

105#
 楼主| 发表于 2020-11-22 09:03:33 | 显示全部楼层
wintoflash:
chenall 合并你的补丁后,编译出现以下问题
/mnt/.31/home/dev/grub4dos/grub-mkimage64: line 1: syntax error: unexpected word (expecting ")")

  1. if [ $platform='x86_64' ]
  2. then
  3.     $SOURCE_DIR/grub-mkimage64 -d $GRUB4DOS_TEMP -p /GRUB2 -o BOOTX64.EFI -O x86_64-efi
  4. else
  5.     $SOURCE_DIR/grub-mkimage -d $GRUB4DOS_TEMP -p /GRUB2 -o BOOTX64.EFI -O x86_64-efi
  6. fi
复制代码

点评

少了俩空格。我又提交了一个pr。  详情 回复 发表于 2020-11-22 15:11
好,我研究一下。 我觉得用 grub-mkimage 生成最终文件只是权宜之计,还是要想办法自己写个 elf2pe 这样的程序转格式。  详情 回复 发表于 2020-11-22 10:18
回复

使用道具 举报

106#
 楼主| 发表于 2020-11-22 09:05:11 | 显示全部楼层
在Insyde UEFI (HP  G4笔记本),   MAP、chainloader后出错boot image handle not found。

在命令行先输入
debug 3
之后再测试一下

点评

一、继上次测试map ISO问题,又测试了map img,出现同样的情形。 AMI UEFI下可以成功map img并启动,Insyde UEFI则失败。 [attachimg]469399[/attachimg] [attachimg]469400[/attachimg] 二、img是同  详情 回复 发表于 2020-11-28 22:22
472#就是debug后信息。两种UEFI对G4E出错提示,似乎处理不同  详情 回复 发表于 2020-11-22 09:08
回复

使用道具 举报

107#
 楼主| 发表于 2020-11-22 10:01:27 | 显示全部楼层
本帖最后由 2011yaya2007777 于 2020-11-22 10:21 编辑

wuwuzz 提供的 Insyde UEFI (HP  G4笔记本) 测试结果(472#第一张图),其中光盘路径是:

VenHw(160B07E4-2D08-3104-E407-0B16082D0431,00000000)/CDROM(0x91,0x128,0x1680)/\EFI\??????

怎么会多出一个 00000000 ?比对 GUID 时,判断不一致,滤除了?
后面的????没有显示,不知是什么,匹配不?

点评

考虑到G4E map和grub2 map同源,又回溯追查了grub2 map的情况,以获取更多的提示信息。 1.在AMI UEFI下grub2 map启动成功,在Insyde UEFI下失败。grub2 map的设备路径里也有[0:]。 [attachimg]469055[/attachimg]  详情 回复 发表于 2020-11-24 15:42
后面是\EFI\BOOT\BOOTX64.EFI  详情 回复 发表于 2020-11-22 10:28
回复

使用道具 举报

108#
 楼主| 发表于 2020-11-22 16:03:29 | 显示全部楼层
少了俩空格。我又提交了一个pr

我这边测试 ok 了
回复

使用道具 举报

109#
 楼主| 发表于 2020-11-23 18:27:25 | 显示全部楼层
3.  bootmgfw.efi 启不了

我这里测试可以启动。在实模式下秒启。qemu 虚拟机下则几十秒才能启动,但是启动 grub2.efi 很快。
回复

使用道具 举报

110#
 楼主| 发表于 2020-11-24 08:34:05 | 显示全部楼层
然后就是支持带碎片的iso启动。

grub4dos本来就支持。
回复

使用道具 举报

111#
 楼主| 发表于 2020-11-24 08:35:23 | 显示全部楼层
i386版本好像没法编译,报错。

i386还没有顾上修改。这几天看看。
回复

使用道具 举报

112#
 楼主| 发表于 2020-11-24 17:32:10 来自手机 | 显示全部楼层
分析得挺好。
回复

使用道具 举报

113#
 楼主| 发表于 2020-11-25 21:21:30 来自手机 | 显示全部楼层
不是默认菜单,只是示例。热键只是为了说明这个功能如何使用。菜单设置有很多功能,非常丰富。当然对界面无所求的话,可以不设置。分辨率可以自行设置,修改。1024不是任何屏幕都支持的尺寸。可以不设置图形模式,直接在控制台模式模式工作。
回复

使用道具 举报

114#
 楼主| 发表于 2020-11-26 09:21:55 | 显示全部楼层
i386版本好像没法编译,报错。

我已经把 i386 及 x86_64 源代码合并了,上传官网。
根目录下有一个 build 及 build-i386,stage2 目录下有一个 Makefile.in 及 Makefile.in-i386,shared.h 文件里有一个编译开关 #define i386 0            //系统类型  0: x86_64;  1: i386。

编译 i386 需要手工处理,转换开关,重命名文件,不太方便。如何修改,你比我有经验。

另外,坛友反馈不能启动 bootmgfw.efi。
我这里实机测试,1129kb 那个可以启动,1522kb 那个不能启动。执行
    status = efi_call_3 (b->start_image, image_handle, 0, NULL);
后返回状态码 0x8000000000000011,没有映像?
回复

使用道具 举报

115#
 楼主| 发表于 2020-11-26 12:13:37 来自手机 | 显示全部楼层
我说的控制台,就是UEFI shell。在这个环境可以显示英文字母,数字。你使用 find 或者 vol ,看看有没有 (hd0,0).
回复

使用道具 举报

116#
 楼主| 发表于 2020-11-26 13:03:07 来自手机 | 显示全部楼层
这张图不是在grun4dos,不能说明什么。
回复

使用道具 举报

117#
 楼主| 发表于 2020-11-26 13:15:40 来自手机 | 显示全部楼层
你在grub4dos命令行,执行root,vol,拍照。
回复

使用道具 举报

118#
 楼主| 发表于 2020-11-26 13:53:26 来自手机 | 显示全部楼层
现在就可以呀。传递一个ipxe接口。
回复

使用道具 举报

119#
 楼主| 发表于 2020-11-26 13:57:35 来自手机 | 显示全部楼层
看图,可以ls (hd0,0)/ ,已经显示出根目录的文件夹了,怎么说不能呢?
回复

使用道具 举报

120#
 楼主| 发表于 2020-11-26 14:11:50 来自手机 | 显示全部楼层
希望你能开发。把玩图形界面的人不多。斯蒂夫玩得很好。
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-4-29 19:51

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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