中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
作者:
标题: 光盘上运行的Pwin98se 上一主题 | 下一主题
minisheep
高级用户




积分 830
发帖 233
注册 2002-11-29
状态 离线
『楼 主』:  光盘上运行的Pwin98se

Booting Windows From CD-ROM
Windows无法从光盘启动的原因是启动时Windows会报告无法访问注册表。本文将解释如何消除这些错误并优化光盘启动。

制作一张可启动的Windows光盘,需要至少500M磁盘空间,一些自由软件。并且需要了解一些DOS命令。

本文所介绍的方法只可用于Windows 95b以上的系统和Windows 98,不可用于NT和2000的启动光盘。

实际上所有的问题就是处理Windows对磁盘的写访问。考虑两个问题:其一,注册表位于光盘的系统可以正常启动并运行。其二,将注册表置于RAM盘。RAM盘是主存的一部分并被模拟成一个硬盘。其中的窍门是只需要拷贝注册表文件到RAM盘,因此该RAM盘只需4M左右的内存空间。所有启动时无需写访问的文件都留在光盘上。用这种方法,在没有硬盘的情况下注册表将也可以被写访问。

开始安装Windows之前,需要制作一张启动盘,并且将Win98的安装目录拷贝到硬盘上,这将加速安装的过程。

然后需要创建一些目录:
c:\w 将用于光盘的启动镜像
c:\cdrom 将作为光盘的目录
c:\cdrom\ramdisk 用于存放光盘启动时讲被拷贝至RAM盘的文件
c:\cdrom\ramdisk\w 作为RAM盘的Windows目录
c:\backup 将msdos.sys, io.sys, config.sys, autoexec.bat拷入,用于当前系统的备份

将下列文件拷入c:\w
dblbuff.sys, himen.sys, ifshlp.sys, setver.exe(位于windows目录)
attrib.exe, keyb.com, keyboard.sys, mscdex.exe, subst.exe, xcopy.exe, xcopy32.exe, xcopy32.mod
(位于windows\command目录)
DOS下的光驱驱动,RAM驱动(ramdrive.sys是不合适的,因为不能为它指定盘符,可以使用xmsdsk.exe,可以从【1】免费下载,如果使用了别的驱动,需要修改autoexec.bat中的配置)

重装windows之前必须删除c:\config.sys和c:\autoexec.bat,并且创建一个新的autoexec.bat,加入下列配置:
c:\w\subst.exe x: c:\cdrom
path c:\;c:\w

因为系统将要从光盘运行,而光盘只能分配未被分配的盘符,因此系统必须被安装在后面的驱动器上。这对于使注册表与盘符独立很重要。因此使用subst命令将你安装windows的目录映射为一个虚拟的盘符,autoexec.bat中的第一行将c:\cdrom映射到x:盘。

为了防止现存的系统被覆盖,需要重命名硬盘上所有的win.com和system.ini文件,另外也包括system.dat。因为windows启动时若无法在系统目录下找到这些文件,系统将自动在所有分区上寻找system.dat这将可能影响其他系统。

现在开始安装windows。运行setup.exe,它将报告subst.exe已经被加载。忽略这个信息,按esc拒绝程序的建议继续安装。并且使用x:\w作为安装路径。安装时的第一次重启必须从先前制作的软盘启动,忽略取走软驱的提示。从软盘启动后编辑c:\config.sys,加入如下配置,其中ifshlp.sys用于支持VFAT文件系统:
devicehigh=c:\w\himem.sys
devicehigh=c:\w\ifshlp.sys
devicehigh=c:\w\dblbuff.sys
devicehigh=c:\w\setver.exe

同样再编辑c:\autoexec.bat,加入以下配置:
c:\w\subst.exe x: c:\cdrom
path c:\w;x:\w;x:\w\command;x:\w\system

取走软盘,按ctrl-alt-del重启并且完成安装。至此,你可以在这个系统上安装一些必须的驱动和应用程序,这些最终都将放入光盘,比如声卡和显卡驱动。为了使稍后的安装更为简便,你需要安装TweadUI工具。在windows98中你可以在\tools\reskit\powertoy目录中找到,windows95版本可以在【2】免费下载。

现在来为注册表准备RAM盘,依旧使用subst命令,在c:\autoexec.bat中加入下面这行:
c:\w\subst.exe w: c:\cdrom\ramdisk

windows将在启动分区的\msdos.sys中寻找注册表文件的位置,所以需要修改它。这个文件具有系统属性,用attrib msdos.sys -s -h -r命令去掉它的系统,隐藏,只读属性。然后可以修改它的前四行如下:
[Paths]
WinDir=w:\w
WinBootDir=w:\w
HostWinBootDrv=w

编辑msdos.sys时需要加入以下这行:
DisableLog=1
注意如果已经包含一行DisableLog=0则只需将0改为1即可。

如上述,为了防止光盘启动时系统读取硬盘上的system.dat,注册表文件必须被改名。它的名字包含在c:\io.sys中,使用16进制编辑器修改它,搜索所有的system.dat字符串,将它改为system.tat。这个改动将确保只有system.tat将被认为是系统的注册表文件,而system.dat将被忽略。
在windows95系统中推荐进行这个修改,而在windows98中需要考虑更多的问题:注册表文件名并非只在io.sys中指出,在一些启动时运行的应用程序中也将自动检测这个注册表文件,如果做了这个改动,你可能在每次启动时都面临注册表错误的信息。而且scanregw.exe在启动时必须被禁止,可以使用msconfig.exe来禁止它。

为了使接下来的一次重启更为安全,将start menu从c:\cdrom\w拷贝至c:\cdrom\ramdisk\w

然后关闭windows至命令行状态,将system.dat, system.ini, user.dat, win.ini从c:\cdrom\w拷贝至c:\cdrom\ramdisk\w,若你按上述方法修改了io.sys,此时需要将system.dat改名为system.tat

当再次重启windows时将使用w:盘中的注册表。然而,系统启动时不仅要写访问注册表文件,而且要写访问系统目录。因此从光盘启动系统后系统目录必须改为RAM盘的路径,这个位置在注册表中由以下键值指出,使用regedit.exe修改这个键值为'w:\w':
HKLM\Software\Microsoft\Windows\CurrentVersion

目前start menu驻留在RAM盘上(由subst命令模拟的),但它占用了不需要的空间,因此你需要将其移回光盘:从system controls目录启动TweakUI,选择'General'并且并且调整'Special Folders'的入口,将'Programs', 'Start Menu', 'Startup'改为'x:\w\startmenu'和各自的子目录。在windows98中同时需要调整'Desktop'目录的入口至'x:\w\Desktop',重启后w:\w\Start Menu目录和w:\w\Desktop目录可以被删除。

接下来配置一个真实的RAM盘,再次重启至DOS,用attrib c:\cdrom\ramdisk\*.* -s -h -r /s去掉c:\cdrom\ramdisk下所有文件的系统,隐藏和只读属性。编辑c:\autoexec.bat,删除以下这行:
subst w: c:\cdrom\ramdisk
并且加入如下几行:
c:\w\xmsdsk 4000 w: /y
copy c:\command.com w:\
set COMSPEC=w:\command.com
c:\w\xcopy c:\cdrom\ramdisk\*.* w:\ /s

在启动过程中这些设置分配了4000K内存作为RAM盘,取代了先前由subst命令虚拟的RAM盘。copy命令将命令解释器和系统目录中的注册表文件拷贝至RAM盘,COMSPEC参数则指定了命令解释器的位置。

如果重启后一切运行正常,这时便可删除c:\cdrom\ramdisk\w下的所有文件,除了保留system.ini, user.dat, win.ini, control.ini, system.dat(或者system.tat,如果修改了io.sys的话)。

刻录:

刻录一张启动光盘,你需要一张启动盘活者一个启动盘的镜像文件,这取决于所使用的刻录软件。

因此,需要制作一张普通的启动盘,使用format a:/s或sys a:,复制c:\下先前修改过的io.sys, msdos.sys, config.sys, autoexec.bat至该启动盘,覆盖原来的文件,并且将整个c:\w目录拷入软盘。

现在必须修改a:\config.sys以包含正确的路径。修改的结果如下:
devicehigh=a:\w\himem.sys
devicehigh=a:\w\ifshlp.sys
devicehigh=a:\w\dblbuff.sys
devicehigh=a:\w\setver.exe
device=a:\w\aspi8dos.sys
device=a:\w\aspicd.sys /D:CD001

同样的,a:\autoexec.bat中的路径也必须修改,subst命令必须用mscdex.exe取代,最终修改如下:
a:\w\mscdex.exe /D:CD001 /L:X /M:50
a:\w\xmsdsk 4000 w: /y
copy a:\command.com w:\
set COMSPEC=w:\command.com
a:\w\xcopy x:\ramdisk\*.* w:\ /S
path w:\;x:\w;x:\w\command; x:\w\system
x:

确认mscdex.exe的数据缓冲不至于太小,/M:12的参数和一个快速的光驱,windows可能在启动是因为光驱无法以足够快的速度提供数据而死机。参数/L:X指定了光驱的盘符为x:。

恢复原系统之前你可以将io.sys, msdos.sys, config.sys, autoexec.bat从c:\备份到某一无关的目录,以备后需。并且将c:\backup中的原系统备份拷回c:\并且将先前更名的system.dat, system.ini, win.com改回原名。然后可以启动原系统进行刻录。

该光盘必须含有一个Joliet文件系统并且将c:\cdrom作为它的根目录。

以前 我 按照 这种 方法 制作 ,只要 系统 一起动
就想向cdrom 写数据, 然后 蓝平,
我 向可能 是 虚拟内存 的源因
但是 无论 我 怎样 设置 虚拟内存的位置 ,或者 禁用

虚拟内存,系统 总要 访问 我的 windows 目录下的win386.swp 文件
而在别的 机器上 ,我 很容易的就 可以调整虚拟内存的位置
所以 我的cdwin98一直 不能 成功 ,我就放弃 了
这两天我看 winpe 出来了,就又想解决这个 问题

我 仔细研究 了 我的 新的 盘上的 win98系统
发现 wininit.ini 文件 一直 存在,我很奇怪,
打开 文件 一看 ,原来 是 一条 删除 我的win386.swp 的 命令
null=x:cdwin98\win386.swp
这说明 这个命令 一直 没有 执行
我于是 恍然大屋, 就 把 ramdisk 下的 ramwin98目录下的 4个 注册表文件 和
wininit.ini 文件 拷贝 到 原来 cdwin98 目录 下
然后 restart, 结果 一切ok,原来的win386.swp 文件 不见了

我 想 可能 是 win98 刚运行的 时候 ,还是 寻找原来 目录下的一些 系统文件
比如system.ini ( 虚拟内存的 设置 由此文件 控制)


还有 就是 可以 不装 twui,

即使 装了 , 也要 手工调整 注册表
twui 的 调整 都 放在 下面的 注册表subkey 下

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders

缺省的 在
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders

直接 修改 缺省 subkey 的内容 没有用处

需要 在 User Shell Folders 增加 item 来 覆盖 缺省值



  兄弟!你好象忘了说MSdos.sys啊!!!???
我去年3月的时候用了一个多星期的时间来做光盘的Win98,就是因为
Msdos.sys的问题而告停止的!你说的到是不错,而且大部分都行的通,就是忘了Msdos.sys
该文件是配置Windows98启动磁盘和目录的,如果没有硬盘,你上面的就都白说了!  

  我正在测试,不知道行不行,况且该文中没有考虑到IE缓冲\临时目录\
虚拟内存等问题,需要更为详细地研究.  

--------------------------------------------------------------------------------
  按文中所述,到了最后一步时,重新启动,会出现IE浏览器错误,不知道如何解决!
是否可考虑卸载IE用其它的浏览器.
安装标准的 SVGA 驱动程序,并禁止系统自动检测新硬件,我想使用这样的光盘
仅是为了不时之需,尤其是做成共享时,不必安装那么多的驱动吧.这也是为了
其运行效率着想,所以可以不必安装什么专用驱动程序了,除非仅在你自己的
机器上用.  




  可以在 http://www.qualystem.com/en/download.html
下载制作光盘上运行的WIN98的工具,需要填一张表格,

Product to be tried :选择Qualystem Rescue for Win9X/ME

一分钟后你会收到一个邮件,里面包含下载地址。
再一分钟后你会收到一个邮件,里面包含安装密码(解压密码)
试用版有一个月的使用限制,制作好的光盘只能在同一台机器使用。



┃ \\\\//// ┃通缉:杨小邪 特点:贼丑
┃ (-●●-) ┃年龄:刚成年   性别:男
┃  \    /  ┃罪名:长的丑/总想见网友
┃   \︶/   ┃犯罪事实:吓死一片~
2003-4-1 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

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


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



论坛跳转: