中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS开发编程 & 发展交流 (开发室) » 请大家指教啊!我想做一只这样的启动盘。
作者:
标题: 请大家指教啊!我想做一只这样的启动盘。 上一主题 | 下一主题
copy114
初级用户




积分 229
发帖 37
注册 2002-11-9
状态 离线
『楼 主』:  请大家指教啊!我想做一只这样的启动盘。

我想做一个可以引导的启动盘。当启动后就会利用虚拟内存建立一个虚拟盘,如Z盘,然后在虚拟盘上建立三个目录,如bin,abc,win,最后把我的img文件里面的几个压缩文件XX.cab自动解压到虚拟盘指定的目录上,我应该怎样做呢?请大家指教一下,还有,因为我是菜鸟,所以还是请大家详细的指教一下,可以吗?

2002-11-10 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
ko20010214
版主




积分 7294
发帖 1628
注册 2002-10-16
状态 离线
『第 2 楼』:  

请看一实例。
下面是autoexec.bat的内容:">>"后的是我现在加的注解
===================
@echo off           >>这是关闭回显的命令。@是表示这条命令本身也不显示。
SET DIRCMD=/OGN /4 >>这是设置DIR命令的默认方式  
           >>/OGN参数表示按组目录的和名称顺序显示
           >>/4参数表示年份按4位数字来表示。
set ramd=z      >>这是设置一个变量ramd,用来表示虚拟盘
set cdrom=x     >>这是设置一个变量cdrom,用来表示光驱
xmsdsk 8192 %ramd%: /y /t >>这是设置虚拟盘的命令 8192是指盘的大小为8M
                   >>  % ramd%:是指定虚拟盘的盘符为ramd,结合上面
                   >>  ramd=z,即指定盘符为Z盘。/Y是确信这个操作
      >>/t是指装载到XMS的高位(top)
mkdir %ramd%:\temp   >>在虚拟盘上建立一个目录temp
set tmp=%ramd%:\temp     >>设置一个变量tmp
set temp=%ramd%:\temp >>设置一个变量temp
copy a:\command.com %ramd%:\ >nul  >>复制A盘的command.com文件到虚拟盘,
                                    >> >NUL是指这个命令的屏幕信息输入到NUL这
                      >> 个特殊的设备上去,这是个空设备。所以就是
                                   >>起到让这个命令不回显的作用。
set comspec=%ramd%:\command.com>>设置一个变量comspec,作用是指定           >>命令解释程序command.com的位置。
mkdir %ramd%:\bin    >>在虚拟盘上建立一个目录bin
mkdir %ramd%:\doscmd       >>在虚拟盘上建立一个目录doscmd
set ebddir=%ramd%:\doscmd     >>设置一个变量edddir,作用是指定ebd文件的目录
set path=%ramd%:\bin   >>设置一个变量path,作用是指定路径
copy a:\help.exe %ramd%:\bin >nul >>不回显地复制A盘的help.exe文件
       >>到虚拟盘的bin目录里。
lh mscdex /D:MSCD001 /L:%CDROM% >>加载光驱驱动,lh是加载到高位内存里,
                      >>/D:MSCD001,参数D是设备名称,这个设备名
       >>是MSCD001,和你的config.sys里的名称应一致
copy a:\extract.exe %ramd%:\bin >nul >>不回显地复制A盘的extract.exe文件到虚
               >>拟盘的bin目录里
echo Extracting device driver(s)...  >>显示一条信息 "Extracting device driver(s)..."
                                  >>意思是 正在解压设备驱动(文件)。。。
mkdir %ramd%:\device     >>在虚拟盘上建立一个目录device
extract /y /l %ramd%:\device /e a:\scsi.cab >nul>>不回显地解压A盘的scsi.cab这个压
           >>缩包到虚拟盘的device目录里。/Y参数表示
           >>确认这个操作,/L参数表示将文件解压到
           >>指定的目录里。这里是device目录里。
%ramd%:\device\device %ramd%:\device\btdosm.sys >>这里是加载各种驱动的命令
%ramd%:\device\device %ramd%:\device\flashpt.sys
%ramd%:\device\device %ramd%:\device\btcdrom.sys /D:MSCD001
%ramd%:\device\device %ramd%:\device\aspi2dos.sys
%ramd%:\device\device %ramd%:\device\aspi8dos.sys
%ramd%:\device\device %ramd%:\device\aspi4dos.sys
%ramd%:\device\device %ramd%:\device\aspi8u2.sys
%ramd%:\device\device %ramd%:\device\aspicd.sys /D:MSCD001
extract /y /l %ramd%:\bin /e a:\menu.cab >nul >>不回显地解压A盘的menui.cab这
                                                 >> 个压缩包到虚拟盘的bin目录里
extract /y /l %ramd%:\doscmd /e a:\ebd.cab >nul >>不回显地解压A盘的ebd.cab这
                           >>个压缩包到虚拟盘的doscmd目录里
set path=%path%;%ramd%:\doscmd      >>设置一个变量path,就是设置路径
                                       >>用;来分隔多个路径,path=%path%的
             >>意思是让现在的path变量(路径)的为
             >>原来的路径,(;后面是新加进的路径)
             >>整个意思是设置新路径为旧路径加上新
             >>加入的路径
LH CTMOUSE >NUL    >>不回显地装载鼠标驱动到高位内存里
lh smartdrv >NUL     >>不回显地装载smartdrv到高位内存里
                                     >>smartdrv是一个磁盘缓存驱动
ECHO.         >>echo后面加一个. 表示显示一空行
echo To view Help, type HELP and then press ENTER.>>显示一条信息
       >>意思是 想看帮助的话,请键入Help并按回车键
echo.     >>echo后面加一个. 表示显示一空行

======================
文件内容完。
不知道这样讲你觉得行不行? :-)








[此贴子已经被作者于2002-11-10 21:51:00编辑过]






ko20010214
=================================
大功告成,打个Kiss!
ko20010214@MSN.com
神州优雅Q300C
Intel CeleronM 370处理器 | 256MbDDR内存
40G硬盘 | USB2.0 | IEEE 1394
13.3 ' WXGA 宽屏(16:10) | COMBO光驱
10/100M网卡 | 四合一读卡器
2002-11-10 00:00
查看资料  发送邮件  发短消息 网志  OICQ (16959102)  编辑帖子  回复  引用回复
ko20010214
版主




积分 7294
发帖 1628
注册 2002-10-16
状态 离线
『第 3 楼』:  

对应的comfig.sys文件如下:
=================
DEVICE=UMBPCI.SYS
DEVICE=HIRAM.EXE
DEVICEHIGH=HIMEM.SYS /TESTMEM:OFF
DEVICEHIGH=VIDE-CDD.SYS /D:MSCD001  >>加载光驱驱动
DEVICEHIGH=CLOAKING.EXE
DOS=HIGH,UMB,AUTO
SHELL=COMMAND.COM /P /E:2048 /U:128 /L:256
FILESHIGH=30
BUFFERSHIGH=30,0
STACKSHIGH=9,256
LASTDRIVEHIGH=Z
==============
文件内容完




ko20010214
=================================
大功告成,打个Kiss!
ko20010214@MSN.com
神州优雅Q300C
Intel CeleronM 370处理器 | 256MbDDR内存
40G硬盘 | USB2.0 | IEEE 1394
13.3 ' WXGA 宽屏(16:10) | COMBO光驱
10/100M网卡 | 四合一读卡器
2002-11-10 00:00
查看资料  发送邮件  发短消息 网志  OICQ (16959102)  编辑帖子  回复  引用回复
langhua
银牌会员




积分 1225
发帖 461
注册 2002-10-22
状态 离线
『第 4 楼』:  

恩!!!
我说KO
成呀!!!!!原来的在DOS方面也VERY GOOD呀!!!

看来我以后有什么问题叫直接找你了!!!!呵呵!!!

2002-11-10 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
copy114
初级用户




积分 229
发帖 37
注册 2002-11-9
状态 离线
『第 5 楼』:  

mkdir %ramd%:\temp   >>在虚拟盘上建立一个目录temp
set tmp=%ramd%:\temp     >>设置一个变量tmp
set temp=%ramd%:\temp >>设置一个变量temp

我想问问这里,它在第一条不是建立了一个temp的目录了吗?而第三条又设置一个变量temp
这个变量是什么来的,是不是一个文件夹啊?

2002-11-11 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
ko20010214
版主




积分 7294
发帖 1628
注册 2002-10-16
状态 离线
『第 6 楼』:  

此temp非彼temp。
第一条上的temp,是个目录。我们习惯上命名为temp,而实际你可以任意命名它。
第二和第三条的tmp和temp,实际上是在DOS内部约定的一个变量,这个名称是不能改的。
在DOS内部约定了一系列的变量,用于环境设置。
象path,comspec,dircmd,等等。。。这就象编程语言中所讲的保留字一样。
而且这三条语句中,第一条和后面两条作用和意义不一样。
第一条是建立一个目录,这个目录叫temp
第二、三条是设置环境变量,让DOS在要用到临时目录时知道往哪里写临时数据



ko20010214
=================================
大功告成,打个Kiss!
ko20010214@MSN.com
神州优雅Q300C
Intel CeleronM 370处理器 | 256MbDDR内存
40G硬盘 | USB2.0 | IEEE 1394
13.3 ' WXGA 宽屏(16:10) | COMBO光驱
10/100M网卡 | 四合一读卡器
2002-11-11 00:00
查看资料  发送邮件  发短消息 网志  OICQ (16959102)  编辑帖子  回复  引用回复
copy114
初级用户




积分 229
发帖 37
注册 2002-11-9
状态 离线
『第 7 楼』:  

mkdir %ramd%:\device     >>在虚拟盘上建立一个目录device
extract /y /l %ramd%:\device /e a:\scsi.cab >nul>>不回显地解压A盘的scsi.cab这个压
           >>缩包到虚拟盘的device目录里。/Y参数表示
           >>确认这个操作,/L参数表示将文件解压到
           >>指定的目录里。这里是device目录里。
%ramd%:\device\device %ramd%:\device\btdosm.sys >>这里是加载各种驱动的命令
%ramd%:\device\device %ramd%:\device\flashpt.sys
%ramd%:\device\device %ramd%:\device\btcdrom.sys /D:MSCD001
%ramd%:\device\device %ramd%:\device\aspi2dos.sys
%ramd%:\device\device %ramd%:\device\aspi8dos.sys
%ramd%:\device\device %ramd%:\device\aspi4dos.sys
%ramd%:\device\device %ramd%:\device\aspi8u2.sys
%ramd%:\device\device %ramd%:\device\aspicd.sys /D:MSCD001

这段我不要行不行啊?如果我是只加载CDROM的情况下。这些都是加载SCSI的光驱所需要的驱动程序来吗?

2002-11-11 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
ko20010214
版主




积分 7294
发帖 1628
注册 2002-10-16
状态 离线
『第 8 楼』:  

可以。你只要加载CDROM就只需lh mscdex /D:MSCD001 /L:%CDROM% >>加载光驱驱动这些驱动具体我也不知道是什么。大概是winme或winme以后的系统要的吧。。。(为了兼容???)



ko20010214
=================================
大功告成,打个Kiss!
ko20010214@MSN.com
神州优雅Q300C
Intel CeleronM 370处理器 | 256MbDDR内存
40G硬盘 | USB2.0 | IEEE 1394
13.3 ' WXGA 宽屏(16:10) | COMBO光驱
10/100M网卡 | 四合一读卡器
2002-11-11 00:00
查看资料  发送邮件  发短消息 网志  OICQ (16959102)  编辑帖子  回复  引用回复
copy114
初级用户




积分 229
发帖 37
注册 2002-11-9
状态 离线
『第 9 楼』:  

我明白了,谢谢版主的细心教导,我也学会不少东西了,不过还请版主也帮我解释一下那个config.sys的具体命令内容吧,麻烦你了,

DEVICE=UMBPCI.SYS
DEVICE=HIRAM.EXE
DEVICEHIGH=HIMEM.SYS /TESTMEM:OFF
DEVICEHIGH=VIDE-CDD.SYS /D:MSCD001  >>加载光驱驱动
DEVICEHIGH=CLOAKING.EXE
DOS=HIGH,UMB,AUTO
SHELL=COMMAND.COM /P /E:2048 /U:128 /L:256
FILESHIGH=30
BUFFERSHIGH=30,0
STACKSHIGH=9,256
LASTDRIVEHIGH=Z    我只知道这个是定义最后一个盘符是Z盘。其它的也不那么懂啊。请指教

2002-11-11 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
ko20010214
版主




积分 7294
发帖 1628
注册 2002-10-16
状态 离线
『第 10 楼』:  

SHELL=COMMAND.COM /P /E:2048 /U:128 /L:256
这一句难点。其它的wengier的网站里的DOS文章里有提到。
你可以在DOS下键入command/?获得帮助。实在不行,你可以去看我的《如何获得dos命令的帮助》一文来学会怎么获得dos命令的帮助!



ko20010214
=================================
大功告成,打个Kiss!
ko20010214@MSN.com
神州优雅Q300C
Intel CeleronM 370处理器 | 256MbDDR内存
40G硬盘 | USB2.0 | IEEE 1394
13.3 ' WXGA 宽屏(16:10) | COMBO光驱
10/100M网卡 | 四合一读卡器
2002-11-12 00:00
查看资料  发送邮件  发短消息 网志  OICQ (16959102)  编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: