|
2#
楼主 |
发表于 2010-9-29 16:07:42
|
只看该作者
本帖一是为了演示 gparts.lst 的应用,另外是想介绍一下xDos工具箱的结构。
有了MaxDOS后,从全面性来说,很难有另一个DOS工具箱能够超越它了。但全的另一种意义就是雍肿,毕竟不是每个人都是专门给人维护电脑,每天要面对各种各样的电脑的。对大多数人来说,可能只用MaxDOS中的某一个或几个工具,甚至只要一个驱动。大多数人只需要在自己的生活圈子里维护有限数量的电脑而已。
xDOS是一个平民化高度可定制的工具箱(本演示版不是介绍xDOS有多强的功能,而是介绍其结构和自定制的便利性,所带的都是很普通的工具)。基本上不需要懂得DOS各种启动配置的编辑技巧,就能打造适合自己的工具箱。
xDos只启动一个“最小”DOS,并用xmsdsk.exe虚拟一个内存盘X。所有工具打包成zip文件,需要时解包到X盘运行,运行后删除解包出来的文件,xDOS也因此而命名。
为避开DOS的多重启动配置文件,xDOS完全以Grub4Dos为界面,这样实现中文和修改界面非常容易。因此xDOS自身DOS界面做得很精糙,只实现一个home.bat返回集中bat文件的目录。
IMG文件的基本目录结构:
A:
│ ATTRIB.EXE
│ AUTOEXEC.BAT
│ COMMAND.COM
│ CONFIG.SYS
│ ENVI.BAT
│ HIMEM.SYS
│ IO.SYS
│ MSDOS.SYS
│ X.BAT
│ XMSDSK.EXE
└─X
│ LOAD.BAT
│ LOAD.TXT
│ UNZIP.EXE
├─AUTO
│ │ BAT.zip
│ └─ DOS.zip
├─STD
└─ZIP
为了支持Grub4Dos做启动界面,xDOS中实现了一个批处理Load.bat对zip包的支持。无参数或用/?,/h可以查看用法。
AUTO目录
这个目录中的zip文件会在启动调用x.bat时自动解压到X盘根目录,所以这个目录中的zip要完全按照x盘中的目录结构打包。比如有个文件希望解压到X:\DOS目录中,则打包时zip文件中就有DOS目录。
STD目录
这个目录用来存放用户定制时加入的标准压缩包。
标准压缩包:将工具软件 MYTOOL.EXE 打包成 MYTOOL.ZIP,放到 STD目录中。
标准压缩包的调用方式:
Load.bat /s MYTOOL [yes [yes/no]]
后面的第一个yes/no表示是否需要鼠标,第二个yes/no表示是否需要中文
这条命令会:
解压 A:\X\STD\A.ZIP 到 X:\MYTOOL目录
运行 X:\MYTOOL\MYTOOL (可以是exe,com,bat)
删除 X:\MYTOOL 目录
ZIP目录
这里存放的是非标准压缩包,可以且以下命令调用,每一个参数都要指定
LOAD.BAT zip包名 解压路径 [运行程序 [yes/no [yes/no [删除目录]]]]
比如对前面的 MYTOOL
LOAD.BAT A:\X\STD\MYTOOL.ZIP X:\MYTOOL X:\MYTOOL\MYTOOL.EXE yes no X:\MYTOOL
如果标准压缩包想换个名字,又想用 Load.bat /s 调用怎么办?
如 A.EXE 想打包成 B.ZIP
可以编写一个B.BAT调用A.EXE,将BAT放在B.ZIP中
然后用 LOAD.BAT /S B 调用即可
可以参考本演示版中的IBM_F11.ZIP,它的可执行文件是BMGR.EXE,里面有个IBM_F11.BAT
如何加入驱动?
由 xDOS 结构原理决定了,只能用adddev/loadsys这类工具动态加入驱动,对不支动态加载的目前xDOS无能为力。
演示版中加入了IDE光驱、ISO仿真的两个驱动,参考 X:\BAT 下的 cdrom.bat 和 iso.bat
重点:从Grub4DOS界面调用
title MYTOOL
map --mem /XDOS.IMA (fd0)
map --hook
rootnoverify (fd0)
write --offset=0x156 /AUTOEXEC.BAT CALL LOAD.BAT /S MYTOOL\r\nreboot\r\n::
chainloader +1
这个菜单会启动DOS,解压运行MYTOOL.EXE,然后重启
如果不想重启留在DOS界面,改为这样
write --offset=0x156 /AUTOEXEC.BAT CALL LOAD.BAT /S MYTOOL\r\ngoto END\r\n::
甚至运行后返回Grub4Dos
write --offset=0x156 /AUTOEXEC.BAT CALL LOAD.BAT /S MYTOOL\r\nCALL grub.exe\r\n::
这里要说一下魔数0x156
xDOS默认启动顺序是虚拟一个X盘,加载AUTO目录中的ZIP,进入DOS。
加载AUTO后,有一段空白的区域,用来支持动态写入命令,0x156就是这个空白区域的起始偏移量。我们上面的示例中写入命令尾部都有个\r\n::,如果覆盖了其它命令行,断行时自动注释掉防止语法错误。如果修改了autoexec.bat文件,要相应的修改0x156这个数值。
XDOS中,DOS文件被我分成了常用和非常用两部分,常部分在A:\X\STD\DOS.ZIP,启动时会自动加载;非常用部分在A:\X\ZIP\DOS.ZIP,可以进入DOS后运行DOS_.BAT加载。当然,常用和非常用的标准因人而异,这个完全可以自己调整。
演示版所带工具界面如下:
LOAD.BAT帮助
功能:加载zip程序包到内存盘并运行
用法:
1. LOAD.BAT [/?|/h]
显示帮助
2. LOAD.BAT /S zip包名 [yes/no [yes/no]]
加载标准压缩包并运行
zip包名不需要扩展名,第3个参数是鼠标支持,第4个参数是中文支持
标准包:应用程序 NAME.EXE(COM/BAT) 打包成为 a:\x\std\name.zip
load.bat /s name 将 name.zip 解压到 x:\name\
运行 x:\name\name,后删除 x:\name
3. LOAD.BAT zip包名 解压路径 [运行程序 [yes/no [yes/no [删除目录]]]]
解压非标准压缩包
zip包名必须是带路径的全名
运行程序是解压后可执行程序带路径的全名
环境变量 AUTOCLEAN 决定运行完成后是否删除解压目录
AC.BAT /y 或 AC.BAT /n 可改变这个环境变量
[ 本帖最后由 tuxw 于 2010-9-29 18:52 编辑 ] |
|