Linux和Windows 9X的资源共享
蓝森林 http://www.lslnet.com 2000年2月26日 11:09
作 者: 林朝阳
Linux以其稳定和高效赢得了不少人的青睐,可是在目前,Linux下的中文支持软件,尤其是和MicroSoft Office一样好用的中文办公软件还是偏少。不过这种情况估计很快就会大有改观,市场上已经出现了两套中文Linux系统,一套是国内行天海公司出的Xteam Linux,包括一张光盘和一本手册,优惠售价大约是58元;另一套是太平洋高科技公司(Pacific HighTech,http://www.pht.com或http://www.turbolinux.com)出的Turbo Linux 3.02中文版,笔者目前还没有看到销售的,但可以从国内很多FTP服务器下载。此外,4月19日出版的《微电脑世界》周刊同时赠送一张TurboLinux光盘,价格仅仅6元!还包括了一本杂志!那一期《微电脑世界》发行后,在北京街头的报刊零售市场引起了类似\"洛阳纸贵\"的现象,据摊主说,有人一买就是七、八本,因此很快就卖光了。笔者本人在一个多月前就试用过从网络上下载的TurboLinux 3.02测试版,感觉就象以前用英文Windows时有了带新拼音的中文之星一样爽!但总的而言,由于Linux下中文支持还远远不能说完美,因此现在不少玩家的解决办法是双管齐下:在自己的硬盘上既安装了Linux,也安装了Windows 9X(或者DOS,:-)),笔者就是这些玩家中的普通一员。
既然\"鸡兔共笼\",笔者现在谈谈如何让Linux和Windows 9X共享硬盘资源的问题。以下是笔者的系统配置情况。
硬件配置:联讯EXP8661主板,64M EDO内存,Intel Pentium 200 CPU(无MMX,是用166超频得到的),IBM 6.4G DeskStar硬盘(接在IDE1的Master上)+Quantum 1.7G沙漠风暴硬盘(接在IDE2的Master上),8倍速维用光驱(接在IDE2的Slave上),NE2000兼容ISA网卡,ESS1868 PnP声卡,联讯DSV3365E显示卡(S3 765芯片,2M显存)。
软件配置:MicroSoft Windows 98英文版安装在C盘(/dev/hda1,FAT16),系统中D盘(/dev/hda5)是数据盘,采用了FAT32分区,RedHat Linux 5.2安装在/dev/hda6,DOS的E盘(在1.7G硬盘的扩展分区上,采用FAT32文件系统,1.7G硬盘只分了扩展分区。/dev/hdc5)也是数据盘,Turbo Linux 3.02中文版安装在/dev/hdc6,两个Linux的SWAP分区是共用的,在/dev/hda7上(大约96M)。二者内核均升级到了最新的2.2.9。F是Windows下的光驱盘符。
一 Linux下共享Windows 9X的资源
Linux下面读写Windows 9X/Windows 3.X/DOS的逻辑盘是相当容易的,无需安装任何其他软件,Linux自身就带有mount命令。读写前只要Mount上相应的分区就可以了。
假设在TurboLinux下要使用上述系统中Windows 98的某个文件,则只要以root身份运行以下命令:
#mount /dev/hda1 /mnt
位于Linux根目录下面的/mnt默认应该是空的,当然你也可以建立其他的空目录如DOS_D之类来方便挂接其他设备。RedHat5.2和Turbo Linux3.02的内核均是2.0.36稳定内核,不过TurboLinux使用的是Final版,而RedHat使用的是Pre-0.7。不过这两个内核均已经支持FAT32分区和Windows下的长文件名。mount后进入/mnt目录,就可以读写DOS的C盘中的任何内容了。不过读者会发现,这样做没有长文件名。如果想在Linux下mount Windows分区后看到长文件名,需要额外指定一下分区或文件系统类型,即运行以root运行mount -t vfat /dev/hda1 /mnt命令(如果你刚刚已经mount了,请先运行umount将其卸载再mount。实际上,mount时应该指定分区类型的,不过现在的Linux也越来越傻瓜化了。),这样就可以看到长文件名了。mount后,我们可以开始安装在Windows下面下载的Linux软件,也可以用Linux下面的GTK see来看看Windows盘中的图形图象……,由于是可读可写的,因此几乎可以\"为所欲为\"。假设Linux分区中剩余空间少,而Windows中剩余空间还有一大堆,则我们可以将需要下载的大文件下载到Windows的分区中,然后再安装/使用。
如果在Linux下面用vi编辑一个DOS/Windows下的文本文件如CONFIG.SYS,可以发现在文件的每一行的最后面都有一个^M。这也是Linux下面的Enter和DOS/Windows下按Enter的不同之处。DOS下的Enter/Return不但换行,而且回车(Carriage Return,即光标回到最前面),而Linux下面的Enter只是换行。熟悉vi的玩家应该很容易就解决这个问题,只要做一下全程的替换就行了。除此以外,还有fromdos之类的命令可以处理这个问题。
如果你的内核是2.0.34(RedHat Linux 5.1所带的内核),则应该是不支持FAT32的,但是如果你的Windows/DOS所在的硬盘采用的是FAT16格式,则仍然可以用-t msdos方式进行mount,不过会丧失诸如长文件名等一些功能。要改进也很容易,只要自己编译一个高版本的内核即可。对熟手来说,编译内核相当简单,在这里就不多说了。(顺便说一句,Linux下面要检验除显示方面以外的硬件的稳定程度,最好的办法就是编译内核。如果你的系统连续编译内核20次毫无问题,可以认为是稳如磐石的。)
假如经常要在Linux下面使用DOS分区的内容,最好让Linux启动后自动将相应的分区mount上,只要修改/etc/fstab即可达到这个效果,下面是笔者某台Linux/Windows系统中Linux的/etc/fstab文件的内容,其中最后两行是笔者增加的,启动后,系统将自动mount Windows 9X的D盘和E盘。
# cat /etc/fstab
/dev/hda3 / ext2 defaults 1 1
/dev/hda2 swap swap defaults 0 0
/dev/fd0 /mnt/floppy ext2 noauto 0 0
none /proc proc defaults 0 0
/dev/hda5 /dos_d vfat defauts 1 1
/dev/hda6 /dos_e vfat defauts 1 1
顺便说一句,在Linux下面,不但可以读写DOS/Windows 3.X/Windows 9X分区,还可以读Windows NT的NTFS分区。不过目前对NTFS分区还只能读,不能写(如果你大胆,也可以试试写,编译2.2.X的内核时有选项--尽管它不推荐,且说这很危险。)
二 如何在Windows系统中使用Linux分区的资源
目前在Windows 9X系统中使用Linux的ext2分区的内容还只限于只读,且需要安装额外的软件。笔者安装的是fsdext2,它是基于GPL版权的,可以从http://www.globalxs.nl/home/p/pvs下载最新版本,作者的Email地址是[email protected]。国内许多有Linux资源的ftp服务器上都有这个软件,一般在LetWindowsReadLinux或WorkWithOtherOS之类的目录里面。这个软件相当小,安装使用也极其方便。
1 安装:
从网上下载的应该是一个zip文件,用unzip/pkunzip或winzip将其解压到一个目录内(如c:\\mntlinux目录。用命令行的解压命令时,不要忘记加上\"-d\"参数以便恢复目录结构),然后进入此目录,运行里面的intall.bat即可完成安装。打开install.bat可以发现,install过程只是简单拷贝vext2d.vxd 到 win9X的system目录,拷贝tsdext2.vxd 到win9X的system\\iosusbsys 目录。为使用方便,最好在autoexec.bat中将c:\\mntlinux加入搜索路径中。然后只要将系统再重新启动一次就可以使用了。
2 使用:
假设笔者要在Windows 98中使用RedHat Linux分区下的内容,则只要在运行以下命令即可:mount /dev/hda6 h:
此时打开My Computer(我的计算机), 或者按一下F5对此进行刷新,我们可以看到F盘后面多了一个盘符H,这就是RedHat Linux分区的内容。用explorer打开看看,所有的文件都历历在目,甚至包括平时只有root 才能读写的/etc/shadow文件(想不想偷偷拷贝下来passwd和shadow文件,然后找台机器算算密码?)。不过要记住,目前fsdext2对Linux分区还只是只读的,不能改写Linux分区中文件的内容,也不能往Linux分区中加入其他文件。
运行mount命令时,也可以不指定盘符,此时系统会自动找第一个空余的盘符,在笔者的系统中,此时RedHat Linux分区将被mount为G盘。
如何使用TurboLinux所在的分区的内容呢?读者可能很快想到命令行应该是mount /dev/hdc6,可是如此运行以后,我们会发现fsdext2提示一个错误:
Ext2 file system mount for Windows 95
Version 0.17 by Peter van Sebille
No drive specified, trying drive H:
Error, device is not a linux partition
重新刷新My COmputer或explorer也不能发现新的盘符。怎么回事?原来目前fsdext2还不能分辨IDE盘在哪个IDE控制器上,它只是根据Windows 9X内核中的管理方式进行管理。因此,虽然Linux将上述两个物理硬盘称做/dev/hda和/dev/hdc,但是fsdext2将它们分别叫做/dev/hda和/dev/hdb,mount 上述系统的TurboLinux 分区时必须将命令行改为mount /dev/hdb6 。此时刷新后就可以读TL分区的内容了。
如果想要卸载(umount),也很容易,只要在命令行上运行mount /u g:或mount g /u就可以将G盘卸载掉。如果提示出错,则看看是否打开了G盘中的文件,或者当前某个DOS窗口在还G盘的某个目录内,总而言之,此时需要卸载的盘不能处于\"忙\"的状态。检查一下,修正错误后可以立即再umount。
如果你想帮助软件作者改正错误,你还可以使用fsdext2的debug版。其安装和使用参见里面的faq即可,也相当简单。笔者发现mount Linux光驱后,读写软驱和读光盘可能有一些问题。
有了上述工具,我们再也没有必要将一套数据重复放到Linux分区和Windows分区了,玩Linux和Windows就可以更爽了。
——摘自:http://www.pcworld.com.cn/99/script/9907/072601a.asp发布人:netbull 来自:蓝森林