无忧启动论坛

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

[原创] GRUB4DOS for UEFI

    [复制链接]
841#
发表于 2020-12-19 19:02:51 | 只看该作者
hilsonma 发表于 2020-12-19 18:04
我现在也是用差分系统,等待中。

GRUB4DOS BIOS 版就不支持差分 VHD 啊,更别说 VHDX 了。
你是不是 BIOS 下用的 NTBOOT?
https://github.com/chenall/grub4 ... age2/dec_vhd.c#L199

点评

是的,bios下我用g4d+siso (应该就是ntboot) uefi下用你的ntboot  详情 回复 发表于 2020-12-19 19:04
回复

使用道具 举报

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

使用道具 举报

843#
发表于 2020-12-19 19:31:07 | 只看该作者
hilsonma 发表于 2020-12-19 19:04
是的,bios下我用g4d+siso (应该就是ntboot,命令:command siso ntboot NT6=/vhd/win.vhdx)
uefi下用你 ...

http://bbs.wuyou.net/forum.php?m ... &fromuid=487838
827# yaya放出的测试用外部命令,你的电脑上能正常使用吗?
我觉得把 NTBOOT 做成外部命令比较合适。

点评

我不懂怎么使用  详情 回复 发表于 2020-12-19 20:29
回复

使用道具 举报

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

使用道具 举报

845#
发表于 2020-12-19 21:09:26 | 只看该作者

提取里面的g4e_wb,在grub4dos下运行它,看看有什么反应。
title g4e_wb
g4e_wb abcdef
pause

点评

卡停,实体机与qemu一样。 [attachimg]471055[/attachimg] [attachimg]471056[/attachimg]  详情 回复 发表于 2020-12-19 22:33
回复

使用道具 举报

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

使用道具 举报

847#
发表于 2020-12-19 22:35:00 | 只看该作者
hilsonma 发表于 2020-12-19 22:33
卡停,实体机与qemu一样。

等yaya解决这个问题吧。
能写外部命令了就可以移植ntboot。

点评

好的。一直在等待。喜欢g4d的轻量高效。 在使用了你的grub2后,也喜欢grub2的高度自定。  详情 回复 发表于 2020-12-19 23:05
回复

使用道具 举报

848#
发表于 2020-12-19 23:05:53 | 只看该作者
wintoflash 发表于 2020-12-19 22:35
等yaya解决这个问题吧。
能写外部命令了就可以移植ntboot。

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

使用道具 举报

849#
 楼主| 发表于 2020-12-20 16:06:45 | 只看该作者
本帖最后由 2011yaya2007777 于 2020-12-20 16:37 编辑

试一试这一个。
这一个与前一个,我在qemu虚拟机以及实机测试,都正常,所以也不知问题在哪里。
我猜测是编译问题。

能写外部命令了就可以移植ntboot。
ntboot 好像不是使用外部命令编写的,使用的是批处理。



g4e_wb.txt

556 Bytes, 下载次数: 5, 下载积分: 无忧币 -2

点评

还是不行。 [attachimg]471121[/attachimg] ntboot里面带了一些外部命令,比如 wenv, diskid。 grub2 的 ntboot/wimboot 是我另外用c语言写的模块,集成了注册表解析、boot.sdi生成、虚拟FAT32文件系统、wim文  详情 回复 发表于 2020-12-20 17:34
这一个跟之前的一样,在我的电脑上qemu和实机都卡停,跟之前的反应是一样的,同样的出错提示。  详情 回复 发表于 2020-12-20 17:12
回复

使用道具 举报

850#
发表于 2020-12-20 17:12:14 | 只看该作者
2011yaya2007777 发表于 2020-12-20 16:06
试一试这一个。
这一个与前一个,我在qemu虚拟机以及实机测试,都正常,所以也不知问题在哪里。
我猜测是 ...

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

使用道具 举报

851#
发表于 2020-12-20 17:34:20 | 只看该作者
2011yaya2007777 发表于 2020-12-20 16:06
试一试这一个。
这一个与前一个,我在qemu虚拟机以及实机测试,都正常,所以也不知问题在哪里。
我猜测是 ...

还是不行。

ntboot 好像不是使用外部命令编写的,使用的是批处理。

ntboot里面带了一些外部命令,比如 wenv, diskid。
grub2 的 ntboot/wimboot 是我另外用c语言写的模块,集成了注册表解析、boot.sdi生成、虚拟FAT32文件系统、wim文件解析等东西。原理有借鉴 chenall 的 ntboot。
回复

使用道具 举报

852#
发表于 2020-12-20 21:03:24 | 只看该作者
本帖最后由 liuzhaoyzz 于 2020-12-21 08:08 编辑

世界上第一个基于primo单驱动+grub2制作的UEFI-WIN8.1RAMOS单镜像制作成功 - RAMOS - 无忧启动论坛 - Powered by Discuz! http://wuyou.net/forum.php?mod=v ... 3&page=1#pid4199357

primo单驱动+g4e启动制作的UEFI-WIN8.1RAMOS失败,提示0xc000000e。


grub2成功!同一个vdf!
回复

使用道具 举报

853#
发表于 2020-12-20 21:32:47 | 只看该作者
本帖最后由 artour 于 2020-12-20 21:38 编辑

看了半天,不知道怎么上手。 GRUB4DOS 之前 是根目录放三个文件,menu.lst,grldr.mbr,grldr,修改下menu.lst就可引导启动相关ISO了,比如最近看到的Slitaz 5.0中文版, 这个UEFI版本到底如何使用呢?请问这个新版本能同时支持BIOS启动吗?

点评

grub4dos.efi的下载和使用:http://bbs.wuyou.net/forum.php?mod=viewthread&tid=423365  详情 回复 发表于 2020-12-20 21:40
https://cloud.189.cn/t/A3QzEvJvymAf 看下这个  详情 回复 发表于 2020-12-20 21:37
回复

使用道具 举报

854#
发表于 2020-12-20 21:37:09 | 只看该作者
artour 发表于 2020-12-20 21:32
看了半天,不知道怎么用。 GRUB4DOS 之前 是根目录放三个文件,menu.lst,grldr.mbr,grldr,修改下menu.ls ...

https://cloud.189.cn/t/A3QzEvJvymAf
看下这个

点评

请问是什么? 模块吗? 怎么打不开网页呢?  详情 回复 发表于 2020-12-20 21:40
回复

使用道具 举报

855#
发表于 2020-12-20 21:40:04 | 只看该作者
liuzhaoyzz 发表于 2020-12-20 21:37
https://cloud.189.cn/t/A3QzEvJvymAf
看下这个

请问是什么? 模块吗? 怎么打不开网页呢?

点评

模板好!可是网页老是说正在审核,无法下载呀!  详情 回复 发表于 2020-12-20 21:50
是个示例模板。  发表于 2020-12-20 21:46
回复

使用道具 举报

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

使用道具 举报

857#
发表于 2020-12-20 21:50:09 | 只看该作者
artour 发表于 2020-12-20 21:40
请问是什么? 模块吗? 怎么打不开网页呢?

模板好!可是网页老是说正在审核,无法下载呀!

点评

上传一个  详情 回复 发表于 2020-12-21 12:19
回复

使用道具 举报

858#
发表于 2020-12-21 12:19:36 | 只看该作者
artour 发表于 2020-12-20 21:50
模板好!可是网页老是说正在审核,无法下载呀!

上传一个

grub4dos和grub2引导器目录结构及其引导菜单示例.rar

2.18 MB, 下载次数: 100, 下载积分: 无忧币 -2

点评

上面的模板直接拿来就可以用吗? 比如我想在UEFI下启动论坛上的 slitaz5.0中文版,之前的代码应该改成什么才行呢? 下面是在之前旧版的Grub4DOS 下 启动论坛上的 slitaz5.0中文版的ISO title 00. MAP slitaz  详情 回复 发表于 2020-12-23 20:43
谢谢评分!  发表于 2020-12-21 14:59

评分

参与人数 1无忧币 +10 收起 理由
liuzhaoyzz + 10

查看全部评分

回复

使用道具 举报

859#
发表于 2020-12-21 14:44:21 | 只看该作者
本帖最后由 liuzhaoyzz 于 2020-12-21 21:28 编辑

再来个报告好消息!成功搞定了g4e启动的WIN7-Primo-UEFI-RAMOS,单镜像模式。

G4E启动WIN8-PRIMO-UEFI-RAMOS成功!

也就是说g4e和grub2都可以启动同一个vdf!




回复

使用道具 举报

860#
发表于 2020-12-21 14:49:56 | 只看该作者
好好学习一下。
回复

使用道具 举报

861#
发表于 2020-12-22 19:52:10 来自手机 | 只看该作者
本帖最后由 liuzhaoyzz 于 2020-12-22 19:57 编辑

好消息!g4e/grub2成功启动WIN10-PRIMO-UEFI-RAMOS!

但是g4e/grub2直接map有碎片的文件好像都不行。g4d提示too many fragments,grub2好像是直接返回主菜单了。
回复

使用道具 举报

862#
 楼主| 发表于 2020-12-22 20:02:19 来自手机 | 只看该作者
g4d好像支持16个以下的碎片。SVBus不支持碎片,PRIMO支持碎片吗?

点评

uefi启动的ramos里primo引导用的小vdf也不支持多碎片,对接的完全无压缩的系统大vdf倒是不用复制粘贴消除碎片  详情 回复 发表于 2020-12-22 20:38
支持含有碎片的文件仿真 - GRUB4DOS - 无忧启动论坛 - Powered by Discuz! http://wuyou.net/forum.php?mod=viewthread&tid=327458 本帖最后由 2011yaya2007777 于 2015-5-17 11:26 编辑 支持含有碎片的文件仿真。  详情 回复 发表于 2020-12-22 20:22
回复

使用道具 举报

863#
发表于 2020-12-22 20:22:38 | 只看该作者
2011yaya2007777 发表于 2020-12-22 20:02
g4d好像支持16个以下的碎片。SVBus不支持碎片,PRIMO支持碎片吗?

支持含有碎片的文件仿真 - GRUB4DOS - 无忧启动论坛 - Powered by Discuz! http://wuyou.net/forum.php?mod=viewthread&tid=327458
本帖最后由 2011yaya2007777 于 2015-5-17 11:26 编辑
支持含有碎片的文件仿真。最多 32 段碎片。

说明是最多支持32个碎片,但是实际好像不行,wincontig看了ssd上面有3个碎片好像都不行,所以实战上来讲,我都是直接复制粘贴以消除碎片。

primo支持碎片是什么意思?primo是把vdf数据直接加载到SCSI内存盘中,这个内存盘的地址可能不一定是一个连续块,而且可以跨越高低位内存的分界线。关于这个我可以去romex官网发个帖子问下,我不是很确定。

回复

使用道具 举报

864#
 楼主| 发表于 2020-12-22 20:37:22 来自手机 | 只看该作者
本帖最后由 2011yaya2007777 于 2020-12-22 20:42 编辑

我是不明白svbus与primo的作用和运行机理。既然primo是加载到内存,那为什么不使用--mem,而直接map。是你在上一个帖子提出碎片的话题。碎片与primo有什么关系?

点评

一、svbus搭配g4e/grub2有两种模式,直接map和map --mem。 1、在直接map模式下,要求被仿真的镜像必须在硬盘上连续存放,这是g4e/grub2引导器要求的。 2、在map --mem模式下,要求仿真占用的内存必须连续存放,这  详情 回复 发表于 2020-12-23 09:07
回复

使用道具 举报

865#
发表于 2020-12-22 20:38:35 | 只看该作者
2011yaya2007777 发表于 2020-12-22 20:02
g4d好像支持16个以下的碎片。SVBus不支持碎片,PRIMO支持碎片吗?

uefi启动的ramos里primo引导用的小vdf也不支持多碎片,对接的完全无压缩的系统大vdf倒是不用复制粘贴消除碎片
回复

使用道具 举报

866#
发表于 2020-12-22 23:10:43 | 只看该作者
本帖最后由 sht123960585 于 2020-12-22 23:11 编辑

版主,自动菜单不起作用,是否需要什么前置命令才能正常启用啊?帮忙看一下,谢谢!
  1. color normal=0xff9933 highlight=0xffff00 helptext=0xff00ff heading=0x66ff00
  2. graphicsmode -1 640:800 480:600 24:32
  3. font /efi/grub/unifont.hex.gz
  4. setmenu --box x=4 w=40 y=6 h=9 l=2
  5. setmenu --lang=zh

  6. #设置自动菜单编号
  7. setmenu --auto-num-on

  8. #设置字符串信息
  9. setmenu --string=10=3=0x0000000000ffff="GRUB4DOS 维  护  菜  单"

  10. #设置日期时间
  11. setmenu --string=s=0=0x8800000000ffff="date&time=yyyy-MM-dd  HH:mm:ss"

  12. #设置倒计时
  13. setmenu --timeout=45=6=0x88000000ffff

  14. #设置倒计时(秒)
  15. timeout 30

  16. #设置第一项为默认值
  17. default 1

  18. title MicroPE Windows 10 exFAT
  19. map (hd0,1)/boot/grub/imgs/WINPE.ISO (0xff)
  20. chainloader (0xff)

  21. title MicroPE USBOS 标准版
  22. map --mem (hd0,1)/boot/grub/imgs/USBOSV3.iso (0xff)
  23. chainloader (0xff)

  24. title 神雕定制slitaz中文版
  25. map  --mem (hd0,1)/boot/grub/imgs/slitaz-rolling-core64-cn.iso (0xff)
  26. chainloader (0xff)

  27. title 命令行
  28. commandline

  29. title 重启
  30. reboot

  31. title 关机
  32. halt
复制代码



QQ222.jpg (79.11 KB, 下载次数: 104)

QQ222.jpg
回复

使用道具 举报

867#
发表于 2020-12-23 09:07:29 | 只看该作者
本帖最后由 liuzhaoyzz 于 2020-12-23 14:06 编辑
2011yaya2007777 发表于 2020-12-22 20:37
我是不明白svbus与primo的作用和运行机理。既然primo是加载到内存,那为什么不使用--mem,而直接map。是你 ...

一、svbus搭配g4e/grub2有两种模式,直接map和map --mem。
1、在直接map模式下,要求被仿真的镜像必须在硬盘上连续存放,这是g4e/grub2引导器要求的
(可以进行优化,这正是你们大神做的,这个是我们期望的)
2、在map --mem模式下,要求仿真占用的内存必须连续存放,这是g4e/grub2引导器设计的(可以进行优化,这个不是必须,加内存条增大高位内存即可)。
g4e/grub2的map似乎工作于保护模式,windows工作于保护模式下,svbus的作用就是让g4e/grub2在保护模式下仿真出来的虚拟磁盘/内存盘,在进入windows之后,继续有效。试想下,如果g4e/grub2在保护模式下仿真出来的虚拟磁盘/内存盘在windows下没有驱动,肯定会7B蓝屏。之前sunsea已经说了原理了,你可以回看下他的帖子。
所以,svbus是否支持“碎片”,这个问题感觉问得不对,因为无论是直接map文件,还是map --mem文件到内存,都是由g4e/grub2这样的引导器所做的,也是g4e/grub2所要求或者初始设计的,到不了svbus这个层面,svbus只是个磁盘驱动,该磁盘驱动的作用就是让windows认识g4e/grub2虚拟磁盘/内存盘,windows下面,任何硬件都需要提供驱动,当然大部分硬件驱动windows已经涵盖了。

二、primo驱动,搭配g4e/grub2的磁盘仿真,但是其原理不同,这个组合之下,内存盘是由primo创建的,不是由g4e/grub2创建的。在UEFI环境下,g4e/grub2直接map模式仿真出一个虚拟磁盘→windows从这个虚拟磁盘启动→加载primo驱动→primo驱动把vdf直接加载到内存→完成后续windows启动流程。
g4e/grub2直接map模式似乎要求镜像文件必须连续存放,有碎片似乎不行,这是g4e/grub2引导器初始设计的,可以在引导器层面解决。
primo所申请的内存我估计不一定要求连续(这个我不确定,我可以去romex官网发个贴子问下)。

g4d最大支持32个碎片的map,grub2据wintoflash大神说多少个碎片都正常加载,但是实战来讲似乎g4e有32个以下的碎片都不行,grub2没有充分测试。因为对于最终用户来说,复制粘贴重命名的办法消除碎片,属于没什么技术含量傻瓜操作,反馈问题就需要懂得g4e/grub2那些命令了,能力不够(或者偷懒!),反馈问题都不知道该怎么反馈。


三、primo驱动不需要用map --mem模式,主要是因为需要占用启动内存,grub4dos_UEFI或者grub2_UEFI用EFI_RESERVED_MEMORY类型的map --mem –top xxx.vhd (hd0)加载vhd到内存,在windows下这个内存区域还是处于被占用的状态,这个磁盘windows无法被当做内存使用,也无法释放,因为它已经变成了一个磁盘,你看下我用svbus做的uefi-ramos的截图中,32GB内存=vhd占用6GB+Windows使用了1.6GB+剩余可用24.3GB,任务管理器中,使用中1.6GB+剩余可用24.3GB=25.9GB,根本就不等于32GB,但在正常的windows系统下,任务管理器中总内存=使用内存+剩余可用内存。内存去哪里了?windows不知道,这块区域是g4e/grub2向UEFI固件申请的内存块,然后带入windows的保护模式,被认为是“保留内存块”,如果没有svbus驱动的加持,这块内存连磁盘都不是,也不能当作内存使用,相当于白白地浪费掉了;但如果有svbus加持,那么不就变成了svbus驱动的UEFI-RAMOS了吗?svbus这样子从UEFI固件仿真底层带上来的驱动,肯定比不上windows保护模式下primo驱动的速度。我们现在不是要svbus驱动为主的驱动啊,我们要的是更好更快的primo驱动啊。

svbus-uefi-win8.1-ramos.jpg (175.54 KB, 下载次数: 114)

svbus-uefi-win8.1-ramos.jpg

点评

uefi下grub2对文件是否连续没有任何要求,只要是个grub2下能看到的文件就行。只不过一些文件没办法或者不方便随机读取(比如网络上的文件或者压缩文件),所以对于这类文件,建议直接加载到内存。 bios下理论上也  详情 回复 发表于 2020-12-23 09:36
回复

使用道具 举报

868#
发表于 2020-12-23 09:36:28 | 只看该作者
liuzhaoyzz 发表于 2020-12-23 09:07
一、svbus搭配g4e/grub2有两种模式,直接map和map --mem。
1、在直接map模式下,要求被仿真的镜像必须在 ...
在直接map模式下,要求被仿真的镜像必须在硬盘上连续存放,这是g4e/grub2引导器要求的。

uefi下grub2对文件是否连续没有任何要求,只要是个grub2下能看到的文件就行。只不过一些文件没办法或者不方便随机读取(比如网络上的文件或者压缩文件),所以对于这类文件,建议直接加载到内存。
bios下理论上也能设计出对文件连续性完全没有要求的map。比如 ventoy,对碎片数目没有要求,但是对簇大小有要求。GRUB4DOS (甚至 GRUB2) 理论上也能做到这一点,但是 BIOS 下开发的难度太大了。
svbus是否支持“碎片”,这个问题感觉问得不对,因为无论是直接map文件,还是map --mem文件到内存,都是由g4e/grub2这样的引导器所做的,也是g4e/grub2所要求或者初始设计的,到不了svbus这个层面,svbus只是个磁盘驱动,该磁盘驱动的作用就是让windows认识g4e/grub2虚拟磁盘/内存盘

注意,SVBus 挂载的虚拟磁盘,并不是由grub4dos/grub2弄出来的那个虚拟盘。svbus 是另外创建了一个虚拟磁盘。

点评

谢谢斧正!看样子我误会了  详情 回复 发表于 2020-12-23 09:44
回复

使用道具 举报

869#
 楼主| 发表于 2020-12-23 09:40:18 | 只看该作者
自动菜单不起作用

我使用你的菜单测试,没有任何问题。
你是不是简简单单的电脑直接启动G4E?

点评

电脑直接启动G4E,没有经过中转,相同的参数 --auto-num-on ,在G4D下又可以正常,UEFI下又不正常,我也不知道为什么会出现这个现象  详情 回复 发表于 2020-12-23 19:23
回复

使用道具 举报

870#
发表于 2020-12-23 09:44:35 | 只看该作者
wintoflash 发表于 2020-12-23 09:36
uefi下grub2对文件是否连续没有任何要求,只要是个grub2下能看到的文件就行。只不过一些文件没办法或者 ...

谢谢斧正!看样子我误会了
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-5-22 14:59

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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