无忧启动论坛

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

可以把g4d和g4e合并吗?做成通用的,大大们可以吗?

[复制链接]
跳转到指定楼层
1#
发表于 2022-2-28 16:35:57 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
合在一起,加入自动判断bois 或efi 32  efi 64执行相应的g4d 或g4e  或g4e32, 这样是不是方便一些,就不知道难度大不大,问问大大们有可能吧?!
2#
发表于 2022-2-28 16:53:39 | 只看该作者
0
回复

使用道具 举报

3#
发表于 2022-2-28 16:56:57 | 只看该作者
本帖最后由 liuzhaoyzz 于 2022-2-28 20:20 编辑

启动原理不同,你所说的判断,只是为了调用不同的菜单而已,这样子会增加菜单的复杂度。现在的方案挺好的,因为BIOS/UEFI本来就是关联性不大的东西,选择了一种启动模式,就只有用这一种。

评分

参与人数 2无忧币 +10 收起 理由
蓝星明月 + 5 赞一个!
879792799 + 5 很给力!

查看全部评分

回复

使用道具 举报

4#
发表于 2022-2-28 18:48:12 | 只看该作者
应该可以。
grub2 就是自动判断 BIOS和EFI。

评分

参与人数 1无忧币 +5 收起 理由
879792799 + 5 谢谢大大指点!

查看全部评分

回复

使用道具 举报

5#
发表于 2022-2-28 19:41:58 | 只看该作者
自适应的 引导程序没见过,从bios 分道了(bios启动菜单 一选择 定型了 )

clover 好像是能 启动两种(但 启动clover 本身,只能 二择一)
————————————————————
自适应菜单 有
title 启动windows
!BAT
if  "%@uefi%"=="64"
{
chainloader  /efi/boot/bootx64.efi
boot
}
if  "%@uefi%"==""
{
chainloader  /bootmgr
boot
}

评分

参与人数 1无忧币 +5 收起 理由
879792799 + 5 很给力!

查看全部评分

回复

使用道具 举报

6#
发表于 2022-3-1 09:04:57 | 只看该作者
关注这个问题,可以 吗?

点评

谢谢关注!  发表于 2022-3-1 18:09
回复

使用道具 举报

7#
发表于 2023-10-21 03:52:17 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

8#
发表于 2023-10-21 07:49:42 | 只看该作者
什么叫 “合并”?具体含义是啥?

BIOS 和 EFI 的启动方式完全不同,但互不冲突。所以,两种启动代码可以同时存在,或者说,可以共存。那么,这 “共存” 之后,算不算是 “合并” 了?

“合并” 是咋定义的?是让 bios 与 efi 的启动代码、主程序也合并?或者是让菜单文件 “共用” 一个?

新型主板已经去除了 bios,只有 EFI 了。合并,即使有可能,也没多大意义了吧?

点评

就是大佬说的共存,呵呵  发表于 2024-11-9 11:49
回复

使用道具 举报

9#
发表于 2023-10-21 11:28:50 | 只看该作者
1、新型主板已经去除了 bios,只有 EFI 了。合并,即使有可能,也没多大意义了吧?
2、UEFI使用的是MZ PE文件格式,跟BIOS的直接开头就是代码完全不同。所以也不可能合并,会加载失败。
回复

使用道具 举报

10#
发表于 2024-11-7 23:12:21 | 只看该作者
赞赞
回复

使用道具 举报

11#
发表于 7 天前 | 只看该作者
本帖最后由 mygamexxx 于 2024-11-15 08:29 编辑

重复发了
不知道G4E如何修改内置菜单,想改一下menu.lst的find顺序?
回复

使用道具 举报

12#
发表于 7 天前 | 只看该作者
本帖最后由 mygamexxx 于 2024-11-15 08:56 编辑

我现在在用的菜单是G4D与G4E同一个菜单,不过里面发现不少问题,主要原因是命令有些不一致。需要修改G4D的grldr的内置菜单,find并configfile与G4E的同一个menu.lst。

#显示模式,要放在最前,运行graphicsmode显示支持的模式
graphicsmode -1 800

##判断启动方式
if %@uefi%==64 set bt=EFI_x%@uefi%
if %@uefi%==32 set bt=EFI_x%@uefi%
if %@uefi%#==# set bt=BIOS

setmenu --hotkey-color=0xffff00
#G4D热键设置,排除e热键,在字库加载后运行,会出错error:not enough space!
if %bt%==BIOS /boot/ext/hotkey -A [F4] commandline && /boot/ext/hotkey -A [F3] reboot && /boot/ext/hotkey [e]
#G4E热键设置
if %bt%==EFI_x64 /efi/ext/hotkey -A [F4] commandline && /efi/ext/hotkey -A [F3] reboot

#加载透明背景的图像    splashimage [--offset=[type]=[x]=[y]] FILE
splashimage /boot/background.jpg

# 读0x1800820判断是否加载了字库,只能用于G4D,G4E下0x1800820总是读取成功。
if %bt%==BIOS read 0x1800820 || font --font-high=22 /boot/hk22.hex
if %bt%==EFI_x64 font --font-high=22 /boot/hk22.hex
if %bt%==EFI_x64 load -n /EFI/grub/CrScreenshotDxe.efi

##颜色  菜单文字       选择高亮          帮助信息          版本信息         边框
color normal=0x0F highlight=0x0A helptext=0x05 heading=02 border=01

#菜单自动编号
setmenu --auto-num-on

##--box x=[x] y=[y] w=[w] h=[h] l=[l] 菜单项标题起始列,起始行,每行最大字符数,最大菜单项数,菜单框线条宽度(像素);
setmenu --box x=9 w=0 y=8 h=10 l=10    --ver-on

##--lang=en --lang=zh 菜单帮助信息中英文切换。默认英文;
setmenu --lang=zh  --timeout=8=6=0xff00

##--help=[x]=[w]=[y] 帮助位置。单位:列,行;    注:x=0 由边框确定(默认);w=0 水平居中;
setmenu --help=8=0=19

##--keyhelp=[y_offset]=[color] 按键帮助位置,颜色。单位:列,行,24位色彩;
setmenu --keyhelp=2=0x222222

##计算物理硬盘数,识别分区类型
##用于BISO启动(EFI启动不行)的硬盘数,0x475的低2字节保存的是物理硬盘数,所以要去掉高2字节
#set /a hdn=*0x475&0xff
##用于EFI启动(BIOS启动也行)的硬盘数
geometry (hd-1) | set hdn=   
set /a hdn=%hdn:~9,1%+1
set pt=MBR
find checkrange 0xEE parttype && set pt=GPT

setmenu --string=9=3=0xffff00="%@date%==存在%pt%类型的硬盘!!!==小楼一夜听春雨=="
setmenu --string=9=5=0xff00ff="硬盘数量:%hdn%,启动分区:%@root%,启动方式:%bt%"

###################################菜单开始###################
find --set-root /windows | set win=
uuid ()
find --set-root /boot/ext/SISO
if %bt%==EFI_x64 set mn1="find --set-root /EFI/ext/ntload/ntloader && kernel /EFI/ext/ntload/ntloader uuid=%?_UUID% && initrd /EFI/ext/ntload/initrd.lz1"
if %bt%==BIOS set mn1="find --set-root /boot/ext/SISO && /boot/ext/SISO NTBOOT NT6=%win%"
if %bt%==EFI_x64 set mn2="chainloader /EFI/microsoft/boot/bootmgfw.efi"
if %bt%==BIOS set mn2="chainloader /boot/bootmgr"
uuid ()
if %bt%==EFI_x64 set mn3="find --ignore-floppies --ignore-cd --set-root /efi/ext/ntload/ntloader && kernel /EFI/ext/ntload/ntloader uuid=%?_UUID% file=/0pe/10pe.wim && initrd /EFI/ext/ntload/initrd.lz1"
if %bt%==BIOS set mn3="find --set-root /boot/ext/SISO && /boot/ext/SISO BOOT.WIM=0pe/10PE.WIM"
if %bt%==EFI_x64 set mn4="command --set-path=/efi/ext/ && command /efi/ext/RUN --mem --top --set-showsize=0 --automenu show.iso.wim /imgs/"
if %bt%==BIOS set mn4="find --set-root /boot/ext/SISO && /boot/ext/SISO RUN=--loadfont --automenu show.iso.wim /imgs/"

default 0
timeout 6

title 快速启动 WINDOWS\n快速启动硬盘上的系统
%mn1:~1,-1%
boot

title 用BCD启动 WINDOWS\n用BCD启动硬盘上的系统
%mn2:~1,-1%
boot

title 启动WIM格式WIN10PE-X64\n启动/0pe/10PE.WIM
%mn3:~1,-1%
boot

title 运行任意映像文件\n运行/imgs/下映像文件
%mn4:~1,-1%
boot

#很奇怪,这里不能用[if %bt%==BIOS]
iftitle [if %@uefi%#==#] 启动 0PE\n启动/0pe/0pe.iso
find --set-root /0pe/0pe.iso
map --mem /0pe/0pe.iso (0xff)
map --hook
chainloader (0xff)
boot

title [F4]进入命令行commandline\n进入命令行
commandline

title 启动存在的光盘(cd0)
chainloader (cd0)

title [F3]重启reboot\n重启电脑
reboot

title 关机halt\n关闭电脑
halt


点评

学习了!点个赞!  发表于 7 天前

评分

参与人数 1无忧币 +5 收起 理由
879792799 + 5 赞一个!厉害啊大大!

查看全部评分

回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-11-22 03:24

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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