wuwuzz 发表于 2020-11-9 10:25:48

sunsea 发表于 2020-11-9 09:41
可还行……那为什么不统一H255S63然后内部转成线性地址呢……还是有老的/不规范固件给不出正确结果还是咋 ...

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

2011yaya2007777 发表于 2020-11-9 10:42:48

可以测试 SVBus 了。

sunsea 发表于 2020-11-9 11:08:52

2011yaya2007777 发表于 2020-11-9 10:42
可以测试 SVBus 了。

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

liuzhaoyzz 发表于 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"



2011yaya2007777 发表于 2020-11-9 12:06:42

拷贝进前640KB,直接测试就行了。

2011yaya2007777 发表于 2020-11-9 12:14:15

L大,你忘了执行 chainloader (0xff)。

窄口牛 发表于 2020-11-9 12:17:55

你的ISO没有efi支持的img引导文件。307楼。

2011yaya2007777 发表于 2020-11-9 12:29:03

前几天有人问,支持参数传递不。efi文件支持传递参数。我希望使用ipxe启动本文件时,把调用接口传递过来,这样grub4dos就有可能使用ipxe了。

cbl 发表于 2020-11-9 13:39:23


辛苦楼主了

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



liuzhaoyzz 发表于 2020-11-9 14:01:30

本帖最后由 liuzhaoyzz 于 2020-11-9 14:08 编辑

窄口牛 发表于 2020-11-9 12:17
你的ISO没有efi支持的img引导文件。307楼。
      什么是efi支持的img引导文件?文件名是什么?

窄口牛 发表于 2020-11-9 14:16:48

你这个命令打包的ISO能从efi启动?

2011yaya2007777 发表于 2020-11-9 14:35:12

https://cloud.189.cn/t/FjyAZfmmeuEf
打不开,麻烦上传个壳。

liuzhaoyzz 发表于 2020-11-9 14:53:10

窄口牛 发表于 2020-11-9 14:16
你这个命令打包的ISO能从efi启动?

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

2011yaya2007777 发表于 2020-11-9 14:54:52

能启动就好。文件不用上传了。

chenall 发表于 2020-11-9 15:10:53

本帖最后由 chenall 于 2020-11-9 15:15 编辑

2011yaya2007777 发表于 2020-11-7 11:05
之所以没有尽快上传代码,一是还有些已知遗留问题需要处理,还要清除众多的内部调试代码。二是不知道怎么 ...
{:1_185:}{:1_185:}

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

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

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

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

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

2011yaya2007777 发表于 2020-11-9 15:45:31

可以把代码打包传给我或上传到某个地方,我拉个新的分支,上传第一个版本。
谢谢C大!我尽快整理完毕,打包上传到这里。

xianglang 发表于 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 和根目录。

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


sunsea 发表于 2020-11-9 16:25:16

2011yaya2007777 发表于 2020-11-9 12:06
拷贝进前640KB,直接测试就行了。

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

2011yaya2007777 发表于 2020-11-9 16:29:15

本帖最后由 2011yaya2007777 于 2020-11-9 16:30 编辑

如果菜单文件在菜单项前有 SLIC 命令在话,铁定花屏
SLIC 命令是什么?
背景图与设定屏幕分辨率不同
背景图应当与屏幕分辨率相同,要么就不要背景图,不要设置菜单尺寸,这样适用于任何分辨率。

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

cchessbd 发表于 2020-11-9 16:41:46

本帖最后由 cchessbd 于 2020-11-9 16:51 编辑

2011yaya2007777 发表于 2020-11-9 10:42
可以测试 SVBus 了。
加载菜单死机了。虚拟机和实机结果一样。但是删除menu.lst,或者把menu.lst改名为menu1.lst 都能进入命令行。
不知道是不是只有我有这个问题。。。

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

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


2011yaya2007777 发表于 2020-11-9 16:44:32

本帖最后由 2011yaya2007777 于 2020-11-9 16:52 编辑

这个方案不错,劳动量变得更小了
如果使用菜单变量,那后续工作就可能与 SVBus 无关了。

xianglang 发表于 2020-11-9 16:52:26

2011yaya2007777 发表于 2020-11-9 16:29
SLIC 命令是什么?

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

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

sunsea 发表于 2020-11-9 16:57:14

2011yaya2007777 发表于 2020-11-9 16:44
如果使用菜单变量,那后续工作就可能与 SVBus 无关了。

菜单变量是啥啊……

2011yaya2007777 发表于 2020-11-9 16:59:30

SLIC 是 G4D 下一个外部命令文件
外部命令可能需要修改,不是实模式,找不到命令、变量入口了。

cchessbd 发表于 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版本默认还是用新的启动菜单文件吧。同时应该列出不兼容的命令以便编写菜单文件。
如果简单一点,遇到调用该命令出错,或者外部命令出错,直接下一步命令。

2011yaya2007777 发表于 2020-11-9 17:04:45

加载菜单死机了。虚拟机和实机结果一样
在UEFI环境测试BIOS的东西!
启动EFI文件或者硬盘、光盘。

cchessbd 发表于 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.lstbios启动并无问题。

其实我的意思就是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

cchessbd 发表于 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

2011whp 发表于 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)
         
            
页: 1 2 3 4 5 6 7 8 9 10 [11] 12 13 14 15 16 17 18 19 20
查看完整版本: GRUB4DOS for UEFI