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;PTypeDesc
0;;;63 62;;;;;-;;;;6unused
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 MachineSoftwareWineWineConfig
<snip>
[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"
<snip>
這就是需要修改的部分,用你的安裝點的名字取代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平台上的應用程序了。