无忧启动论坛

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

[原创] GRUB4DOS for UEFI

    [复制链接]
451#
发表于 2020-11-20 10:49:54 | 只看该作者
hilsonma 发表于 2020-11-20 10:30
是这个porteus版本的问题,换了grub2引导也是一样的。

我试了另一个porteus版本,这个版本可以用grub2 ...

因为g4e上用的是 EFI handover protocol,相当于 grub2下的 linuxefi 和 initrdefi 命令。
对于没开启 EFI stub 或者非 64 位 linux 是不支持的。
主流的 linux (比如 Ubuntu, Fedora) 都支持,你可以试一下。你用的 "另一个porteus版本" 应该是我几年前做的。当时 UEFI 还没那么普遍。



点评

晕。卡死,搞得我按了几次提交。  发表于 2020-11-20 11:03
刚才又重新检查了一次,发现是我没有按要求先提取porteus文件夹,只提取了 vmlinuz 和initrd.xz 两个文件,所以启动失败。 再次按照你441楼的操作,启动成功了。 不过还是你之前做那个版本方便,进去就能用,  详情 回复 发表于 2020-11-20 11:00
刚才又重新检查了一次,发现是我没有按要求先提取porteus文件夹,只提取了 vmlinuz 和initrd.xz 两个文件,所以启动失败。 再次按照你441楼的操作,启动成功了。 不过还是你之前做那个版本方便,进去就能用,  详情 回复 发表于 2020-11-20 10:59
刚才又重新检查了一次,发现是我没有按要求先提取porteus文件夹,只提取了 vmlinuz 和initrd.xz 两个文件,所以启动失败。 再次按照你441楼的操作,启动成功了。 不过还是你之前做那个版本方便,进去就能用,  详情 回复 发表于 2020-11-20 10:59
刚才又重新检查了一次,发现是我没有按要求先提取porteus文件夹,只提取了 vmlinuz 和initrd.xz 两个文件,所以启动失败。 再次按照你441楼的操作,启动成功了。 不过还是你之前做那个版本方便,进去就能用,  详情 回复 发表于 2020-11-20 10:58
回复

使用道具 举报

452#
发表于 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楼的操作,启动成功了。

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

使用道具 举报

453#
 楼主| 发表于 2020-11-20 11:02:29 | 只看该作者
内存不足了。

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

使用道具 举报

454#
发表于 2020-11-20 18:36:53 | 只看该作者
严重支持
回复

使用道具 举报

455#
发表于 2020-11-20 22:58:15 | 只看该作者

g4e似乎不支持USB-FDD(1.44M软盘)、USB-ZIP(250M大软盘,FAT32/可移动)。

这2种设备,如果装的是MS的bootx64.efi,则可以正常进入shell命令行状态。
如果装的是g4e的bootx64.efi,则:

1、USB-FDD启动,黑屏无反应;
2、USB-ZIP启动,则直接进入g4e命令行状态(似乎是不能正常挂载分区所致?)





回复

使用道具 举报

456#
 楼主| 发表于 2020-11-21 07:35:04 来自手机 | 只看该作者
这两种设备,在UEFI环境里,还有什么实际的意义?我不知道。
回复

使用道具 举报

457#
发表于 2020-11-21 08:48:40 来自手机 | 只看该作者
2011yaya2007777 发表于 2020-11-21 07:35
这两种设备,在UEFI环境里,还有什么实际的意义?我不知道。

跳转测试需要。

除了要测试各种USB设备类型这个兼容性考虑之外,有这种实际情形:

在一个U盘上实现了CD+HDD+ZIP+FDD各种设备类型共存之后,那么,如果menu.lst存放在fdd/zip上,而要启动存放在HDD上体积庞大的PE、LINUX时,需要fdd/zip本身的g4e能正常运行……

回复

使用道具 举报

458#
发表于 2020-11-21 09:42:55 | 只看该作者


bios内已选择性地有了文件系统,(uefi主导多分区)
mbr 有接班格式 gpt

win10 1703 认可U盘 多分区,U盘128G主流

ZIP+FDD对efi 是技术死区。
回复

使用道具 举报

459#
发表于 2020-11-21 10:53:44 | 只看该作者
本帖最后由 wuwuzz 于 2020-11-21 10:56 编辑

AMI系UEFI内部保留了USB-FDD、USB-KEY(ZIP的后裔,见下面解释)支持;
Phonenix系、Insyde系UEFI怎样不清楚,因为没有源代码流出。

我能掌握的最后确切信息是:
Phoenix BIOS流出的源代码保留了USB-FDD、USB-ZIP支持。
尤其是其代码注释中对ZIP的释义有很大参考价值。

原始的Iomage ZIP早就死了,但其理念却保留了下来,严重影响
着 BIOS(UEFI)的设计思路。说白了,就是类似于G4D中map fd的方法,
ZIP可以切换,成为固定盘设备(HD)或者移动盘设备(fd)。

在UEFI引导菜单中频繁出现的USB-KEY设备(从字面理解就是U盘),
实质(支持代码)在AMI环境中,应该就是ZIP切成fd设备的延续。
而对于Phoenix环境,则另有其特定算法。




回复

使用道具 举报

460#
发表于 2020-11-21 15:41:51 | 只看该作者

感谢分享
回复

使用道具 举报

461#
发表于 2020-11-21 17:23:27 | 只看该作者
本帖最后由 wuwuzz 于 2020-11-21 17:27 编辑

“2011whp  内部 子方案有吧,比如 光盘还挂个img ,也变味了,借鉴 架构理念。 biso整体方案,应该是不提倡了。”

----与想象中的BIOS-UEFI巨大差异不同,
实际上UEFI内部USB启动算法没有大变,例如AMI UEFI,归根结底,其实
就是 BIOS中的汇编代码用C又重新实现了一遍,重合度很高。
回复

使用道具 举报

462#
发表于 2020-11-21 22:34:39 | 只看该作者
同一U盘,同一Win10 PE ISO,

在AMI UEFI     (海尔S4笔记本),  MAP、chainloader后启动成功;
在Insyde UEFI (HP  G4笔记本),   MAP、chainloader后出错boot image handle not found。

原因不明。





回复

使用道具 举报

463#
发表于 2020-11-21 23:04:54 | 只看该作者
谢谢分享
回复

使用道具 举报

464#
发表于 2020-11-22 02:58:29 | 只看该作者
测试2020-11-18版:
     1. 技加B75主板  有 setmenu --hotkey -A [F4] commandline  这句不能启动。虚拟机,365主板可以。
     2. 可以启动shellx64.efi   ,
     3.  bootmgfw.efi 启不了,绕到shellx64下可以启动。

回复 wuwuzz  深入bios内部分析了,g4e是外部引导器,我是 用户 不懂这方面开发

从软件工程角度分析
  一、需求分析
      g4e 目的是引导,功能界面 依托g4d,参考efi的导向(不清楚UEFI 是否支持软盘外设。只知efi接口是 在外设找fat分区下的一个文件)
      从这个层面:不想考虑 usb软盘了(现实中 没有不支持分区的U盘了吧!除非专门量产)
  二、功能设计
      g4e 这个基本在 设计者心中(怎么结合环境图灵 那些功能模块)
  三、代码实现
      这个层 不懂。应该是 汇编、c 、efi字节码都可用吧,与legacy有重合度。
      用楼主的话说:重新捊了一遍。
      这个层面bios内部有软盘的相关代码的,比如iso引导是一个软盘镜像,在efishell能浏览的,这是bios内部实现的。
      你的想法是 想让g4e 开放出来支持软盘img或设备。觉得没必要,就让它在内部起个光盘引导作用吧。
       起跳转的功能性img,用HDD(估计开放 fdd也不难,又要涉及chs混乱)

it界 问题:功能要标准定义,通讯要协议定义,

回复

使用道具 举报

465#
 楼主| 发表于 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
复制代码
回复

使用道具 举报

466#
发表于 2020-11-22 09:03:35 | 只看该作者
wuwuzz 发表于 2020-11-21 22:34
同一U盘,同一Win10 PE ISO,

在AMI UEFI     (海尔S4笔记本),  MAP、chainloader后启动成功;

补充Debug信息,两种UEFI似乎对G4E处理不同。





回复

使用道具 举报

467#
 楼主| 发表于 2020-11-22 09:05:11 | 只看该作者
在Insyde UEFI (HP  G4笔记本),   MAP、chainloader后出错boot image handle not found。

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

使用道具 举报

468#
发表于 2020-11-22 09:08:13 | 只看该作者
2011yaya2007777 发表于 2020-11-22 09:05
在命令行先输入
debug 3
之后再测试一下

472#就是debug后信息。两种UEFI对G4E出错提示,似乎处理不同
回复

使用道具 举报

469#
发表于 2020-11-22 09:19:42 | 只看该作者
补充:
AMI UEFI机,无内置光驱。Insyde UEFI机有内置sata光驱,未放光盘。
潜意识以为新版g4e已调整光盘顺序,就没考虑这个因素。


回复

使用道具 举报

470#
 楼主| 发表于 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 时,判断不一致,滤除了?
后面的????没有显示,不知是什么,匹配不?
回复

使用道具 举报

471#
发表于 2020-11-22 10:18:09 | 只看该作者
2011yaya2007777 发表于 2020-11-22 09:03
wintoflash:
chenall 合并你的补丁后,编译出现以下问题
/mnt/.31/home/dev/grub4dos/grub-mkimage64: li ...

好,我研究一下。
我觉得用 grub-mkimage 生成最终文件只是权宜之计,还是要想办法自己写个 elf2pe 这样的程序转格式。


回复

使用道具 举报

472#
发表于 2020-11-22 10:28:18 | 只看该作者
本帖最后由 wuwuzz 于 2020-11-22 10:30 编辑
2011yaya2007777 发表于 2020-11-22 10:01
wuwuzz 提供的 Insyde UEFI (HP  G4笔记本) 测试结果(472#第一张图),其中光盘路径是:

VenHw(160B07E4 ...

后面是\EFI\BOOT\BOOTX64.EFI 。CDROM后面一长串字符与AMI UEFI环境下相同。
回复

使用道具 举报

473#
发表于 2020-11-22 12:53:37 | 只看该作者
作为最终端的使用者,我对于 Grub 4 Dos for UEFI 的要求只有一个: 能象 G4D 一样,可以方便地映射 ISO、IMG、VHD 等镜像并成功启动,最好可以直接 chainloader /bootmgr 之类引导 Windows 系统——如果能s修改一下 SVBUS 之类使它能用于 RAMOS 就更妙了。
回复

使用道具 举报

474#
发表于 2020-11-22 15:11:57 | 只看该作者
本帖最后由 wintoflash 于 2020-11-22 15:13 编辑
2011yaya2007777 发表于 2020-11-22 09:03
wintoflash:
chenall 合并你的补丁后,编译出现以下问题
/mnt/.31/home/dev/grub4dos/grub-mkimage64: li ...

少了俩空格。我又提交了一个pr。现在我这边测试release ok了
https://github.com/grub4dos/grub ... /2020-11-22-086638b
回复

使用道具 举报

475#
 楼主| 发表于 2020-11-22 16:03:29 | 只看该作者
少了俩空格。我又提交了一个pr

我这边测试 ok 了
回复

使用道具 举报

476#
发表于 2020-11-22 16:25:29 | 只看该作者
xianglang 发表于 2020-11-22 12:53
作为最终端的使用者,我对于 Grub 4 Dos for UEFI 的要求只有一个: 能象 G4D 一样,可以方便地映射 ISO、I ...

哈哈。我与兄台想法几乎相同。
回复

使用道具 举报

477#
发表于 2020-11-22 19:24:40 | 只看该作者
本帖最后由 求道者 于 2020-11-22 19:26 编辑

yaya,我滴超人!
但是能不能用grub2的mod?
文件系统支持的相当多。
重写怕不是比移植g4d的特性到grub2还难……


回复

使用道具 举报

478#
发表于 2020-11-23 12:55:40 | 只看该作者
求道者 发表于 2020-11-22 19:24
yaya,我滴超人!
但是能不能用grub2的mod?
文件系统支持的相当多。

你需要grub2的哪个功能?

grub2的mod肯定不能直接用,这个在设计上就没有这种考虑。

点评

btrfs hfs xfs,蛮多文件系统我都用 然后就是支持带碎片的iso启动。  详情 回复 发表于 2020-11-23 21:49
回复

使用道具 举报

479#
发表于 2020-11-23 13:49:50 | 只看该作者
本帖最后由 2011whp 于 2020-11-23 14:04 编辑

2020-11-19版   深度livecd实机成功     简易测试器,读initrd.img后不动了。
deepin-live-system-2.0-amd64.iso 改名 l.iso  (大小385MB)下载地址:https://www.deepin.org/zh/download/      最下面

kernel /src/vmlinuz boot=live findiso=/src/l.iso components quiet splash
initrd /src/initrd.img
小问题:
无效菜单选不中,没法编辑 (第一次 忘了 把linux 改为 kernel )

有判断 无效菜单的逻辑?


回复

使用道具 举报

480#
发表于 2020-11-23 14:05:29 | 只看该作者
2011whp 发表于 2020-11-23 13:49
2020-11-19版   深度livecd实机成功     简易测试器,读initrd.img后不动了。
deepin-live-system-2.0-amd ...

qemu测试就别说了。内存不够,就算内存够了也慢得要死。
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-5-15 06:47

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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