FreeBSD最大的優勢是,在一台雙啟動計算機上,無需退出FreeBSD就能夠訪問其他操作系統分區中的數據。在FreeBSD中安裝其他分區後,讀、寫或者刪除該分區的文件是相當簡單的。也許有讀者會問,在FreeBSD中能夠執行其他分區中的可執行文件嗎?如果安裝的另外一種操作系統是微軟開發的,並且在在FreeBSD上運行有Wine(一種Windows操作系統模擬器),那就能夠在FreeBSD上運行許多Windows應用程序。
在本篇文章中,我將討論如何配置和使用Wine,在一台專門運行FreeBSD、其硬盤上不包含Windows分區的計算機上運行一些Windows軟件。
我們將從向網絡中的二台計算機上安裝Wine開始。第一台計算機可以使用Windows98和 FreeBSD 4.3雙啟動,第二台機器只安裝有FreeBSD4.3。下面我們將以超級用戶身份登錄計算機,開始安裝Wine:
su
Password:
cd /usr/ports/emulators/wine
make install clean
安裝完畢後,我們需要檢查每台機器的內核配置文件,確認它包含運行Wine所必需的所有選項。我們仍然以超級用戶的身份進行如下的檢查:
cd /usr/src/sys/i386/conf
cp GENERIC WINE
然後,使用文本編輯器打開WINE,確保其中包含下面的4個選項:
options USER_LDT
options SYSVSHM
options SYSVSEM
options SYSVMSG
在我們的FreeBSD 4.3中,3個以SYS開頭的選項已經有了,我只需要添加USER_LDT選項即可。如果添加了任何選項,則必須保存所作的修改,並執行下面的命令,新編譯操作系統內核:
/usr/sbin/config WINE
cd ../../compile/WINE
make depend && make && makeinstall && reboot
上面最後一行命令實際上包含4條獨立的命令,&&符號可以使只有上一條命令執行完畢,下一條命令才能執行。如果其中包含有reboot命令,要確保在執行期間沒有其他用戶在執行其他命令。
Wine安裝成功後,文檔被安裝在了man 1 wine和/usr/local/share/doc/wine中。對於第一次安裝Wine的用戶而言,這個文檔非常有用。
我們首先在FreeBSD 4.3和Windows 98雙啟動的計算機上運行Wine。為了在這台計算機上運行Wine,我們需要完成如下的准備工作:
1、查找並安裝Windows partition。
2、雙擊Wine的配置文件。
3、通過是否能夠運行Windows應用程序,測試Wine的配置。
由於在這台計算機上安裝FreeBSD 4.3已經有一段時間了,因此我們需要使用sysinstall再次檢查分區情況。以超級用戶身份執行下面的命令:
/stand/sysinstall
Configure
Fdisk
spacebar ad0
我們會看到如下的屏幕顯示:
Offset Size(ST) End Name PType Desc
0 63 62 - 6 unused
63 4176837 4176899 ad0s1 2 fat
4176900 4016250 8193149 ad0s2 3 freebsd
看完後,我們使用q命令退出屏幕,中斷sysinstall的運行。Windows應該是安裝在被FreeBSD識別為ad0s1的FAT格式分區中。為了安裝這一分區,我們需要首先創建一個被稱作dos的安裝點:
mkdir /dos
下面我們來檢查這一安裝點的權限:
ls -l / | grep dos
drwxr-xr-x 2 root wheel 512 Aug 31 13:07dos
所有用戶都有read(讀)和execute(執行)權限,只有根用戶才享有write(寫)權限。
在向/etc/fstab添加一個永久的安裝點前,我們需要確定可以以手動方式無誤地安裝那一個分區:
mount -t msdos /dev/ad0s1 /dos
注意:我們使用了-t msdos來指定文件系統的類型,使用/dev/ad0s1指定了分區的名字,安裝點的名字為/dos。由於已經收到了系統返回的提示,安裝是成功的,我們還可以使用df命令確認一下:
df -h
Filesystem Size Used Avail Capacity Mountedon
/dev/ad0s2a 97M 36M 53M 40% /
/dev/ad0s2f 1.7G 567M 1.0G 35% /usr
/dev/ad0s2e 19M 2.0M 16M 11% /var
procfs 4.0K 4.0K 0B 100% /proc
/dev/ad0s1 2.0G 783M 1.2G 38% /dos
我們還可以使用ls命令來確認一下安裝分區的內容,使用F開關可以通過在目錄中添加一個/字符把文件和目錄區分開。
ls -F /dos
AUTOEXEC.BAT* COMMAND.COM* MSDOS.SYS* SCANDISK.LOG*
BOOT.INI* CONFIG.SYS* My Documents/ SETUPLOG.TXT*
BOOTLOG.PRV* DETLOG.TXT* NETLOG.TXT* WINDOWS/
bootsect.bsd* IO.SYS* Program Files/ RECYCLED/
ntdetect.com* ntldr*
如果讀者在此前沒有安裝過任何其他操作系統的分區,需要花幾分鐘的時間來熟悉一下cd和ls命令。需要注意的是,FreeBSD對大小寫是敏感的,需要正確地輸入命令和文件名。一些文件名中有空格,可以通過先輸入文件名然後使用tab鍵自動完成文件名的輸入或者象下面的格式那樣使用\符號跳過文件名中的空格:
cd Program\ Files
如果希望Windows分區在啟動時就安裝在系統上,可以小心地在/etc/fstab文件中添加下面的命令:
/dev/ad0s1 /dos msdos rw 0 0
注意一定要正確地輸入分區名。我們應該通過輸入下面的命令確保對/etc/fstab文件的修改有效:
shutdown now
再次回到提示符狀態下時按回車鍵,然後再輸入下面的命令:
exit
一旦能夠登錄,就可以再次使用df -h命令確保分區已經安裝成功。
下面我們來編輯Wine的配置文件。使用文本編輯器打開/usr/local/etc/wine.conf文件,由於缺省的配置文件無需任何改變就能使系統正常運行,下面我們將省略掉大部分輸出,只顯示為匹配我們的配置而需要修改的部分:
more /usr/local/etc/wine.conf
WINE REGISTRY Version 2
;; All keys relative to \\Machine\\Software\\Wine\\Wine\\Config
[Drive A]
"Path" = "/mnt/fd0"
"Type" = "floppy"
"Label" = "Floppy"
"Serial" = "87654321"
"Device" = "/dev/fd0"
[Drive C]
"Path" = "/c"
"Type" = "hd"
"Label" = "MS-DOS"
"Filesystem" = "win95"
這就是需要修改的部分,用你的安裝點的名字取代Path一行中的/c,由於我的安裝點是/dos,因此,這一行應該改成這樣:
"Path" = "/dos"
保存所作的修改。我們會發現,要使Wine能夠正常地工作,必須將這一配置文件拷貝到用戶的目錄中。下面,我們將以超級用戶的身分完成用戶genisis目錄需要的改動:
mkdir ~genisis/.wine
chown genisis ~genisis/.wine
cp /usr/local/etc/wine.conf ~genisis/.wine/config
在向genisis' .wine目錄進行拷貝時,我把配置文件的名字改成了config。至此,由於配置工作已經完成,我們需要退出超級用戶帳號。我們將以用戶genisis的身份啟動XWindows:
startx
XWindows啟動成功後,我們將打開一個xterm窗口,尋找一個可供執行的Windows應用程序:
cd /dos/WINDOWS
ls | more
我們注意到了Windows程序管理器PROGMAN.EXE,下面我們來試試一下是否能夠通過Wine在FreeBSD上運行它:
wine -winver win98 -managed PROGMAN.EXE
經過數秒鐘後,Windows程序管理器順利啟動成功了。點擊File(文件)菜單,然後選擇Run(運行)選項,點擊Browse(浏覽)按鈕,就會顯示出一個在Windows分區中運行的應用程序的清單。
有興趣的讀者可以試試都有哪些應用程序能夠以這種方式運行,或者也可以參考相關的網站。
下面我們將做一些更有趣的探索性工作。以超級用戶身份登錄,看是否能夠通過Wine安裝Windows應用程序,並運行它。我們直接到Download.com上找應用程序,這個網站上的游戲很多,我們就下載Solsuite2001吧。下載它的可執行文件solsuite.exe並保存在/dos中。退回到xterm窗口:
cd /dos
wine -winver win98 -managed solsuite.exe
我們會看到一條有關沒有.wine目錄的返回信息,創建一個.wine目錄,並拷貝以超級用戶身份創建的配置文件:
mkdir ~/.wine
cp /usr/local/etc/wine.conf ~/.wine/config
再次重復執行wine命令時,程序的安裝向導就出現了,根據出現的提示將文件都拷貝到正確的目錄中。但在最後,安裝過程似乎停止了,但顯示的信息表明,安裝過程還需要的時間為0分0秒,使用Ctr+C鍵結束安裝過程,然後輸入下面的命令:
cd Program\ Files/SolSuite
wine -winver win98 -managed Solsuite.exe
哈哈!我成功地在FreeBSD中安裝並運行了一個Windows應用程序。
那麼在Windows 98中能夠運行我們剛才在FreeBSD上安裝的Solsuite2001嗎?下面我們就來試試吧!重新啟動計算機,讓它運行Windows 98操作系統。點擊“開始”菜單中的“程序”菜單項,我們會看到一個新的條目“Solsuite-Solitaire Card Games”,但它是空的,沒有內容。進入文件管理器Explorer,依次雙擊“程序文件”和SolSuite選項,會發現所有的可執行文件都在這一文件夾中。然後依次雙擊Windows文件夾->開始菜單->程序->Solsuite,然後使用鼠標右鍵將SolSuite.exe文件拖到這一文件夾,出現一個菜單後,選擇“創建快捷方式”。
現在再依次點擊“開始”菜單->程序->Solsuite->SolSuite的快捷方式,這麼樣,程序又開始運行了吧!
下面我們來解決在只安裝有FreeBSD的計算機上運行Windows應用程序的問題。首先我們需要以超級用戶的身份創建一些Windows應用程序需要乃至的目錄和空文件:
su
Password:
mkdir -p /usr/local/lib/win/windows
cd /usr/local/lib/win/windows
mkdir system
touch win.ini
cd system
touch shell.dll shell32.dll winsock.dll wsock32.dll
需要注意的是,我們必須修改/usr/local/etc/wine.conf中的Path一行內容,以便它能夠指向安裝點,這次它指向的是我們“假冒”的Windows目錄,我們把它改成如下的內容:
[Drive C]
"Path" = "/usr/local/lib/win"
然後,我們創建恰當的目錄,並將配置文件同時拷貝到超級用戶和用戶genisis的適當的目錄中:
mkdir ~/.wine
cp /usr/local/etc/wine.conf ~/.wine/config
mkdir ~genisis/.wine
chown genisis ~genisis/.wine
cp /usr/local/etc/wine.conf ~genisis/.wine/config
我們兩次以超級用戶身份到Download.com上下載Solsuite2001,並將它保存在/usr/local/lib/win,然後啟動XWindows,打開一個xterm窗口,並輸入下面的命令:
cd /usr/local/lib/win
wine -winver win95 -managed solsuite.exe
Solsuite 2001的安裝程序界面再次出現了。我們會收到一條有關找不到Explorer.exe的命令,不要理它。安裝程序結束後,輸入下面的命令:
cd Program\ Files/SolSuite
wine -winver win95 -managed SolSuite.exe
速度有些慢(可能與這台計算機比較舊有關吧),而且還需要對顯示進行一些調節,但我們畢竟能夠在只安裝有FreeBSD的計算機上運行Windows平台上的應用程序了。