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

2008-02-23 08:03:01来源:互联网 阅读 ()

新老客户大回馈,云服务器低至5折

Dru Lavigne
12/13/2000


在今天的文章里,我来介绍一下两个来自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:盘上的数据:

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:在FreeBSD 4.0下安装USB鼠标支持

下一篇:FreeBSD如何保存和使用内核更改信息?