|
本帖最后由 110654 于 2016-6-8 11:16 编辑
近日,发现本区有个run自动菜单批处理,作者sratlf多次更新,制作得相当不错,但是每个人都有自己的grub4dos引导菜单,至于如何应用到自己的菜单上面去,我有以下思路,经过多次测试修改,终于成功
http://bbs.wuyou.net/forum.php?m ... 1&highlight=run原帖子地址
run0701版本下载地址的帖子:
http://bbs.wuyou.net/forum.php?mod=viewthread&tid=207007
下载run
run0701版本不知道是不是最新版。后来在别的区发现一个带图形界面的自动菜单,设计得很不错,把grub4dos发挥到极致的感觉。但是作者并没有给出说明书,介绍这个程序的各个文件的用处,自己弄的grub4dos菜单还在苦苦的一个一个添加删除,手动编辑。是时候向大神靠齐了。
先看结构:
打开boot目录
典型的grub4dos启动结构,有grldr,在/boot/grub/中有menu.lst菜单文件打开分析一下。
其中发现了几个关键点,这里的代码还是应用的grub的代码,菜鸟们还能勉强的看懂一部分。
#自动设定壁纸
BGAutoChange /BOOT/GRUB/BG/
font /BOOT/GRUB/UNIFONT.HEX
#定义显示相关
MENUSETTING n 3 0 n n 6 71 17
#菜单项开启自动编号
write 0x8274 0x1a01
color normal=31 highlight=0x0A helptext=0x1D heading=0x0A standard=0x0F border=0x00
#splashimage /BOOT/GRUB/SNOW.LZMA
title 列出 DOS时代菜鸟工具箱 中所有工具 \n 需自备DTS.IMA文件,放在 /BOOT/IMGS/ 目录下
if not exist /BOOT/GRUB/RUN find --set-root --devices=chpu /BOOT/GRUB/RUN
command RUN DTS.IMA --dts-list
title 将列出/IMGS/目录下所有文件(菜单形式) \n文件夹优先显示,其次是文件
if not exist /BOOT/GRUB/RUN find --set-root --devices=chpu /BOOT/GRUB/RUN
command RUN --automenu /imgs/
title 将列出/IMGS/目录下所有文件(列表形式) \n默认蓝色字为文件夹,绿色字为文件
if not exist /BOOT/GRUB/RUN find --set-root --devices=chpu /BOOT/GRUB/RUN
command RUN --autolist /imgs/
title 使用firadisk驱动安装系统 \n 需自备 /BOOT/IMGS/FIRADISK.IMG 以及 /WIN$.ISO 文件
if not exist /BOOT/GRUB/RUN find --set-root --devices=chpu /BOOT/GRUB/RUN
command RUN --fira iso=/WIN$.ISO
title 启动PE系统 \n 用于引导散开放置于逻辑分区上的PE引导文件启动
if not exist /BOOT/GRUB/RUN find --set-root --devices=chpu /BOOT/GRUB/RUN
command RUN --pe /WXPE/SETUPLDR.BIN
title 更换背景 \n
if not exist /BOOT/GRUB/BGAutoChange find --set-root --devices=chpu /BOOT/GRUB/BGAutoChange
command BGAutoChange /BOOT/GRUB/BG/
其中定义显示相关,本人用了3个小时,测试100多次终于找到了正确的定义这个数字的方式已经位置的调整。他默认使用的是正中间的位置,我想调正到左上角,位置调小一点,背景图就可以设计一些漂亮的,而不用文字霸占了正中间,背景图看起来毫无意义一样。我习惯性DIY,大神们请原谅我的无知。
#定义显示相关
MENUSETTING n 3 0 n n 6 71 17
左上角定义坐标:
个人觉得比较满意的是:(技术不到家,看不懂MENUSETTING这个文件,不然就知道怎么去定义坐标了),下面给出我的结论,可能有错误,还请大神帮忙瞧瞧是否正确。
#定义显示相关(字间距,字间距,线边框,注释位置,上边距,右边距,左边距)
MENUSETTING 2 3 0 27 15 3 75 3
要应用到自己的grub并且能实现他这个方式,可以基本型套用,复制boot目录里面所有文件到U盘的某个目录。要修改的地方有:
引导部分要修改,其中U盘根目录的grldr文件是可以放在你想放的位置,修改方式是:
下载:http://pan.baidu.com/s/1jHQQXJw
这个grub内置菜单编辑器打开grldr文件
可以看到红色框的位置就是引导文件指引菜单文件的路径,修改你对应的路径即可
我的建议是直接复制整个代码替换你原来的grldr文件里面的代码,或者直接替换grldr文件,(如果版本不一样的话),内置菜单编辑器可以看到版本信息
引导搞定之后,就对应的菜单编辑了,
其中作者菜单中最上面一段:
checkrange 0x21 read 0x8280 > nul && pxe keep
graphicsmode -1 320:800 100:1000 24:32
这段必须使用,虽然看不懂,经过测试是必须有的。
我的建议是直接使用他原来的菜单,然后修改内容,上面已经做了菜单显示位置的修改,定义坐标MENUSETTING 2 3 0 27 15 3 75 3,如果使用grub默认位置带边框就使用MENUSETTING n 3 0 n n 6 71 17
这里n代表是使用默认配置,这里面的0代表边框线的大小,0=无边框。为什么建议使用作者的grldr文件是因为他这个文件默认加了中文字体内置的。当然外置也有,路径是/boot/grub/UNIFONT.HEX
如果你复制boot目录到U盘不是boot文件夹里面那么要修改的
#确定外部命令所在设备
debug 1
command | echo -n | echo -n | echo -n > (md)0x200+1
debug off
call Fn.11 0x40000 ")" || set modskip=0
if %@retval%>=0x40000 && set /a modskip=%@retval% - 0x40000 + 1 > nul
cat --skip=%modskip% (md)0x200+1 | set modpath=
cat --length=%modskip% (md)0x200+1 | set modroot=
if "%modpath%"=="" set modpath=/BOOT/GRUB/
cat --length=0 %modroot%%modpath%RUN |; cat --length=0 %@root%%modpath%RUN && set modroot=%@root% ! find --set-root %modpath%RUN &; set modroot=%@root%
command --set-path=%modroot%%modpath%
set modroot=
set modpath=
set modskip=
第2段代码中的
if "%modpath%"=="" set modpath=/BOOT/GRUB/
这里我的理解大概是设置grub默认根目录,如果不设置,菜单中选择一些操作之后将返回主菜单,就返回不了,加载背景替换也不行了。
下面就是我们自己原来的PE添加到菜单中去
例如
title 启动Windows XP PE \n 用于引导散开放置于逻辑分区上的PE引导文件启动,同时加载SRS驱动
if not exist /BOOT/GRUB/RUN find --set-root --devices=chpu /BOOT/GRUB/RUN
command /boot/F6IMG /boot/srs
map --e820cycles=3
map --rehook
chainloader /boot/p/SETUPLDR.BIN
其中 \n 用于引导散开放置于逻辑分区上的PE引导文件启动,同时加载SRS驱动
\n 这2个字符代表 的是在菜单选择中 下面会显示的注释的内容代码 后面跟内容
if not exist /BOOT/GRUB/RUN find --set-root --devices=chpu /BOOT/GRUB/RUN
大概理解为如果失败就还回/boot/grub/run
其他的一些菜单PE:
title 启动Windows 7 PE \n 启动windows 7 PE,同时加载SRS驱动
if not exist /BOOT/GRUB/RUN find --set-root --devices=chpu /BOOT/GRUB/RUN
command /boot/F6IMG /boot/srs
map --e820cycles=3
map --rehook
chainloader /boot/7PE_MGR
你原来的菜单比较多,可以使用 子菜单跳转
例如:
title 启动工具子菜单 \n 自备 1.LST 文件,放在 /BOOT/GRUB/ 目录下,各种DOS工具大全
if not exist /BOOT/GRUB/RUN find --set-root --devices=chpu /BOOT/GRUB/RUN
command RUN /BOOT/GRUB/1.LST
这个1.lst 编辑方式:
title 返回主菜单
configfile /boot/grub/menu.lst
上面的加载字体背景等代码跟主菜单代码一样即可。
title 列出/winly/IMGS/目录下所有文件(菜单形式) \n文件夹优先显示,其次是文件
if not exist /winly/grub/RUN find --set-root --devices=chpu /winly/grub/RUN
command RUN --automenu /boot/grub/imgs/
这里其实相当于自动菜单图形界面的资源管理器。
。。。 3个点的是返回上级目录,当你选择某的img ima iso文件可以启动,但xxx.img文件不能有空格,不然会乱码
title 启动 MAXDOS工具箱 中的CHKDSK工具 \n 需自备MAXDOS.IMG文件,放在 /BOOT/IMGS/ 目录下
if not exist /BOOT/GRUB/RUN find --set-root --devices=chpu /BOOT/GRUB/RUN
command RUN MAXDOS.IMG CHKDSK
这里的command RUN MAXDOS.IMG CHKDSK
是指用run里面的代码来启动maxdos.img 并加载chkdsk代码,就相当于启动了img 并使用了chkdsk。 举一反三
你可以启动了maxdos.img使用里面的ghost,前提是你知道里面的工具启动对应的代码
如:mand RUN MAXDOS.IMG ghost
作者的菜单中写了很多很多很多很多 例子,方便了很多很多很多人菜鸟。。。。。
其中
title 使用firadisk驱动安装系统至硬盘镜像中 \n 需自备 /BOOT/IMGS/FIRADISK.IMG 以及 /WIN$.ISO 以及 /RAMXP.IMG 文件
if not exist /BOOT/GRUB/RUN find --set-root --devices=chpu /BOOT/GRUB/RUN
command RUN --fira iso=/WIN$.ISO disk=/RAMXP.IMG
这里的FIRADISK.IMG 可以百度下载
还有
title 使用 PLPBT.BIN 加载usb2.0驱动 \n 需自备PLPBT.BIN文件,放在 /BOOT/IMGS/ 目录下
if not exist /BOOT/GRUB/RUN find --set-root --devices=chpu /BOOT/GRUB/RUN
command RUN PLPBT.BIN
这里的plpbt.bin文件下载地址:
http://pan.baidu.com/s/1qYxOIBE
EFI启动目前有2种,如果你不使用linux 可以用微软的方案,默认的
如果你要引导linux -EFI
我推荐grub2,菜鸟版,推荐 原谅我的广告- -
http://bbs.wuyou.net/forum.php?m ... d=377889&extra=
如果有兴趣,一起研究。自动菜单图形版
http://bbs.wuyou.net/forum.php?m ... 4%B6%AF%B2%CB%B5%A5
功能很类似,其实大多数时候,许多功能都用不上,这个做了一些美化,
|
|