无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
楼主: 2011yaya2007777
打印 上一主题 下一主题

[原创] GRUB4DOS for UEFI

    [复制链接]
301#
发表于 2020-11-9 10:25:48 | 只看该作者
sunsea 发表于 2020-11-9 09:41
可还行……那为什么不统一H255S63然后内部转成线性地址呢……还是有老的/不规范固件给不出正确结果还是咋 ...

U盘(USB存储设备)内部都是转成LBA访问。
就目前知道的情况,磁盘类设备有很多种(FDD、ZIP、HDD),HS不会一样的...
而新版UEFI又新增了usb key这种(由于没有对应版本的代码可看,所以不了解它是怎么个算法)
回复

使用道具 举报

302#
 楼主| 发表于 2020-11-9 10:42:48 | 只看该作者
可以测试 SVBus 了。

BOOTX64.rar

134.3 KB, 下载次数: 63, 下载积分: 无忧币 -2

点评

2020-11-09版的G4D,经测试: 1、已解决了多光驱(量产或实体)干扰条件下,MAP 磁盘上的(win10 PE)ISO,正确启动问题。 2、以G4D为光盘引导程序,为PE ISO加壳,形成新ISO(即ISO嵌套)测试成功。 ============  详情 回复 发表于 2020-11-10 07:06
加载菜单死机了。虚拟机和实机结果一样。 不知道是不是只有我有这个问题。。。  详情 回复 发表于 2020-11-9 16:41
请问这个是怎么处理映射信息传递的?拷贝进前640KB还是放置UEFI变量?需要我做什么吗  详情 回复 发表于 2020-11-9 11:08
回复

使用道具 举报

303#
发表于 2020-11-9 11:08:52 来自手机 | 只看该作者
2011yaya2007777 发表于 2020-11-9 10:42
可以测试 SVBus 了。

请问这个是怎么处理映射信息传递的?拷贝进前640KB还是放置UEFI变量?需要我做什么吗
回复

使用道具 举报

304#
发表于 2020-11-9 11:26:08 | 只看该作者
本帖最后由 liuzhaoyzz 于 2020-11-10 08:09 编辑
sunsea 发表于 2020-11-9 11:08
请问这个是怎么处理映射信息传递的?拷贝进前640KB还是放置UEFI变量?需要我做什么吗

        刚才试了下305楼的bootx64.efi文件,2020年11月9日的。
1、这个解决了有多个光驱的时候启动的问题。
2、有个新问题是,能够启动某些PE.ISO,比如微PE、立帮电子的PE,但是无法启动我用wimbuilder2制作出来的PE,直接上图。20201029版本没有这个问题。
https://cloud.189.cn/t/FjyAZfmmeuEf

启动菜单:

title /boot/imgs/SXWIN10PEX64_17763_NET20201106.iso
find --set-root /boot/imgs/SXWIN10PEX64_17763_NET20201106.iso
map --mem /boot/imgs/SXWIN10PEX64_17763_NET20201106.iso (0xff)
chainloader (0xff)

这个pe.iso应该是用oscdimg.exe制作的,参数大概如下:
oscdimg.exe -b"%ISO_DIR%\boot\etfsboot.com" -h -l"%WB_ISO_LABEL%" -m -u2 -udfver102 "%ISO_DIR%" "%Factory%\%WB_ISO_NAME%.iso"



GPT-TEST-2020-11-09-11-12-11.png (2.73 KB, 下载次数: 248)

GPT-TEST-2020-11-09-11-12-11.png

GPT-TEST-2020-11-09-11-15-48.png (10.48 KB, 下载次数: 244)

GPT-TEST-2020-11-09-11-15-48.png
回复

使用道具 举报

305#
 楼主| 发表于 2020-11-9 12:06:42 来自手机 | 只看该作者
拷贝进前640KB,直接测试就行了。

点评

这个方案不错,劳动量变得更小了hhhh,但是问题来了,会不会有CSM或者其他一些申必情况导致这个方案出现问题?不过也可以收到报告再说吧……  详情 回复 发表于 2020-11-9 16:25
回复

使用道具 举报

306#
 楼主| 发表于 2020-11-9 12:14:15 来自手机 | 只看该作者
L大,你忘了执行 chainloader (0xff)。

点评

哦,截图里面的确少输入了一个chainloader (0xff),但是菜单里面是不缺少这个的,启动最后截图就是307楼的那个截图。  详情 回复 发表于 2020-11-9 14:00
回复

使用道具 举报

307#
发表于 2020-11-9 12:17:55 来自手机 | 只看该作者
你的ISO没有efi支持的img引导文件。307楼。
回复

使用道具 举报

308#
 楼主| 发表于 2020-11-9 12:29:03 来自手机 | 只看该作者
前几天有人问,支持参数传递不。efi文件支持传递参数。我希望使用ipxe启动本文件时,把调用接口传递过来,这样grub4dos就有可能使用ipxe了。
回复

使用道具 举报

309#
发表于 2020-11-9 13:39:23 | 只看该作者

辛苦楼主了
回复

使用道具 举报

310#
发表于 2020-11-9 14:00:02 | 只看该作者
本帖最后由 liuzhaoyzz 于 2020-11-9 14:06 编辑
2011yaya2007777 发表于 2020-11-9 12:14
L大,你忘了执行 chainloader (0xff)。

哦,截图里面的确少输入了一个chainloader (0xff),但是菜单里面是不缺少这个的,启动最后截图就是307楼的那个截图。截图里面,map完了之后就抛出了个错误:IError: invalid boot indicator(0x20) for entry 0.



回复

使用道具 举报

311#
发表于 2020-11-9 14:01:30 | 只看该作者
本帖最后由 liuzhaoyzz 于 2020-11-9 14:08 编辑
窄口牛 发表于 2020-11-9 12:17
你的ISO没有efi支持的img引导文件。307楼。

        什么是efi支持的img引导文件?文件名是什么?
回复

使用道具 举报

312#
发表于 2020-11-9 14:16:48 来自手机 | 只看该作者
你这个命令打包的ISO能从efi启动?

点评

@窄口牛,@2011yaya2007777,检查了下,果然是efi启动文件不全,启动没问题了。我正在上传。  详情 回复 发表于 2020-11-9 14:53
回复

使用道具 举报

313#
 楼主| 发表于 2020-11-9 14:35:12 | 只看该作者
https://cloud.189.cn/t/FjyAZfmmeuEf

打不开,麻烦上传个壳。
回复

使用道具 举报

314#
发表于 2020-11-9 14:53:10 | 只看该作者
窄口牛 发表于 2020-11-9 14:16
你这个命令打包的ISO能从efi启动?

        @窄口牛,@2011yaya2007777,检查了下,果然是efi启动文件不全,启动没问题了。我正在上传。
回复

使用道具 举报

315#
 楼主| 发表于 2020-11-9 14:54:52 | 只看该作者
能启动就好。文件不用上传了。
回复

使用道具 举报

316#
发表于 2020-11-9 15:10:53 | 只看该作者
本帖最后由 chenall 于 2020-11-9 15:15 编辑
2011yaya2007777 发表于 2020-11-7 11:05
之所以没有尽快上传代码,一是还有些已知遗留问题需要处理,还要清除众多的内部调试代码。二是不知道怎么 ...



确实因为工作还有家庭的原因,没有足够的精力,基本上我每个星期都会上无优看一下,了解一下最新的一些技术或资讯。

在力所能及的情况下,我很乐意提供一些帮助。

可以把代码打包传给我或上传到某个地方,我拉个新的分支,上传第一个版本。

后续的操作就比较简单了,就是和原来的操作一样。

有空再为新的版本添加自动编译等。
当然了如果有其它人愿意接手,那是最好的了^_^。

回复

使用道具 举报

317#
 楼主| 发表于 2020-11-9 15:45:31 | 只看该作者
可以把代码打包传给我或上传到某个地方,我拉个新的分支,上传第一个版本。

谢谢C大!我尽快整理完毕,打包上传到这里。
回复

使用道具 举报

318#
发表于 2020-11-9 16:13:42 | 只看该作者
本帖最后由 xianglang 于 2020-11-9 16:14 编辑

今天又试了无数次,证实是支持 LZMA 压缩格式的;另外,也与按 F11 选择启动方式无关。另外,微 PE 等 ISO 可以正常 map --mem 使用。不过今天多次尝试,发现以下问题:

1、如果菜单文件在菜单项前有 SLIC 命令在话,铁定花屏,其他按键好像皆无效,但是可以三键重启。

2、背景图与设定屏幕分辨率不同(如我的背景图是800*600,但是设定屏幕分辨率为1024*768),会花屏,字体显示残缺不全,不能看出是什么字,键盘操作正常。

3、在命令行输入引导 Windows 的 bootmgfw.efi 会回到 GRUB> 提示符状态,在菜单中会提过任意键返回菜单;但是插入一个只有分区而没 MBR 的 4GB 传统和 EFI 双启 U 盘,则可以顺利进入 U 盘里的 BCD 菜单启动 Windows 系统。

4、同样是那个 4GB 的 U 盘,使用 G4D 的 BOOTX64.EFI 文件代替原来 Windows 的,则会黑屏,长时间没任何反应,但是可以三键重启——Windows 的 BOOTX64.EFI 是可以正常启动的。

5、G4D UEFI 搜索菜单文件的顺序是同一启动分区下的 /BOOT/GRUB、/GRUB 和根目录。

汗……刚才打好字刚想按回复主题,结果误触触摸板,全部消失了,只能再输入一次。


点评

我猜测是不是一些命令不能在uefi下面运行,导致没反应死机了。。。 建议uefi版本尽量兼容以前的菜单命令,如果该命令不能运行,应该直接退出。。。 如果不能实现兼容以前的命令,建议uefi版本默认还是用新的启动  详情 回复 发表于 2020-11-9 17:01
回复

使用道具 举报

319#
发表于 2020-11-9 16:25:16 | 只看该作者
2011yaya2007777 发表于 2020-11-9 12:06
拷贝进前640KB,直接测试就行了。

这个方案不错,劳动量变得更小了hhhh,但是问题来了,会不会有CSM或者其他一些申必情况导致这个方案出现问题?不过也可以收到报告再说吧……
回复

使用道具 举报

320#
 楼主| 发表于 2020-11-9 16:29:15 | 只看该作者
本帖最后由 2011yaya2007777 于 2020-11-9 16:30 编辑
如果菜单文件在菜单项前有 SLIC 命令在话,铁定花屏

SLIC 命令是什么?
背景图与设定屏幕分辨率不同

背景图应当与屏幕分辨率相同,要么就不要背景图,不要设置菜单尺寸,这样适用于任何分辨率。

3,4项不清楚。
5项不用纠结,下一发布版本菜单放在 /EFI/BOOT/menu.lst

点评

SLIC 是 G4D 下一个外部命令文件,模拟品牌机 OEM 激活 Windows 用的。  详情 回复 发表于 2020-11-9 16:52
回复

使用道具 举报

321#
发表于 2020-11-9 16:41:46 | 只看该作者
本帖最后由 cchessbd 于 2020-11-9 16:51 编辑

加载菜单死机了。虚拟机和实机结果一样。但是删除menu.lst,或者把menu.lst改名为menu1.lst 都能进入命令行。
不知道是不是只有我有这个问题。。。

而且不能加载 .mod文件,显示 unvalid support ... (记不全了)。上传我使用用到的文件。
实际上我想加载 menu_bios_utf8.lst这个文件(bios启动时是集成到了grldr)。但是没反应,我以为是其中的命令有影响。所以把认为有影响的命令去掉了。

是不是菜单下面命令还有影响?如果要改成兼容模式需要怎么处理?


新建截图-20201109162647.jpg (22.42 KB, 下载次数: 159)

新建截图-20201109162647.jpg

IMG_20201109_162950.jpg (1.08 MB, 下载次数: 166)

IMG_20201109_162950.jpg

GRUB.rar

998.48 KB, 下载次数: 36, 下载积分: 无忧币 -2

回复

使用道具 举报

322#
 楼主| 发表于 2020-11-9 16:44:32 | 只看该作者
本帖最后由 2011yaya2007777 于 2020-11-9 16:52 编辑
这个方案不错,劳动量变得更小了

如果使用菜单变量,那后续工作就可能与 SVBus 无关了。

点评

菜单变量是啥啊……  详情 回复 发表于 2020-11-9 16:57
回复

使用道具 举报

323#
发表于 2020-11-9 16:52:26 | 只看该作者
2011yaya2007777 发表于 2020-11-9 16:29
SLIC 命令是什么?

背景图应当与屏幕分辨率相同,要么就不要背景图,不要设置菜单尺寸,这样适用于任 ...

SLIC 是 G4D 下一个外部命令文件,模拟品牌机 OEM 激活 Windows 用的。

点评

能否把slic命令文件跟常用xxx.bin打个包共享一下,好久没用grub4dos整win7了,找找感觉。  详情 回复 发表于 2020-11-9 19:46
回复

使用道具 举报

324#
发表于 2020-11-9 16:57:14 | 只看该作者
2011yaya2007777 发表于 2020-11-9 16:44
如果使用菜单变量,那后续工作就可能与 SVBus 无关了。

菜单变量是啥啊……

点评

svbus 名称的内含 :系统虚拟总线 猜测楼主的意思是:你可以在640KB搜出好几个 map出的 虚拟设备 至于 svbus 选用哪个(当然最好是最后一个),或者全挂上。 g4e会boot最后一个 ,而不  详情 回复 发表于 2020-11-9 17:47
回复

使用道具 举报

325#
 楼主| 发表于 2020-11-9 16:59:30 | 只看该作者
SLIC 是 G4D 下一个外部命令文件

外部命令可能需要修改,不是实模式,找不到命令、变量入口了。
回复

使用道具 举报

326#
发表于 2020-11-9 17:01:51 | 只看该作者
本帖最后由 cchessbd 于 2020-11-9 17:10 编辑
xianglang 发表于 2020-11-9 16:13
今天又试了无数次,证实是支持 LZMA 压缩格式的;另外,也与按 F11 选择启动方式无关。另外,微 PE 等 ISO  ...

我猜测是不是一些命令不能在uefi下面运行,导致没反应死机了。。。

建议uefi版本尽量兼容以前的菜单命令,如果该命令不能运行,应该直接退出。。。
如果不能实现兼容以前的命令,建议uefi版本默认还是用新的启动菜单文件吧。同时应该列出不兼容的命令以便编写菜单文件。
如果简单一点,遇到调用该命令出错,或者外部命令出错,直接下一步命令。

回复

使用道具 举报

327#
 楼主| 发表于 2020-11-9 17:04:45 | 只看该作者
加载菜单死机了。虚拟机和实机结果一样

在UEFI环境测试BIOS的东西!
启动EFI文件或者硬盘、光盘。

点评

虚拟机和实机都是uefi启动。请看截图,grub for uefi。  详情 回复 发表于 2020-11-9 17:11
回复

使用道具 举报

328#
发表于 2020-11-9 17:11:17 | 只看该作者
本帖最后由 cchessbd 于 2020-11-9 17:38 编辑
2011yaya2007777 发表于 2020-11-9 17:04
在UEFI环境测试BIOS的东西!
启动EFI文件或者硬盘、光盘。

虚拟机和实机都是uefi启动。请看截图,grub for uefi。
实际上加载menu1.lst或者menu_bios_utf8.lst菜单文件,uefi版本就死机了,不知道我有没有说清楚问题。
menu1.lst 是menu_bios_utf8.lst的去掉几个我认为不支持的命令(认为可能导致死机)
menu0.lst是grldr自带的文件,这个加载不死机,出现了命令行。进入命令行后,执行 insmod /boot/grub/all.mod,出现一个错误提示。并没有加载该文件。

实际上menu_bios_utf8.lst  bios启动并无问题。

其实我的意思就是uefi版本能不能兼容以前的菜单文件。如果不兼容什么命令,这个开发者能不能作出声明。
顺便贴上我的menu_bios_utf8.lst  菜单文件吧

#password --md5 $1$qM1n/$b7DVx3WMmvrcVq8UTI9sn1
pxe detect
debug off
timeout 4
checkrange 0x80 read 0x8280 || timeout 8
default 0
cat --length=0 /boot/grub/all.mod || find --set-root /boot/grub/all.mod
cat --length=0 /boot/default && default /boot/default
insmod /boot/grub/all.mod && bpri
font /boot/grub/UNIFONT.HEX
terminal --font-spacing=0:6
graphicsmode -1 640 480 24:32 || graphicsmode 3
menuset m 48 8 0
color white/black white/black light-red/black 0
bgac /boot/grub/bg

title   Windows 硬盘系统\n\n备份恢复:F4=IMAGE F5=GHOST    F9-F10:PE维护\n启动分区:C_F1-F4=第x主分区    C_F9  :最后分区
cat --length=0 /boot/default && savedefault
find --set-root --devices=h makeactive --status || rootnoverify (hd0,0)
checkrange 0x17,0x1c,0x1b parttype && unhide
rootnoverify
chainloader /gr1dr || chainloader /bootmgr || chainloader /ntldr || chainloader +1
boot

iftitle [ if exist (bd)/boot/iso/win10pe_18363x64全能网络版pe.iso ]   启动 Win10PE_18363x64全能网络版\n\n
fallback 0
run /boot/iso/win10pe_18363x64全能网络版pe.iso
boot

iftitle [ if exist (bd)/boot/iso/我心如水_2003_pe_v19.36_珍藏版.iso ]   启动 我心如水_2003_PE_v19.36_珍藏版\n\n
fallback 0
run /boot/iso/我心如水_2003_pe_v19.36_珍藏版.iso
boot

iftitle [ if exist (bd)/boot/iso ]   进入 (bd)/boot/iso手动选择\n\n
fallback 0
run (bd)/boot/iso/
boot

iftitle [ if exist (bd)/boot/veket/vmlinuz ]   启动 VEKET 系统\n\n
fallback 0
cat --length=0 /boot/default && savedefault
kernel /boot/veket/vmlinuz pmedia=cd
initrd /boot/veket/initrd.gz
boot

iftitle [ if exist (bd)/boot/ipxe.krn ]   启动 IPXE\n\n
fallback 0
cat --length=0 /boot/default && savedefault
kernel /boot/ipxe.krn
boot

点评

再贴上简化的menu1.lst,我其实不知道为什么不出来菜单,而是死机。。。 #password --md5 $1$qM1n/$b7DVx3WMmvrcVq8UTI9sn1 debug on timeout 4 default 0 cat --length=0 /boot/grub/all.mod || find --set-  详情 回复 发表于 2020-11-9 17:43
回复

使用道具 举报

329#
发表于 2020-11-9 17:43:07 | 只看该作者
cchessbd 发表于 2020-11-9 17:11
虚拟机和实机都是uefi启动。请看截图,grub for uefi。
实际上加载menu1.lst或者menu_bios_utf8.lst菜单 ...

再贴上简化的menu1.lst,我其实不知道为什么不出来菜单,而是死机。。。

#password --md5 $1$qM1n/$b7DVx3WMmvrcVq8UTI9sn1
debug on
timeout 4
default 0
cat --length=0 /boot/grub/all.mod || find --set-root /boot/grub/all.mod
cat --length=0 /boot/default && default /boot/default
font /boot/grub/UNIFONT.HEX
graphicsmode -1 800 640 24:32 || graphicsmode -1 600 480 24:32 || graphicsmode 3
color white/black white/black light-red/black 0

title   Windows 硬盘系统\n\n备份恢复:F4=IMAGE F5=GHOST    F9-F10:PE维护\n启动分区:C_F1-F4=第x主分区    C_F9  :最后分区
cat --length=0 /boot/default && savedefault
find --set-root --devices=h makeactive --status || rootnoverify (hd0,0)
checkrange 0x17,0x1c,0x1b parttype && unhide
rootnoverify
chainloader /gr1dr || chainloader /bootmgr || chainloader /ntldr || chainloader +1
boot

iftitle [ if exist (bd)/boot/iso/win10pe_18363x64全能网络版pe.iso ]   启动 Win10PE_18363x64全能网络版\n\n
fallback 0
run /boot/iso/win10pe_18363x64全能网络版pe.iso
boot

iftitle [ if exist (bd)/boot/iso/我心如水_2003_pe_v19.36_珍藏版.iso ]   启动 我心如水_2003_PE_v19.36_珍藏版\n\n
fallback 0
run /boot/iso/我心如水_2003_pe_v19.36_珍藏版.iso
boot

iftitle [ if exist (bd)/boot/iso ]   进入 (bd)/boot/iso手动选择\n\n
fallback 0
run (bd)/boot/iso/
boot

iftitle [ if exist (bd)/boot/veket/vmlinuz ]   启动 VEKET 系统\n\n
fallback 0
cat --length=0 /boot/default && savedefault
kernel /boot/veket/vmlinuz pmedia=cd
initrd /boot/veket/initrd.gz
boot

iftitle [ if exist (bd)/boot/ipxe.krn ]   启动 IPXE\n\n
fallback 0
cat --length=0 /boot/default && savedefault
kernel /boot/ipxe.krn
boot
回复

使用道具 举报

330#
发表于 2020-11-9 17:47:31 | 只看该作者
本帖最后由 2011whp 于 2020-11-9 17:56 编辑
sunsea 发表于 2020-11-9 16:57
菜单变量是啥啊……

svbus 名称的内含 :系统虚拟总线

猜测楼主的意思是:你可以在640KB搜出好几个 map出的 虚拟设备
            至于 svbus 选用哪个(当然最好是最后一个),或者全挂上。
            g4e会boot最后一个 ,而不会出现菜单,让用户选择用哪个虚拟设备
            总线  虚拟设备(640k内的)由svbus决定用哪个(最后一个一定挂上,因为一般是外挂式PE iso, 或 win安装盘  或RAMos)

g4e只管虚拟,并引导最后一个,不管系统内怎么用,界面划分清楚。(最好单独发布出 svbus,让引导器,注入 boot.wim    其实就是像ventoy)
           
            
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-11-25 17:13

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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