|
本帖最后由 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
|
|