无忧启动论坛

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

[原创] GRUB4DOS for UEFI

    [复制链接]
871#
发表于 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 做成外部命令比较合适。
回复

使用道具 举报

872#
发表于 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
...

我不懂怎么使用
回复

使用道具 举报

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

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

使用道具 举报

874#
发表于 2020-12-19 22:33:47 | 只看该作者
wintoflash 发表于 2020-12-19 21:09
提取里面的g4e_wb,在grub4dos下运行它,看看有什么反应。
title g4e_wb
g4e_wb abcdef

卡停,实体机与qemu一样。



回复

使用道具 举报

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

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

使用道具 举报

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

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

使用道具 举报

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

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

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



g4e_wb.txt

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

回复

使用道具 举报

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

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

使用道具 举报

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

使用道具 举报

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

使用道具 举报

881#
发表于 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启动吗?
回复

使用道具 举报

882#
发表于 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
看下这个
回复

使用道具 举报

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

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

使用道具 举报

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

使用道具 举报

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

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

使用道具 举报

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

上传一个

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

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

评分

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

查看全部评分

回复

使用道具 举报

887#
发表于 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!




回复

使用道具 举报

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

使用道具 举报

889#
发表于 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好像是直接返回主菜单了。
回复

使用道具 举报

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

使用道具 举报

891#
发表于 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官网发个帖子问下,我不是很确定。

回复

使用道具 举报

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

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

使用道具 举报

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

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

使用道具 举报

894#
发表于 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, 下载次数: 106)

QQ222.jpg
回复

使用道具 举报

895#
发表于 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, 下载次数: 115)

svbus-uefi-win8.1-ramos.jpg
回复

使用道具 举报

896#
发表于 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 是另外创建了一个虚拟磁盘。
回复

使用道具 举报

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

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

使用道具 举报

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

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

使用道具 举报

899#
 楼主| 发表于 2020-12-23 10:16:44 | 只看该作者
好的。一直在等待。喜欢g4d的轻量高效。

修改了 G4E 外部命令模板,再测试一下。我这里正常。要使用里边那个 BOOTX64.EFI,是配套的。
另外我想了解一下,以前测试,是不是启动了 GRUB2,然后由 GRUB2 启动的 G4E?

g4e_wb-2020-12-23.rar

145.31 KB, 下载次数: 45, 下载积分: 无忧币 -2

点评

我测试g4e_wb 是使用 g4e_wb-2020-12-23.rar 中的bootx64.efi 和 g4e_wb ,bootx64.efi放在U盘作为主引导,qemu和实体机都依然是死机,但这次qemu不再出现错误弹窗。 [attachimg]471348[/attachimg] [attachimg]  详情 回复 发表于 2020-12-23 13:45
我是这样的。 分别测试了3种情况,都是虚拟机报错。 (1) grub2->grub4dos [attachimg]471338[/attachimg] (2) uefi shell->grub4dos [attachimg]471339[/attachimg] (3) 直接固件设置页面启动 grub4dos [  详情 回复 发表于 2020-12-23 10:49
romex官网已经回复了,primo申请的内存没有连续性要求。他的回复不是很详细,我理解应该是内存不要求连续,可用即可。  详情 回复 发表于 2020-12-23 10:39
回复

使用道具 举报

900#
发表于 2020-12-23 10:25:56 | 只看该作者
给力,支持,很需要这个
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-6-18 05:33

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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