FreeBSD
作為一個BSDer,在網上轉得最多得就是UNIX相關論壇了,在與不少新手接觸的過程中,發現有相當一部分人是從Windows下轉過來的(幾乎是“絕大多數”),在學習FreeBSD的時候會遇到不少困難,甚至覺得UNIX類系統極為難用,在這裡,我把自己的經驗總結一下,供大家參考。
首先是如何獲得的問題,Windows到處有賣,甚至某些Linux,比如RedHat,Mandrake等都有賣,但FreeBSD,NetBSD等UNIX目前似乎還沒有看見有出售——至少重慶是如此。獲得BSD最好的途徑是通過網絡下載,比如FreeBSD的官方站點ftp://ftp.freebsd.org,ftp://ftp.cnfug.org,或者一些專門提供自由軟件下載的站點,比如http://www.wormwang.net等都可以下載相關系統和應用程序。如果沒有條件上網下載的朋友,可以在自己常去的論壇上找找與自己同城的朋友幫忙刻一下盤,通常大家都會比較樂意的。
其次,安裝。安裝一個操作系統,必然涉及到分區。然而,分區是很多人的噩夢……因為分區意味著數據丟失甚至整個分區表的丟失等意外情況。特別是BSD的分區,更是讓不少人頭疼,因為BSD繼承了UNIX傳統的磁盤管理概念,而那時PC還沒有出現,因此,在BSD的傳統磁盤管理機制中就沒有PC中的“分區”這個概念。它是將磁盤劃分為一個個Slice來進行管理的(如果對FreeBSD有興趣的朋友可以參閱王波的《FreeBSD使用大全》或者《FreeBSD Handbook》)。之所以要介紹Slice這個概念,是因為它與後面的“掛載點”概念息息相關。既然在UNIX中沒有分區這個概念,因此BSD就無法理解“擴展分區”這個概念,因此它必須被安裝在主分區中。然後在其中劃分Slice。而且Slice在文件系統中對於程序和用戶是透明的,不像分區一樣是可見的。在分配了Slice後,還要為其分配“掛載點(Mount Point)”,也就是相當於Windows下為分區分配盤符之類的工作。只有被分配了掛載點的Slice才能被操作系統掛載並可用。UNIX的文件系統構成也與Windows完全不同,這在後面將詳細講述。當然,為了與其他操作系統兼容,FreeBSD的安裝程序還提供了支持“分區”概念的Fdisk。但FreeBSD必須被安裝在主分區(不過不像Linux那樣還需要一個單獨的swap分區,FreeBSD的swap只是其所在分區的一個Slice),因此FreeBSD不支持對邏輯分區進行操作,它只顯示擴展分區,並將其做為一個主分區對待,各位在這一點上一定要特別小心。分區完成後,開始安裝,這個步驟沒有什麼特別之處,唯一特別德就是FreeBSD可以不安裝GUI(Graphic User Interface,圖形用戶界面)。
在文件復制進程完畢後,開始配置,不過配置過程並不難,看看提示就知道該怎麼做。接下來進行X-Window配置(注意!是X-Window,沒有X-Windows這個東西這是很多Windows下轉過來的用戶容易犯的一個錯誤),X-Window現在已經能夠識別大多數硬件,特別是主流硬件,因此不必進行過多干預。X-Window配置之後,我們必須選擇窗口管理器(Window Maker)或者桌面環境(Desktop Environment),否則只能使用默認的簡陋的twm界面。在這裡要說明一下:UNIX類系統本身是字符的,X-Window是在UNIX類系統上運行的一個程序,也是UNIX類系統最常用的GUI。在字符界面下輸入startx就可以啟動“XFree86”,也就是我們通常說的“X”,X-Window的一個最為流行的分支。但是,沒有經過設置的X十分難看(毫不誇張的說,Windows95都比它好看)。但是,你只是看到了X最原始的面目而已,經過精心打扮的它甚至能比得上Mac OS X的GUI!X的設計哲學很像UNIX的設計哲學:“Tools,no policy!(工具,而不是策略!)”這些東西並沒有規定最終用戶做什麼,而是提供工具,由用戶決定自己使用它們做什麼。X並沒有規定它提供的GUI看上去是什麼樣子,而是把這個任務交給另外一個程序來完成,這個程序便是“窗口管理器(Window Maker)”。有很多這樣的程序,比如AfterStep,Blackbox,Enlightenment,ctwm,ftwm,sawfish,WindowMaker(注意跟Window Maker區別開)等等。它們的外觀千差萬別,有的看上去像Mac OS,有的看上去像風景畫,有的看上去像科幻小說中的東西,甚至有的看上去跟Microsoft Windows一樣!另外還有一個概念是“桌面環境(Desk Environment)”,它們其實就是窗口管理器跟應用軟件的集合,其中最著名的代表就是KDE和GNOME。推薦新用戶使用KDE或者GNOME,因為它們配置簡單,可以幫助你在更短的時間內學習FreeBSD,而不是被復雜的設置所嚇倒。當然,在熟悉了系統和X之後,嘗試一下不同風格的窗口管理器也是一個好主意!^_^
安裝完成之後,就可以重啟機器進入系統了。記住一點(十分重要):UNIX類系統是不會回顯密碼的(也就是說,在你輸入密碼的時候你看不到Windows下熟悉的星號提示),至少在字符界面下是這樣。不要誤以為是鍵盤出了問題哦!^_^ 這個是出於安全性考慮,因為回顯就意味著會暴露密碼的長度,這個是十分不安全的。進入系統之後,我們必須了解它的文件系統才能進行操作。剛才說了,Slice是對用戶透明的。你在FreeBSD下看不到熟悉的C:,D:,E:,而是一大堆文件和目錄。UNIX類系統都是使用的倒樹形目錄結構,通過掛載點加載分區或者Slice,用戶根本感覺不到它們的存在。在FreeBSD系統中,根目錄(/)是目錄樹的頂點,它下面是/dev(設備文件所在目錄),/etc(配置文件所在目錄),/home(普通用戶起始目錄),/root(根用戶起始目錄),/bin(普通程序所在目錄),/sbin(系統管理程序所在目錄),/tmp(臨時文件所在目錄),/mnt(臨時掛載點所在目錄)等二級目錄,在它們下面又有許多小目錄,這樣一級一級的衍生下去……你可以通過輸入ls來浏覽目錄,它的作用相當於在DOS下或者Win2000/XP/2003的cmd窗口中輸入dir /w。如果你想了解文件的詳細信息,可以輸入ls –l。此外,ls沒有類似dir中的分頁顯示參數,但是你可以通過ls | more或者ls | less來達到相同的目的。在浏覽了UNIX類系統的文件系統之後,你可以發現,它們的文件系統是一個統一的(只有一個根目錄),完整的(不會因為Slice或者分區而被劃分為類似C:,D:,E:的並行“分區”),復雜的(每個目錄下可以有N多子目錄和文件)樹形結構。
此外,單獨提一下加載的問題。傳統的UNIX管理方式出於安全性考慮,並不自動加載除其自身所在的文件系統以外的任何文件系統——即使它能夠識別它們,特別是光盤和軟盤。FreeBSD也繼承了這樣的管理方式,因此,除了FreeBSD所在文件系統以外的任何文件系統通常都需要手動加載,或許你覺得這個很麻煩,但是這樣會更安全。加載的命令是mount,至於用法,限於篇幅,我就不多說了。在這裡要說明的是,UNIX類系統對任何其他分區采用傳統的管理方式,因此,在FreeBSD下,它們是/dev/ad0s1,/dev/ad0s2,/dev/ad0s5,/dev/ad0s7之類,而不是Windows下的C:,D:,E:,F:。在這裡解釋一下。FreeBSD下,ad表示硬盤設備(注意:FreeBSD 3.x及其以前使用的是wd),0表示第一個主設備(也就是第一個IDE口的主設備),s是Slice的縮寫,1是指第一個主分區,5是第一個邏輯分區。而在FreeBSD下CDROM的名稱是/dev/acd0(第一個CDROM設備號為0),(注意大小寫,UNIX類系統是要區分大小寫的,任何情況下都是這樣!因此/dev/CDROM和/dev/cdrom絕對不是同一個東西)。你也可以通過向/etc/fstab加入相關條目來達到自動加載的目的,但是,千萬別自動加載CDROM和軟驅,否則系統在啟動的時候會抱怨無法加載,甚至啟動出錯。要想在使用的時候自動加載軟驅或者光盤,可以考慮使用“amd(Auto Mounting Daemon”,自動加載守護程序),詳細情況請參閱相關材料。
還有一點,可能許多朋友發現市面上很少有關於UNIX類系統命令的入門書籍,而UNIX類系統最強大的地方就是它的命令!正如UNIX的設計哲學所說:“Tools,no policy!”我們可以利用它們做任何事情。在這裡提醒一下各位,UNIX類系統有一個比Windows更強大的聯機幫助系統——“man”!如果想知道關於某個命令的詳細信息,可以通過man 命令名的形式查找,會有不小收獲。FreeBSD和某些發行版的Linux甚至可以通過man –k 關鍵字來查找與某個操作或者主題有關的命令名,比如想查找與打印有關的命令,可以輸入man –k print。UNIX類系統命令眾多,估計沒誰能記住所有命令及其參數(否則那個人不是天才就是瘋子)。此外,FreeBSD Handbook也是很好的資料,建議看看。
最後,來談談UNIX的設計哲學——Tools,no policy!也就是常說的“工具箱”。典型的UNIX命令——比如ls,more,less,print,sort等等,都只完成某個或者某幾個特定的工作。ls是目錄列表命令,less或者more是分頁顯示命令,sort是排序命令,print是打印命令。初看它們似乎毫不相關——至少在DOS和Windows下是如此。但是,它們的組合可以讓你得到你想要的結果。比如,你想對目錄進行列表並分頁顯示出來。命令就是ls | less。或許你覺得麻煩,還不如dir /p方便。但是,如果你想目錄進行列表並對其進行排序,然後分頁顯示出來,Windows或者DOS下怎麼辦?在UNIX類系統下,你可以簡單的加上一個sort命令——ls | sort –n | less。如果你還想把結果打印出來,那麼加上一個print就可以了ls | sort –n | less | print。是不是很方便啊?^_^ 你不需要另外找個程序來完成這個工作,只需要使用手中的工具就可以。UNIX下的命令或程序都有自己的特點和作用。單獨使用的時候,它們並不強大,它們的靈活性才是它們強大的地方,你可以根據自己的需要來組合命令,從而得到你想要的效果(有些象小時候玩的積木)。UNIX中,“工具”到處都是,因為UNIX本身就是一個工具箱,只有充分理解並接受了這樣的理念,你才能更好的使用它!
好了,以上就是我的個人經驗,由於時間和水平的關系,寫得也不是特別全面,算是拋磚引玉吧。不過我也真誠的希望它能給大家一些幫助。^_^ 如果對UNIX類系統有興趣的話,可以來我們CNFUG(China FreeBSD User Group)http://www.cnfug