pseudo 发表于 2010-2-18 18:53:48

程式菜单应用技术举例:参数化菜单功能调用

参数化菜单功能调用可方便用户DIY。


同一菜单项可以启动不同的ISO。

菜单通用,同一菜单适合于:
硬盘、光盘、移动硬盘、USB-CDROM、USB-HDD、USB-ZIP和UD等本地启动情形。
也可直接用于网启部署。


请过目#1至#3楼。

[ 本帖最后由 pseudo 于 2010-2-19 17:12 编辑 ]

pseudo 发表于 2010-2-18 18:54:20

0PEv1.0.7参数化菜单功能调用举例.rar--独立通用F6模块--0PE零体积版

;参数化菜单功能调用举例by Pseudo 2010.2.10
;参数化菜单功能调用可方便用户DIY。
;此菜单通用,同一菜单适合于:
;硬盘、光盘、移动硬盘、USB-CDROM、USB-HDD、USB-ZIP和UD等本地启动情形。
;也可直接用于网启部署。
;如菜单项所示,0PE同一菜单项可以启动不同的ISO。
;此菜单仅作示例,使用者应在理解基础上DIY。
;提醒:
;合盘需使用适当的新版Grub4Dos,例如0PE v1.0.7需使用grub4dos-0.4.5a-2010-02-09.zip
;应使用英文版grldr,可通过gfxmenu实现中文界面。
checkrange 0x21 read 0x8280 && pxe detect NotExist
timeout 8
default 0
cat --length=0 ()/0PE/MENU.0PE || find --set-root /0PE/MENU.0PE
#假定MESSAGE与MENU.0PE在同一个盘(分区)
gfxmenu /MESSAGE
title             0PE原版菜单
configfile /0PE/MENU.0PE
title             直接启动0PE
#这行表示绕过0PE第一菜单界面,直接调用其菜单项
write 0x60300 0x60300
#这行指定调用0PE第1菜单项
write 0x60100 1
configfile /0PE/MENU.0PE
title             启动ISO例一(PE)
#这样启动ISO可找到硬盘和外置工具。
write 0x60300 0x60300
#调用0PE第3菜单项,默认名串/PE.ISO
write 0x60100 3
#可自行指定ISO名串
write (md)0x301+1 /ISO/LMT911PE.ISO
#指定串/ISO/LMT911PE.ISO长为17个字符
write 0x60360 17
configfile /0PE/MENU.0PE
title             启动ISO例二(控制台)
#这样启动ISO可找到硬盘不蓝屏
write 0x60300 0x60300
write 0x60100 3
write (md)0x301+1 /ISO/XP_CON.ISO
#指定串/ISO/XP_CON.ISO长为15个字符
write 0x60360 15
configfile /0PE/MENU.0PE
title             启动ISO例三(安装盘)
#这样启动ISO可找到硬盘不蓝屏
write 0x60300 0x60300
write 0x60100 3
write (md)0x301+1 /ISO/XP_SP3.ISO
write 0x60360 15
configfile /0PE/MENU.0PE
title             串接用户菜单
write 0x60300 0x60300
write 0x60100 4
configfile /0PE/MENU.0PE
title             USB2.0加速模块(常死机)
write 0x60300 0x60300
write 0x60100 7
configfile /0PE/MENU.0PE
title             KonBoot绕口令模块
#for 2K/XP/2K3/VISTA/2K8
write 0x60300 0x60300
write 0x60100 8
configfile /0PE/MENU.0PE
title             交换磁盘hd0、hd1顺序
write 0x60300 0x60300
write 0x60100 11
configfile /0PE/MENU.0PE
title            激活分区(hd0,0)
#U启时往往U盘、硬盘分别对应hd0,hd1,这时要激活硬盘分区可先交换磁盘hd0,hd1顺序。
write 0x60300 0x60300
write 0x60100 12
configfile /0PE/MENU.0PE
title         整体启动全内置0PE
#ANYNAME.ISO由0PE.ISO改名而来,不用改结构就直接可当全内置PE。
#全内置U启慢(但U启后可拔盘)、耗内存(整个ISO要载入内存)。
#增加ISO里面的外置工具不用动内核,但ISO体积越大越占启动内存。
#可考虑将部分内核、外置工具组件移到ISO外减小ISO体积。
cat --length=0 ()/ANYWHERE/ANYNAME.ISO || find --set-root /ANYWHERE/ANYNAME.ISO
map --mem /ANYWHERE/ANYNAME.ISO (0xff)
map --hook
chainloader (0xff)
title         整体启动全外置0PE
#0PE.ISO须放入0PE目录,并处于可见分区。可以找到ISO里外置工具。
#如果ISO在磁盘上是连续存放的,将比全内置方式U启快、省内存,ISO里面的外置工具体积可无限增加。
#如果不连续存放,则整个ISO要载入内存。可考虑将部分内核、外置工具组件移到ISO外减小ISO体积。
cat --length=0 ()/0PE/0PE.ISO || find --set-root /0PE/0PE.ISO
map /0PE/0PE.ISO (hd32) || map --mem /0PE/0PE.ISO (hd32)
map --hook
chainloader (hd32)
title         启动Windows XP/2K3
find --set-root --ignore-floppies --ignore-cd /ntldr
map () (hd0)
map (hd0) ()
map --rehook
find --set-root --ignore-floppies --ignore-cd /ntldr
chainloader /ntldr


注意:

类似这样启动老毛桃原版PE是不行的:
title             启动PE的ISO
map --mem /ISO/LMT911PE.ISO (0xff)
map --hook
chainloader (0xff)
启动后会是没有外置工具的裸PE。

类似这样启动安装盘ISO是不行的:
title             启动安装盘ISO
map --mem /ISO/XP_SP3.ISO (0xff)
map --hook
chainloader (0xff)
启动后可能找不到硬盘,并且注定蓝屏死机没商量。

===========
0PEv1.0.7参数化菜单功能调用举例.rar,体积10M。含XP控制台XP_CON.ISO(8M)、0PE零体积版(兼作通用独立F6模块),支持参数调用(被调用的iso自行加入,目录、文件名可DIY,菜单项可自行增减)。
下载信息将在这里提供。
===========

驱动注入——避免某些XP/2003系统因为缺少SRS驱动而蓝屏(例如GHOST后重启蓝屏)


安装原版windows XP/2003的ISO可找到硬盘不蓝屏


[ 本帖最后由 pseudo 于 2010-3-21 14:48 编辑 ]

pseudo 发表于 2010-2-18 18:55:10

程式菜单应用技术

0PE最早发明程式菜单应用技术,把菜单当成程序。这个参数化调用就是程式菜单的一种应用。

chenall兄最近增强了grub4dos的功能,使得程式菜单更强大、方便。

预期今后会有更多人使用程式菜单技术,虎年将是程式菜单普遍应用的一年。本帖说不定是这种普及的里程碑。


原帖由 zhaohj 于 2010-2-19 15:22 发表 http://bbs.wuyou.net/images/common/back.gif
#这行表示绕过0PE第一菜单界面,直接调用其菜单项
write 0x60300 0x60300
#这行指定调用0PE第1菜单项
write 0x60100 1
P大解析一下内存变量的含义
下面做些解释:

一、穿越(绕过)菜单界面直接选中菜单项

普通直接用configfile /0PE/MENU.0PE就可调用0PE的专用菜单,进入0PE第一菜单界面。
现在先写上
write 0x60300 0x60300
write 0x60100 <菜单项序号>
就把特定数据写入特定内存位置。将来执行MENU.0PE时,可以通过
checkrange 0x60300 read 0x60300 && timeout 0
checkrange 0x60300 read 0x60300 && default 16
来检查内存该处的数据是否特定数据。如果不是,就按普通情形处理;如果是,那么特殊处理:
1、设置延时为0,使得0PE第一菜单界面一闪而过,等效于绕过该界面。
2、设置默认菜单项为第16项,该菜单项里,通过
checkrange <菜单项序号> read 0x60100 && fallback <菜单项序号>
fallback Force
转入与<菜单项序号>对应的菜单项,其效果相当于用户在0PE第一菜单界面选中了该菜单项。

二、参数传递

上述<菜单项序号>就可以看作数值参数。前面已经介绍了如何使用该参数,下面介绍更具普遍性的字符串参数传递。
write (md)0x301+1 <ISO文件名串>
write 0x60360 <串长>
这两行把字符串参数信息写入内存特定位置....(待续)

[ 本帖最后由 pseudo 于 2010-2-19 17:04 编辑 ]

ddaiqq 发表于 2010-2-18 19:14:14

0PE出到1.07了吗?

ddaiqq 发表于 2010-2-18 19:15:06

希望能像小马PE一样 从PE中可以提取维护版

[ 本帖最后由 ddaiqq 于 2010-2-18 20:57 编辑 ]

bsplin 发表于 2010-2-18 20:54:00

先点位,慢慢学习吸收吧!感谢P大做出的贡献!

sratlf 发表于 2010-2-18 21:21:56

原帖由 ddaiqq 于 2010-2-18 19:15 发表 http://bbs.wuyou.net/images/common/back.gif
希望能像小马PE一样 从PE中可以提取维护版

现在的0PE就可以提取维护版还可以提取零体积版 专用模块等

zhhsh 发表于 2010-2-18 21:43:26

学习一下 (*^__^*)

pseudo 发表于 2010-2-18 21:48:02

原帖由 ddaiqq 于 2010-2-18 19:15 发表 http://bbs.wuyou.net/images/common/back.gif
希望能像小马PE一样 从PE中可以提取维护版
0PE是可剪裁、可扩展的PE,具有比模块化更精细的文件级组件化全外露(方便增减文件)结构。

不但能弄出维护版、网络版等,而且还能弄出兼顾维护、网络的版本。

可以弄出骨头版,还可以弄出比骨头版更小的、仍有用处的版本。本帖其实就是一个几兆的版本。

参见0PE文档
readme_版本合一、可剪裁.txt
或:
http://bbs.wuyou.net/forum.php?mod=viewthread&tid=137207&page=296#pid1890228

hong001 发表于 2010-2-18 22:18:01

慢慢学习吸收知识很丰富啊
页: [1] 2 3
查看完整版本: 程式菜单应用技术举例:参数化菜单功能调用