分享
 
 
 

FreeBSD下如何访问MS-DOS文件系统

王朝system·作者佚名  2006-11-23
窄屏简体版  字體: |||超大  

在今天的文章里,我来介绍一下两个来自ports collection的工具,它们用于操作MS-DOS文件系统上的数据。在mtools中的一套DOS风格的命令行工具可以操作软盘上的MS-DOS数据,你硬盘上的其它分区,Jaz和Zip驱动器。程序mfm提供了一个漂亮的GUI图形界面以访问软盘上的MS-DOS数据,并可以在你的宿主目录和MS-DOS格式化过的软盘间快速地传送数据。

这两个工具的优点是可以让用户透明地访问这些数据而无需事先装载文件系统。如果你还记得装载其它文件系统这篇文章里的内容,那么应该知道只有超级用户可以装载文件系统。如果你是个管理员或者使用FreeBSD系统的家庭成员,那么不会出现在有人想访问软件数据时抢着装载文件系统的情况。但是,作为一个新用户,你可能会在取出软件之前忘了卸载文件系统;如果你曾经有这样的经历,你会发现FreeBSD会惊慌,重启或者在你这样做时向你给出讨厌的错误信息。

所以,让我们还是创建这些工具并查看一下如何使用吧。要创建它们有两个方法:预编译安装包或移植port。我会以port方式创建mtools,并以安装包方式安装mfm来示范这两种方法。先成为超级用户,确保已经联入Internet,并进入mtools的port目录进行编译:

su

Password:

cd /usr/ports/emulators/mtools

make && make install

一旦编译完成,打开你最喜爱的web浏览器并联到http://www.freebsd.org/x11-fm.html。往下翻到mfm-1.5,把安装包保存到硬盘上的某个目录中;我已经在系统上建好一个目录/usr/packages用于此目的。当下载完成后:

cd /usr/packages

pkg_add mfm*

当安装好后,用exit退出超级用户账号。如果你正在用C shell,请用rehash命令使命令解释器知道有新的程序了。

让我们来看一下mtools。如果你键入它的名称,它会给出一份你可以使用的工具列表:

mtools

支持的命令有:mattrib、mbadblocks、mcat、mcd、mcopy、mdel、mdeltree、mdir、mdoctorfat、mdu、 mformat、minfo、mlabel、mmd、mmount、mpartition、mrd、mread、mmove、mren、mshowfat、 mtoolstest、mtype、mwrite、mzip。

如果你以前曾经用过DOS的话,就会觉得其中有很多程序名很熟悉的;唯一的区别只是它们都是字母m开头。每个工具都有相关的手册页,所以你可以看一下它们的语法。手册页的第1和第5部分有mtools本身的信息。

让我们来看一下如果键入mcd会发生什么:

mcd

A:/

这看起来还不错,因为这是MS-DOS的提示符用来表示你的软驱。有经验的DOS用户会注意到那个斜杠用Unix风格替代了DOS风格。现在来看看是否可以用mdir命令查看软盘上的内容:

mdir

fd0c: hard error reading fsbn 0 (No status)

plain_io: Input/output error

init A: could not read boot sector

Cannot initialize 'A:'

哦,我太心急了,都忘了在软驱里插张盘了。幸运的是,mdir会在试图访问盘上数据前作仔细检查的。好,现在插张盘再试一下:

mdir

Can't open /dev/rfd0: Permission denied

Cannot initialize 'A:'

在被权限问题搞得头晕之前,先来检查一下mtools的配置文件看它需要什么。如果你键入:

man 5 mtools

你将发现配置文件的名称是mtools.conf,而且它位于/usr/local/etc中。现在看一下谁有该文件的访问权限并更改一下:

ls -l /usr/local/etc

drwxr-xr-x 9 root wheel 1024 Dec 2 11:57 .

-r--r--r-- 1 root wheel 4441 Dec 2 11:50 mtools.conf

看起来任何人都有读此文件,但只有超级用户才能更改内容。(忘了权限的含义?)让我们先来读一下这个文件:

more /usr/local/etc/mtools.conf

# Example mtools.conf files. Uncomment the lines which correspond to

# your architecture and comment out the "SAMPLE FILE" line below

#

# A note on permissions: a user must have read and

# write permissions for the devices named here in

# order to access the DOS file systems. You might

# give ALL USERS access to ALL FLOPPY DISKS via

#the command

#

# chmod a+rw /dev/*fd* /dev/rfd[0-9]*

#

# # FreeBSD floppy drives

drive a: file="/dev/rfd0"

drive b: file="/dev/rfd1"

看来我们需要让所有的用户都有访问软驱的权限;幸运的是,指出FreeBSD软驱设备的那些行已经为我们去掉了注释,所以我们无需对此配置文件作任何更改。

现在看一下/dev/rfd0的权限情况,因为它被mtools看作是“A:”:

ls -l /dev/rfd0

crw-r----- 18 root operator 9, 0 Oct 3 08:51 /dev/rfd0

看来这就是问题所在。因为mtools.conf规定,用户需要rw读写权限来访问该设备,但现在用户只有r读。由于该文件属于root,我们必需成为超级用户才能更改它的权限;因为我只有一个软驱,所以就对这个设备加入了rw权限:

su

Password:

chmod a+rw /dev/rfd0

ls -l /dev/rfd0

crw-rw-rw- 18 root operator 9, 0 Oct 3 08:51 /dev/rfd0

离开超级用户账号并以普通用户身份再试一下mdir命令;你应该可以看到软盘上的内容了。

让我们再假设一些东西。我在自己的硬盘的起始部分有一个FAT分区;让我们来看一下mtools是否能访问它。在mtools.conf中有一些行是关于硬盘的:

more /usr/local/etc/mtools.conf

# IDE hard disks

# first disk on the first IDE

# interface (wd0) slice 1 (s1)

drive c: file="/dev/rwd0s1"

由于我使用的FreeBSD版本高于4.0,所以其第一个IDE接口实际称为ad0而不是wd0了。这样我需要变为超级用户并编辑一下刚才读到的行:

drive c: file="/dev/rad0s1"

^

当现在是超级用户时,我还要检查一下该设备的权限情况:

ls -l /dev/rad0s1

crw-r----- 1 root operator 116, 0x00020002 Oct 4 15:58 rad0s1

并更改一下以使用户可以访问C:盘:

chmod a+rw /dev/rad0s1

然后,作为一个普通用户,来看一五我是否能访问A:盘和C:盘上的数据:

mcd a:

mdir

Volume in drive A has no label

Volume Serial Number is 3505-18E3

Directory for A:/

dru3 txt 2846 11-28-2000 21:46

inetdc~1 txt 13669 10-05-2000 21:22 inetd.conf.txt

cisco doc 10752 11-13-2000 18:07

3 files 27 267 bytes

1 428 698 bytes free

mcd c:

mdir

Volume in drive C has no label

Volume Serial Number is 39D0-A67B

Directory for C:/

bootsect bsd 512 10-04-2000 15:22

confer~1 11-01-2000 20:39 conferencing server

sybex 11-10-2000 20:18 Sybex

3 files 512 bytes

492 470 272 bytes free

现在,我知道在我的C:盘上有一些隐藏文件;如果看一下man dir的话,会知道-a开关能显示隐藏文件。让我们再试一下:

mdir -a

Volume in drive C has no label

Volume Serial Number is 39D0-A67B

Directory for C:/

bootsect dos 512 10-04-2000 15:33

config sys 0 10-04-2000 15:40

autoexec bat 0 10-04-2000 15:40

io sys 0 10-04-2000 15:40

msdos sys 0 10-04-2000 15:40

bootsect bsd 512 10-04-2000 15:22

msdownld tmp 10-04-2000 16:10

confer~1 11-01-2000 20:39 conferencing server

recycled 11-01-2000 21:01 Recycled

sybex 11-10-2000 20:18 Sybex

arcldr exe 148992 12-07-1999 12:00

arcsetup exe 162816 12-07-1999 12:00

ntldr 214416 12-07-1999 12:00

ntdetect com 34468 11-25-2000 21:45

boot ini 214 11-25-2000 20:00

pagefile sys 104857600 11-25-2000 19:51

16 files 105 419 530 bytes

492 470 272 bytes free

再看一下我是否可以读取其中一个文件:

mtype boot.ini

[boot loader]

timeout=30

default=multi(0)disk(0)rdisk(0)partition(3)\WINNT

[operating systems]

multi(0)disk(0)rdisk(0)partition(3)\WINNT="Microsoft

Windows 2000 Server" /fastdetect

C:\bootsect.bsd="FreeBSD"

那么我是否能把该文件拷到我的软盘上呢:

mcopy boot.ini a:

我的软盘一阵颠簸,这是个好信号。来检查一下是否正确:

mdir a:

Volume in drive A has no label

Volume Serial Number is 3505-18E3

Directory for A:/

dru3 txt 2846 11-28-2000 21:46

inetdc~1 txt 13669 10-05-2000 21:22 inetd.conf.txt

boot ini 214 12-03-2000 11:25 boot.ini

cisco doc 10752 11-13-2000 18:07

4 files 27 481 bytes

1 428 484 bytes free

在FreeBSD系统下把NT引导分区上的文件传送到软盘上真是非常棒啊。我还可以容易地把文件发回来,甚至在FreeBSD和C:盘或A:盘之间也可以。

关于mtools还要注意一点,它提供了DOS风格的工具,DOS的功能是相当有限的。例如,我就不能阅读软盘上的cisco.doc文件,因为DOS不能识别“doc”扩展名。如果你同时在A:盘和C:盘上工作,就必需象这样在它们之间用mcd切换:

mcd a: 查看和操作A:盘上的数据

mcd c: 查看和操作C:盘上的数据

另外,确保你只试图访问MS-DOS文件系统;也就是说,不要尝试查看用Unix文件系统格式化的软盘上的内容。

现在来看一下mfm。这个工具用起来很简单,因为它有个直观的界面;不过它的功能比mtools更有限,因为它只有用于访问软盘上的MS-DOS数据。让我们来看一下它安装到哪儿去了:

whereis -b mfm

mfm: /usr/X11R6/bin/mfm

因为它是个GUI,你必需在XWindows中运行它。我在XFCE工具条上建了个快捷方式。如果你还不知道如何在窗口管理器中建立快捷方式的话,打开一个xterm并键入带路径的mfm。(mfm的一个抓图链接)

当它打开时,你会看到一个带有两个面板的窗口;缺省情况下,这两个面板都会显示你宿主目录的内容。目录有一个文件夹图标,而它的名称和属性以蓝色显示。文件的图标看起来象一张纸,而它的属性以黑色显示。如果用鼠标点击Options菜单,可以选“Show dot files”以显示隐藏文件。

现在插入你的软盘;在其中一个面板顶部的菜单条上点击箭头并选a:,你会看到软盘上的内容。通过选择软盘上的一个文件并点击Copy按钮就可以把该文件拷到宿主目录里了。或者点击宿主目录里的一个文件就可以快速地把它拷到软盘上了。

在面板上点周File菜单,你会看到删除、换名、打印和选择文件的选项。用这个菜单还可以建立一个新目录。如果取出了那张盘插一张新的话,用View菜单的刷新选项查看新盘上的内容。

虽然功能有限,mfm仍然是以可视化操作宿主目录内容的最快方法。我还发现它是在软盘和宿主目录间发送文件最简单的方法。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有