在今天的文章里,我來介紹一下兩個來自ports collection的工具,它們用于操作MS-Dos文件系統(tǒng)上的數(shù)據(jù)。在mtools中的一套DOS風(fēng)格的命令行工具可以操作軟盤上的MS-DOS數(shù)據(jù),你硬盤上的其它分區(qū),Jaz和Zip驅(qū)動器。程序mfm提供了一個漂亮的GUI圖形界面以訪問軟盤上的MS-DOS數(shù)據(jù),并可以在你的宿主目錄和MS-DOS格式化過的軟盤間快速地傳送數(shù)據(jù)。
這兩個工具的優(yōu)點是可以讓用戶透明地訪問這些數(shù)據(jù)而無需事先裝載文件系統(tǒng)。如果你還記得裝載其它文件系統(tǒng)這篇文章里的內(nèi)容,那么應(yīng)該知道只有超級用戶可以裝載文件系統(tǒng)。如果你是個管理員或者使用FreeBSD系統(tǒng)的家庭成員,那么不會出現(xiàn)在有人想訪問軟件數(shù)據(jù)時搶著裝載文件系統(tǒng)的情況。但是,作為一個新用戶,你可能會在取出軟件之前忘了卸載文件系統(tǒng);如果你曾經(jīng)有這樣的經(jīng)歷,你會發(fā)現(xiàn)FreeBSD會驚慌,重啟或者在你這樣做時向你給出討厭的錯誤信息。
所以,讓我們還是創(chuàng)建這些工具并查看一下如何使用吧。要創(chuàng)建它們有兩個方法:預(yù)編譯安裝包或移植port。我會以port方式創(chuàng)建mtools,并以安裝包方式安裝mfm來示范這兩種方法。先成為超級用戶,確保已經(jīng)聯(lián)入Internet,并進入mtools的port目錄進行編譯:
su
PassWord:
cd /usr/ports/emulators/mtools
make && make install
一旦編譯完成,打開你***喜愛的web瀏覽器并聯(lián)到http://www.freebsd.org/x11-fm.HTML。往下翻到mfm-1.5,把安裝包保存到硬盤上的某個目錄中;我已經(jīng)在系統(tǒng)上建好一個目錄/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。
如果你以前曾經(jīng)用過DOS的話,就會覺得其中有很多程序名很熟悉的;******的區(qū)別只是它們都是字母m開頭。每個工具都有相關(guān)的手冊頁,所以你可以看一下它們的語法。手冊頁的第1和第5部分有mtools本身的信息。
讓我們來看一下如果鍵入mcd會發(fā)生什么:
mcd
A:/
這看起來還不錯,因為這是MS-DOS的提示符用來表示你的軟驅(qū)。有經(jīng)驗的DOS用戶會注意到那個斜杠用Unix風(fēng)格替代了DOS風(fēng)格。現(xiàn)在來看看是否可以用mdir命令查看軟盤上的內(nèi)容:
mdir
fd0c: hard error reading fsbn 0 (No status)
plain_io: Input/output error
init A: could not read boot sector
Cannot initialize 'A:'
哦,我太心急了,都忘了在軟驅(qū)里插張盤了。幸運的是,mdir會在試圖訪問盤上數(shù)據(jù)前作仔細檢查的。好,現(xiàn)在插張盤再試一下:
mdir
Can't open /dev/rfd0: Permission denIEd
Cannot initialize 'A:'
在被權(quán)限問題搞得頭暈之前,先來檢查一下mtools的配置文件看它需要什么。如果你鍵入:
man 5 mtools
你將發(fā)現(xiàn)配置文件的名稱是mtools.conf,而且它位于/usr/local/etc中。現(xiàn)在看一下誰有該文件的訪問權(quán)限并更改一下:
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
看起來任何人都有讀此文件,但只有超級用戶才能更改內(nèi)容。(忘了權(quán)限的含義?)讓我們先來讀一下這個文件:
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"
看來我們需要讓所有的用戶都有訪問軟驅(qū)的權(quán)限;幸運的是,指出FreeBSD軟驅(qū)設(shè)備的那些行已經(jīng)為我們?nèi)サ袅俗⑨專晕覀儫o需對此配置文件作任何更改。
現(xiàn)在看一下/dev/rfd0的權(quán)限情況,因為它被mtools看作是“A:”:
ls -l /dev/rfd0
crw-r----- 18 root operator 9, 0 Oct 3 08:51 /dev/rfd0
看來這就是問題所在。因為mtools.conf規(guī)定,用戶需要rw讀寫權(quán)限來訪問該設(shè)備,但現(xiàn)在用戶只有r讀。由于該文件屬于root,我們必需成為超級用戶才能更改它的權(quán)限;因為我只有一個軟驅(qū),所以就對這個設(shè)備加入了rw權(quán)限:
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命令;你應(yīng)該可以看到軟盤上的內(nèi)容了。
讓我們再假設(shè)一些東西。我在自己的硬盤的起始部分有一個FAT分區(qū);讓我們來看一下mtools是否能訪問它。在mtools.conf中有一些行是關(guān)于硬盤的:
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了。這樣我需要變?yōu)槌売脩舨⒕庉嬕幌聞偛抛x到的行:
drive c: file="/dev/rad0s1"
^
當現(xiàn)在是超級用戶時,我還要檢查一下該設(shè)備的權(quán)限情況:
ls -l /dev/rad0s1
crw-r----- 1 root operator 116, 0x00020002 Oct 4 15:58 rad0s1
并更改一下以使用戶可以訪問C:盤:
chmod a+rw /dev/rad0s1
然后,作為一個普通用戶,來看一五我是否能訪問A:盤和C:盤上的數(shù)據(jù):
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
現(xiàn)在,我知道在我的C:盤上有一些隱藏文件;如果看一下man dir的話,會知道-a開關(guān)能顯示隱藏文件。讓我們再試一下:
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系統(tǒng)下把NT引導(dǎo)分區(qū)上的文件傳送到軟盤上真是非常棒啊。我還可以容易地把文件發(fā)回來,甚至在FreeBSD和C:盤或A:盤之間也可以。
關(guān)于mtools還要注意一點,它提供了DOS風(fēng)格的工具,DOS的功能是相當有限的。例如,我就不能閱讀軟盤上的cisco.doc文件,因為DOS不能識別“doc”擴展名。如果你同時在A:盤和C:盤上工作,就必需象這樣在它們之間用mcd切換:
mcd a: 查看和操作A:盤上的數(shù)據(jù)
mcd c: 查看和操作C:盤上的數(shù)據(jù)
另外,確保你只試圖訪問MS-DOS文件系統(tǒng);也就是說,不要嘗試查看用Unix文件系統(tǒng)格式化的軟盤上的內(nèi)容。
現(xiàn)在來看一下mfm。這個工具用起來很簡單,因為它有個直觀的界面;不過它的功能比mtools更有限,因為它只有用于訪問軟盤上的MS-DOS數(shù)據(jù)。讓我們來看一下它安裝到哪兒去了:
whereis -b mfm
mfm: /usr/X11R6/bin/mfm
因為它是個GUI,你必需在XWindows中運行它。我在XFCE工具條上建了個快捷方式。如果你還不知道如何在窗口管理器中建立快捷方式的話,打開一個xterm并鍵入帶路徑的mfm。(mfm的一個抓圖鏈接)
當它打開時,你會看到一個帶有兩個面板的窗口;缺省情況下,這兩個面板都會顯示你宿主目錄的內(nèi)容。目錄有一個文件夾圖標,而它的名稱和屬性以藍色顯示。文件的圖標看起來象一張紙,而它的屬性以黑色顯示。如果用鼠標點擊Options菜單,可以選“Show dot files”以顯示隱藏文件。
現(xiàn)在插入你的軟盤;在其中一個面板頂部的菜單條上點擊箭頭并選a:,你會看到軟盤上的內(nèi)容。通過選擇軟盤上的一個文件并點擊Copy按鈕就可以把該文件拷到宿主目錄里了。或者點擊宿主目錄里的一個文件就可以快速地把它拷到軟盤上了。
在面板上點周File菜單,你會看到刪除、換名、打印和選擇文件的選項。用這個菜單還可以建立一個新目錄。如果取出了那張盤插一張新的話,用View菜單的刷新選項查看新盤上的內(nèi)容。
雖然功能有限,mfm仍然是以可視化操作宿主目錄內(nèi)容的***快方法。我還發(fā)現(xiàn)它是在軟盤和宿主目錄間發(fā)送文件***簡單的方法。