无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站广告联系 微信:wuyouceo QQ:184822951
查看: 4890|回复: 12
打印 上一主题 下一主题

0PE的MENU.DIY 如何被grldr调用

[复制链接]
跳转到指定楼层
1#
发表于 2011-9-14 00:13:40 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
0PE的MENU.DIY 如何被grldr调用
pseudo大在
http://bbs.wuyou.net/forum.php?m ... 364&page=199###
1989楼讲

0PE菜单如何DIY

要DIY菜单可自行修改/BOOT/IMGS/MENU.DIY,这个是面向用户的自定义菜单,很容易很方便修改。

然后把它内置于grldr,或者在你的grldr菜单中通过类似
find --set-root /BOOT/IMGS/MENU.DIY
configfile /BOOT/IMGS/MENU.DIY
的方式调用它就行了。

MENU.0PE(经常内置于grldr)是程式菜单,换句话说是程序。
不懂编程,不熟悉grub4dos者不宜修改MENU.0PE,连看都不要看!!!



菜鸟求助,我试着修改了0PE的MENU.DIY,然后使用jianliulin大大发的GRLDR内置菜单更改工具修改grldr,但
find --set-root /BOOT/IMGS/MENU.DIY
configfile /BOOT/IMGS/MENU.DIY
这两行应该放于grldr菜单中的哪里才能被grldr正常调用?
我只要一修改就出问题,放于前面、后面、末尾都不行,出现的问题是能出现我的引导画面及菜单,但下一步就不能工作,好像反复出现的都是MENU.DIY的菜单,而且显示的是乱码,各项调用的功能都不管用。

下面贴上最新的P大的MENU.DIY的原版内容:

Special MENU for 0PE
terminal console
debug off
checkrange 20110809:-1 read 0x8278 || clear && pause You should use grub4dos-0.4.5b-2011-08-09 or above. && reboot
write 0x60368 0
checkrange 0x80 read 0x8280 && write 0x60368 1
checkrange 0x23 read 0x8280 && checkrange 0x80 calc *0x82B9&0xff && write 0x60368 1

echo -e \n\nPress a key within 3 seconds:
echo -e \n\t<Enter>--Continue(by default)\n\t<Esc>--Grub4Dos Commandline\n\t<Space>--Load 0PE.ISO into memory entirely\n
set tkey= && pause --wait=3 && set /A tkey=*0x4CB00
if not exist tkey commandline
debug off
set mapmem=
if /i "%tkey%"=="0x20" set mapmem=1
set tkey=

#可在这里指定整体启动0PE.ISO的路径、名字。默认/0PE.ISO。指定的不存在,就找/0PE/0PE.ISO。
if not exist PEISO set PEISO=/0PE.ISO

#可改SRS路径。
set SRS0PE=/0PE/SRS/

checkrange 0x21 read 0x8280 && pxe detect NotExist

write 0x60064 0
write 0x6006C 0
write 0x60130 0
checkrange 0x21 read 0x8280 && write 0x60064 1

set noacc=
read 0x60064 && set noacc=1 ! if not exist (bd)/BOOT/GRUB/USB_ACC.0PE if not exist (224)/BOOT/GRUB/USB_ACC.0PE set noacc=1
if not exist noacc if exist (bd)/BOOT/GRUB/USB_ACC.0PE (bd)/BOOT/GRUB/USB_ACC.0PE --time-out-disable:0
if not exist noacc if not exist (bd)/BOOT/GRUB/USB_ACC.0PE (224)/BOOT/GRUB/USB_ACC.0PE --time-out-disable:0


default 0
timeout 0
#0
title
echo
echo 0PE by Pseudo

read 0x60064 || if exist /0PE/0PE.GZ && goto 2 ! echo -n
read 0x60064 || if exist %PEISO% && goto 1 ! echo -n
read 0x60064 || if exist /0PE/0PE.ISO set PEISO=/0PE/0PE.ISO && goto 1 ! echo -n

find --devices=uh --set-root /0PE/0PE.GZ && goto 2 ! echo -n
find --devices=uh --set-root %PEISO% && goto 1 ! echo -n
find --devices=uh --set-root /0PE/0PE.ISO && set PEISO=/0PE/0PE.ISO && goto 1 ! echo -n

find --devices=cfp --set-root /0PE/0PE.GZ && goto 2 ! echo -n
find --devices=cfp --set-root %PEISO% && goto 1 ! echo -n
find --devices=cfp --set-root /0PE/0PE.ISO && set PEISO=/0PE/0PE.ISO && goto 1 ! echo -n

if exist (pd)/0PE/0PE.GZ rootnoverify (pd) && goto 2 ! echo -n
if exist (pd)%PEISO% && rootnoverify (pd) && goto 1 ! echo -n
if exist (pd)/0PE/0PE.ISO set PEISO=/0PE/0PE.ISO && rootnoverify (pd) && goto 1 ! echo -n

pause Error:/0PE/0PE.GZ, %PEISO% and /0PE/0PE.ISO not found!

#1
title
read 0x60064 && goto 3
if not exist noacc goto 3
map %PEISO% (0xff) || goto 3
map --hook
(0xff)/BOOT/GRUB/USB_ACC.0PE --time-out-disable:0 || echo -n
map --unmap=0xff
map --rehook
goto 3

#2
title
set noacc=
set mapmem=
dd if=(md) of=(md) bs=1 count=8 skip=0x829c seek=0x60130
echo
read 0x60064 && pxe || echo -n
echo Device of 0PE.GZ:
debug on
root || echo :(:(:
debug off
checkrange 0xC0 read 0x8280 && write 0x6006C 1
read 0x6006C && cdrom --stop
echo Loading /0PE/0PE.GZ...
map --mem ()/0PE/0PE.GZ (hd)
map --hook
read 0x6006C && cdrom --init
read 0x6006C && map --hook
write --offset=200 (hd-1,0)/BAT/_ENV.BAT set PEISO=%PEISO%\r\n
cat --locate=/ --replace=\\ (hd-1,0)/BAT/_ENV.BAT
if exist ()/0PE/GRUB.0PE (hd-1,0)/BIN/FAT copy /o ()/0PE/GRUB.0PE (hd-1,0)/GRUB.EXE || pause /0PE/GRUB.0PE not found. && reboot

set burgcd=
if exist (224)/0PE/0PE.GZ set burgcd=1 && find --set-root %PEISO% && map %PEISO% (0xff) && map --hook && set burgcd= ! echo -n
if exist burgcd map --floppies=1 && map (fd0,0)%PEISO% (0xff) && map --hook && echo %PEISO% is in (fd0,0) && set burgcd= ! if exist burgcd pause --wait=5 %PEISO% not found.

set PEISO=
echo && configfile (hd-1,0)/BAT/M1.LST

#3
title
echo Device of 0PE.ISO:
debug on
root || echo :(:(:(:(:(:(
debug off
echo Loading %PEISO%...
read 0x60064 && checkrange 0x21 read 0x82A0 && set mapmem=1
checktime
if not exist mapmem echo Direct map %PEISO% && map %PEISO% (0xff) || set mapmem=1 && echo Warnning: Fail to direct map %PEISO%, try to map with --mem.
if exist mapmem echo Map %PEISO% with --mem && map --mem %PEISO% (0xff) || pause Error: Fail to map --mem %PEISO% (0xff). && reboot
checktime
map --hook
rootnoverify (0xff)
goto 2


[ 本帖最后由 135980 于 2011-9-14 00:21 编辑 ]
2#
发表于 2011-9-14 00:17:42 | 只看该作者
哇哇哇 很乱 不好看
回复

使用道具 举报

3#
 楼主| 发表于 2011-9-14 00:23:35 | 只看该作者
已改,重排版了,有点长
回复

使用道具 举报

4#
发表于 2011-9-14 01:20:16 | 只看该作者
楼主在纠结两行内容该放在grldr内置菜单中哪个位置吧。

grldr原来内置菜单跟MENU.0PE内容是几乎一样的。不要看,不要修改它。

grldr内置菜单换成那两行,总共只两行就够了。这时,需要有MENU.DIY和MENU.0PE在适当位置供grldr内置菜单调用。

或者,使grldr内置菜单内容全等于MENU.DIY内容。这时,需要有MENU.0PE在适当位置,不需要MENU.DIY了。
回复

使用道具 举报

5#
发表于 2011-9-14 05:20:54 | 只看该作者
后面那么小,都看不清楚。还有乱码。
回复

使用道具 举报

6#
 楼主| 发表于 2011-9-14 12:21:22 | 只看该作者
谢谢pseudo大大的指导!按照指导,grldr内置菜单换成那两行,总共只两行就够了。这时,需要有MENU.DIY和MENU.0PE在适当位置供grldr内置菜单调用。
使用了这种方法,出现的问题和我原来的一模一样,就是MENU.DIY的菜单正常,但是不管选菜单中那一项,之后出现的都是像MENU.DIY没有message不能显示中文的菜单,而且不管再选那一项都不会进行下去,卡在那里了!

如图显示:

[ 本帖最后由 135980 于 2011-9-14 12:23 编辑 ]
回复

使用道具 举报

7#
 楼主| 发表于 2011-9-14 12:31:53 | 只看该作者
这是MENU.DIY的代码,就改动了一点,用记事本改的。

#DIY菜单示例 Pseudo 2010.03.08,2011.05.05,2011.06.07,2011.08.09
#本菜单很好修改,可自行增删菜单项。
#不建议直接修改0PE的MENU.0PE菜单,应该像本例那样自己写菜单项来调用它的菜单项。
#2011.06.07起将/BOOT/GRUB/MENU.0PE改为/0PE/M.0PE
#2011.08.09起将/0PE/M.0PE改为/BOOT/GRUB/MENU.0PE
terminal console
debug off

#要支持pxe网启,可在grldr内置菜单加入下面这行来初始化pxe栈。被调用的外置菜单则不宜重复初始化。
#checkrange 0x21 read 0x8280 && pxe detect NotExist

#固定地调用智能U盘加速器,有希望收到加速效果。反正一般没什么坏处。
#U盘加速方案:智能判断需要加速时等8秒。按空格则加速,不按键或按回车则不加速。智能判断不需加速时等0秒(飞过,无手动强制加速机会)。
#USB_ACC.0PE --time-out-disable:0
#由于MENU.0PE里已经有调用USB_ACC.0PE,这里不再重复调用。

default 0
timeout 5
find --set-root /BOOT/GRUB/MENU.0PE

#须自行准备MESSAGE文件,放在MENU.0PE所在分区的/BOOT/GRUB/目录,否则不能显示汉字(仍可以工作)。
gfxmenu ()/BOOT/GRUB/MESSAGE

title [1] 直接启动0PE之XP中文版 \n  Windows PE (XP)
#这行表示选定0PE第1菜单项([1] Windows PE (XP)   中文版)
command RUN ()/BOOT/GRUB/MENU.0PE 1

title [2] 0PE原始菜单(更多功能) \n  0PE Menu
command RUN ()/BOOT/GRUB/MENU.0PE

title [3] 芭比linux(puppy linux) \n  Puppy Linux
#启动可见区linux
command kernel /puppy/vmlinuz PMEDIA=usbflash
command initrd /puppy/initrd.gz

title [4] 运行DiskGenius磁盘管理 \n  DiskGenius
#这行表示选定0PE第14菜单项([E] 运行DiskGenius磁盘管理)
command RUN ()/BOOT/GRUB/MENU.0PE E

title [5] 启动DOS工具箱 \n  MAXDOS
command RUN ()/BOOT/IMGS/MAXDOS.IMG

title [6] 启动指定的ISO(/ANY.ISO) \n  /ANY.ISO Loader
#这行表示选定0PE第6菜单项([6] ISO/PE启动器),并指定ISO为/ANY.ISO。
command RUN ()/BOOT/GRUB/MENU.0PE 6 /ANY.ISO

title [7] NT5.X/NT6.X通用启动器 \n  NT5/NT6 Loader
#这行表示选定0PE第8菜单项([8] NT5.X/NT6.X通用启动盘)
command RUN ()/BOOT/GRUB/MENU.0PE 8

title [8] 零键克隆/Risk.GHO到1:1 \n  CMDPE for GHOST32, /Risk.GHO=>1:1
#这行表示选定0PE第5菜单项([5] 进入GHOST32专用CMDPE)
command RUN ()/BOOT/GRUB/MENU.0PE 5

[ 本帖最后由 135980 于 2011-9-14 12:43 编辑 ]
回复

使用道具 举报

8#
发表于 2011-9-14 12:45:13 | 只看该作者
”没有message“?让它有是你的责任。

你的MENU.DIY不是0PE提供的吧,原来没有puppy linux的。
你把MENU.DIY弄好就行了。

这里有0PE的通用F6模块组件可作例子
http://bbs.wuyou.net/forum.php?m ... page=358#pid2260868
(必要时要前后翻一页)
自己研究吧。
回复

使用道具 举报

9#
发表于 2011-9-14 18:13:56 | 只看该作者

回复 #7 135980 的帖子

要知其然还要知其所以然,这个MENU.DIY中调用0PE所带的组件是以解开的情况下的,如果不解开的情况下,就要在/BOOT/GRUB/目录中放入新版的RUN。
在菜单前加上:run --noboot /0pe.iso(假设0pe.iso放根目录)
然后再试试你的菜单?

[ 本帖最后由 幸运的草 于 2011-9-14 18:16 编辑 ]
回复

使用道具 举报

10#
 楼主| 发表于 2011-9-14 18:33:56 | 只看该作者
谢谢幸运的草!
我已经试验了各种方式都不行,包括用原版的MENU.DIY也不行,不知道那位兄弟测试了最新版的0PEv1.2.6且加上(2011.8.9发布的补丁)没有?仅仅用单独的0PE,哪怕是刻成盘或者UD引导,使用自带的MENU.DIY成功没有?
回复

使用道具 举报

11#
发表于 2011-9-15 14:16:59 | 只看该作者

回复 #10 135980 的帖子

你可以这样试试:

title [1] 直接启动0PE之XP中文版 \n&nbsp;&nbsp;Windows PE (XP)
#这行表示选定0PE第1菜单项([1] Windows PE (XP)&nbsp; &nbsp;中文版)
run --noboot /0pe.iso(假设0pe.iso放根目录)
command RUN (0xff)/BOOT/GRUB/MENU.0PE 1
其他以此类推。

[ 本帖最后由 幸运的草 于 2011-9-15 14:20 编辑 ]
回复

使用道具 举报

12#
发表于 2011-9-15 14:17:49 | 只看该作者
RUN必须是在UD区实际存在的。不能使用0PE.ISO中的.
回复

使用道具 举报

13#
发表于 2011-9-16 10:53:42 | 只看该作者
MESSAGE、RUN、0PE.ACC这几个在UD内放一份
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-4-19 13:35

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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