[BBS 水木清華站]給Linux新手

你從來只用過Windows,從來沒接觸過UNIX,只知道把一個文件拽來拽去,只知道硬盤就是C: D: E:卻從來沒有研究過分區表,也許會用VC編個程序,很習慣它的集成環境....

有一天,不管什麼原因了,也許是看報紙上那些把內存和硬盤都分不清楚的記者的吹噓,或者是老闆要求你用它作個項目,或者是同學們都有了你沒有覺得很土,或者你聽說找工作有這個的經驗就有更大希望....不管怎樣,你想在自己的機器上安裝一個Linux。OK,這個文章就是給你寫的,因爲從現在開始,你會有成堆的問題你會覺得從前在windows那裏得來的有關計算機的經驗好像完全用不上。你會覺得“Linux怎麼這樣麻煩”。你會有種從來沒有開過汽車但是得把汽車拆開修理一樣覺得無處下手。OK,這個文章就是爲你寫的。

爲什麼要學Linux。其實你不必學習Linux,如果你就是想使用計算機讓它使你的工作,比如打字,排版,統計數據等更有效率,Linux不行。Windows,或者我推薦windows 2000是你最好的選擇,它對中文的支持很好,非常穩定,上面有無數應用程序,而且如果你自己承擔風險,還可以使用盜版,免費。Linux將會給你造成很多麻煩,安裝時會造成系統數據丟失,無法驅動網卡/聲卡/顯示卡/顯示器,無法配置中文,圖形界面速度慢,等等。從前在windows上很容易做到的比如修改顯示頻率或者安裝新的網卡驅動在Linux下都變得好像要你自己重
新上一次大一計算機原理課那麼討厭。呵呵,那Linux有什麼好處呢?你會問。其實Linux沒什麼好處,從使用角度,它唯一的好處是它是我們自己的,而windows再好,是Microsoft的。“又能怎麼樣?”你也許又問。區別是,Linux可以讓你來研究它,通過使用Linux你可以獲得更深一步對計算機的瞭解 -- 而不只是一個全自動的盒子。計算機是一個很神奇的東西,你也許對那些寫出windows的程序員很崇拜(我是的),或者對那些能發明更好的算法更安全的操作系統的hacker(對不起,遠程攻擊系統的不是hacker)很崇拜,那麼你應當知道,坐在一個windows的機器前面整天就會用鼠標拖拽也許能給你一個很好的打字員的薪水,但是永遠無法讓你進入真正計算機的世界 -- 成爲一個自由思想的Hacker,或者說,你只能永遠是個windows的用戶 -- 也沒什麼不好,很多領導還不會計算機呢 -- 而不可能有機會自己寫一個windows。一個不太妙的結果是,當世界上充滿了Windows的奴隸時,我們就得花更大的價錢從Microsoft那裏獲得這樣的技術,某些社會裏,我們管這個叫做剝削。

講這麼多,無非是說,蘿蔔不能兩頭切,至少現在是這樣。要想什麼別人都給你做好,系統安裝一路回車,硬件配置點兩下鼠標,對不起,請用windows 2000。如果你準備好了這一切,那麼接着看吧。

OK,你的第一個問題是:什麼是Linux,它和UNIX有什麼區別?問這個問題的原因呢,多半是你還在大一的時候一次去實驗室,看到高年紀學生在一個特大屏幕的機器上作題,你羨慕的看着他,問:“這是什麼計算機啊,這麼高級?”而他不無驕傲的說,“這是UNIX”。後來你懂的多了,知道那是SUN工作站,上面運行着Solaris,就是UNIX。現在你又聽說Linux也是UNIX,是怎麼回事呢?

short answer:去看書,街上很多Linux的書第一章就是講他們的歷史和親屬關係的。

long answer: UNIX是一個20還是30年前由幾個研究生在實驗室裏開始後來一個大公司把它商業化了的一個操作系統。一來二去,它成長並且佔領了市場。當時它只是運行在只有大學纔買得起一兩臺的昂貴機器上。後來機器多了,公司多了,懂得人也多了,就分家了,而“UNIX”這個名字由於法律關係,誰也不能說自己的操作系統是“UNIX”而只能說是“UNIX兼容”系統了。所以現在“UNIX”系統是不存在的,存在的只是一個遙遠的傳說。那麼現在那些Solaris,AIX,IRIS都是什麼呢?那些都是各公司在他們硬件平提上作的商業UNIX,這些系統都遵循一個叫POSIX的古怪標準,對了,這個標準呢,是後來UNIX太多太亂,大家編程接口甚至命令都不一樣了所以沒辦法座下來商量的一個協議。

那麼Linux是什麼呢?Linux是基於PC(其它平臺也有的支持)的UNIX兼容系統,在跟UNIX的關係上,它不比任何其它UNIX兼容系統遠。所以如果你有“Solaris纔是正統UNIX,Linux只是兼容”的想法,對不起你錯了,起碼你得把支持AIX的人打敗才行,他們還認爲AIX纔是正統UNIX呢。所以用Linux你可以學到有關UNIX的知識,這些知識絕大部分在其它商業UNIX上可以用得上。當然,其核心思想絕對是相同的。那麼在三年前只有你的讀博士的輔導員纔有機會在實驗室那臺寶貝SUN上學的知識,你現在在PC機上就可以實踐了,這難道不是很妙的一件事情麼?


第二個問題:我想裝一個Linux,最新的是哪個版本,我聽說過xxxlinux,yyylinux,還有國內某個公司鼎力推出的zzzlinux,到底哪個更好呢?

首先你需要明白,Linux不是windows,它不是一個由一家商業公司維護的軟件,只有一個包裝。Linux是可以任意包裝自由配置的東西。任何一個人,一家公司都可以按照自己的想法,比如加一點功能,加中文支持,作一個Linux出來。這些Linux雖然核心部分都一樣,但是他們所帶的各種軟件,缺省的配置都不一樣。區別是用一種Linux 發佈 (不同的Linux我們叫做不同的發佈)也許硬件很好配置,各種軟件也好安裝,用另外一種也許速度快,再一種也許支持中文比較好。總之沒有白吃的午餐,在windows下想當然的東西在linux下也許需要你熬夜才能得到。所以從一開始選擇distribution就必須非常小心,否則因爲自己剛好隨某個雜誌得到一個Linux發佈就以爲所有的都一樣就開始安裝,等硬盤數據毀了,或者網絡哭天蹌地也配不出來的時候,就晚了。不是開玩笑,我知道windows下安裝驅動程序就是鼠標點幾下,可是在Linux下,爲了驅動一個網卡,折騰一夜是不希奇的 -- 當然,我覺得這是值得的。


所以,面對那麼多Linux distribution,你應當選擇哪個呢?

比較著名的Linux distribution有:
RedHat:最新版本6.2, 7.0beta。由於RedHat公司已經上市,獲得了很多商業的支持,所以它在硬件軟件兼容性上很好。實際上它已經是Linux的工業標準。想象一下如果你是一個比如Oracle這樣廠商的老闆,你需要爲
Linux開發一個版本,而不同的Linux dist需要單獨開發維護,爲成本考慮你自然會只認準一個Linux。

Slackware(7.1)。很早就有的Linux,有很多老的忠實用戶,但現在越來越不行了。

SuSe Linux,德國人做的,在歐洲很流行,有一些驅動上的優勢。

另外還有Debian,CorelLinux等dist,不一一介紹了。

還有你會看到國內媒體上吹捧的各種“中文Linux”,他們的優勢主要是有中文處理。但是如前一篇文章提到的,想用中文,用windows 2000最好。實際上我覺得一個老7字班的前輩跟我說的一句話很好:“(對我們來說)在計算機上看到中文本身就是一件很古怪的事情”。如果你是抱着學習計算機的目的而來,那麼你不可能避免閱讀英文文檔。即使是microsoft的文檔,有關編程的文檔,最新的也全是英文。當然,要上BBS,看中文網頁等,用英文的dist一樣能做到。


作爲我個人(個人觀點,你不必相信我),我只用RedHat,因爲我需要它作爲一個操作系統能讓我更快的掌握並且學習我想學習的知識,而不是跟愚蠢的網卡,聲卡作鬥爭。儘管這些鬥爭對於學習Linux來說也是很有益的,但是對於一個新手來說,如果連繫統都安裝不上,無法配置,又怎麼談如何學習呢?Again,this is only
my own opnion, and I could be wrong。

在這個系列裏,我會圍繞RedHat 6.2來講。

OK,從哪裏得到Linux呢?爲了討論方便,省去不表要的枝節問題,我只討論光盤安裝。所以第一步是得到一張RedHat 6.2的光盤。

得到光盤有兩種方式,一種是去買光盤,這個比較簡單,外面盜版盤就有,不過需要指出的是,RedHat 6.2的光盤不可能是盜版盤,因爲RedHat 6.2遵循GPL協議,它是不收取版權費用的。所以任何人拷貝安裝光盤都是合法的。所以不必爲買到一張“RedHat 6.2的盜版盤”而沾沾自喜或有了偷盜成功的喜悅....只是需要注意,賣盜版盤的爲了騙錢什麼都能做,有的把RH 6.0的盤刷個封面愣告訴你這是6.5最新的,可別輕易信。記得當年(6年以前)kill殺毒軟件流行的時候版本升級快就有了各種假版本,我個人就親自作了kill 500.2來騙人玩,誰讓他愣說他那個kill 79.8是真的呢?

另一種方法是獲得ISO文件,這個是一半新手必問的問題。你多半是有了網絡,懶得或者無法買到光盤。你從某個FTP下載了RH62_INSTALL.ISO這樣一個600多M的文件。你琢磨着這就是個跟光盤有關的文件,但是你不
知道怎麼解開它。怎麼辦呢?

ISO呢,就是光盤鏡像文件。假設你要把一個光盤的內容*完全*的傳給別人,你怎麼做呢?當然最簡單就是光盤拷貝,如果要通過網絡,可以把光盤上的文件都傳過去。如果這個光盤只是一些文件倒簡單了,可是如果這個光盤有比如可以光盤啓動這樣的功能,傳文件恐怕就不行了吧。更不用說在網絡上,傳總量爲600M的上千個小文件的可怕了。

所以呢,有人就發明了ISO,就是可以把一個光盤忠實的“照張相片”,寫到一個ISO文件裏。再用同樣的軟件可以把所有的信息再寫回光盤,得到一個一摸一樣的盤,包括所有的比如能光盤啓動的能力。

那你已經有了這個ISO了,怎麼獲得光盤呢?簡單,找任何一個能刻光盤的機器,它上面一定有類似EZCDPRO的刻盤軟件。每個這樣的軟件都應當有把光盤寫成ISO文件和把ISO文件寫成光盤的功能。你需要在它的菜單裏仔細找,或者找人幫你找,如何把CD IMAGE FILE刻成CD的功能,然後開始刻,就得到一張跟RedHat 發行版一個字節都不差的光盤了....


一點小問題:那些down ISO的地方往往有md5.checksum或者RedHat62.md5這樣的文件,並不大,幾十個字節,你不知道它們是幹什麼的,是不是也得都download不然無法刻CD。實際上你不必管他們,那些是數據完整性校驗的文件,好像掛號信的跟蹤單據一樣。只要信能到,是否有他們無關緊要。

另外還有ftp方式安裝,用winimage展開ISO本地文件安裝等方式,我不去討論他們。

好,現在你有一個RH 6.2的CD了,因爲是ISO刻的,所以它應當能做光盤啓動。那麼,把它放入光驅,然後調BIOS設定光盤啓動,啓動機器。我們可以開始安裝RH Linux了。


下來你的首要問題是“我的機器有16G,分了一個C盤4G,兩個D,E盤各6G”我還想保留C盤的windows,我能把Linux安裝到D盤或者E盤上麼?呵呵,非常好,你知道Linux是一個操作系統,可能要把windows弄掉,但是遺憾的是你對硬盤,分區的理解是錯誤的。
下篇文章會講硬盤分區的問題。

OK,要講硬盤分區了。在講這個問題之前,我先來講講概念問題,什麼是概念問題呢?你還記得第一次,絕對的第一次聽到A:盤,B:盤,C盤時候的感覺麼?在那之前自己也許知道計算機有個存儲數據的地方,因爲在電視上或者廣告上看到過磁帶機(我一直不知道爲什麼到了很久很久那種一個傻姑娘在一個磁帶櫃前面操作一個現在看來是垃圾的磁帶設備會不停的成爲電視臺播放電腦題材節目的缺省背景)或者硬盤的圖象。但是你並沒有一個概念計算機究竟怎麼使用這些設備,直到你第一次打出dir a:或者打開explorer看到A: C:字樣的目錄樹。如果你還記得當時的感覺,恭喜你,這種感覺又回來了。

對於一般人,只需要知道計算機能做什麼就行了,所以對於他們來說,什麼東西越簡單越好,越不需要他們去花時間學習理解越好,所以計算機從開始的打孔到了後來的鍵盤屏幕,現在又往語音輸入智能交互方向發展。這很好,讓那些把計算機當工具的人能更專注他們的工作(當然,他們會爲此向我們--計算機的建設者付出應有的報酬)。可以說,MS在這方面作的很好,沒有人會否認windows是一個非常“好用”的操作系統。這是指從使用者而言,你不需要太多的去理解機箱裏面的知識,或者說儘可能不去理解,就能儘快讓計算機爲你工作。比如將本來很複雜的硬盤通過它在中間的操作搞成了C: D: E:盤這樣的東西,讓一個只需要會打字的祕書MM也能知道怎麼存儲文件(當然也會有笨的不可救藥的)。但是這樣(MS替你打點一切)的做法的一個問題也是顯而易見的:你沒有機會,或者說沒有被迫的機會去了解更深一層的知識。而且當你腦子裏只知道”C: D: E:“的時候,你就只有跟着windows走這一條路了。

OK,言歸正傳。安裝Linux的硬盤分區問題。這個問題說起來是每個Linux新手,甚至到有一定水平的人都不敢說很清楚或者掌握的(包括我自己)。硬盤是個很古怪的東西,它的基本脾氣是,一點搞不好,一大塊數據就要丟,而且丟的乾乾淨淨。我已經不止一次看到某人的畢業論文之類東西在答辯之前三天因爲硬盤問題而丟失並且沒有備份!而安裝Linux是必須跟硬盤很底層的部分打交道的,而不是win下面安裝個程序那麼安全。所以我的第一個建議是,如果硬盤上有重要數據,最好別貿然安裝Linux。比較好的一個辦法是找臺不重要的機器,硬盤可以重新分區格式化的,多安裝幾次Linux,多試驗一下windows和linux共同存在的各種情況。這樣以後心裏就有底了。如果實在要安裝,一定要備份重要數據,切記。


下來講Linux對於硬盤的概念。只考慮IDE硬盤。對於一個硬盤的操作分很多層。我們需要知道的,是硬盤是由很多個512字節的扇區組成的。而這些扇區會被組織成一個一個“分區”。這些對於每個操作系統都是一樣的,在這之上每個操作系統自己去管理分給自己的分區。對於windows來說,它會把這些分區格式化然後按照CDE盤來管理。而Linux則不同。所以呢,一個硬盤上分多個分區,安裝多個操作系統比如windows,Linux,Solaris等是完全可以的。但是由於每個操作系統對分區的操作不同,只能說把操作系統安裝到分區中而不存在把操作系統安裝到CDE盤中(UMSDOS方式先不提)。

每個硬盤的第0個扇區是個特殊扇區,它不屬於任何分區。它存放的是兩個東西:第一是一個很小的程序,它由計算機在啓動的時候運行,這個程序一般是某個操作系統帶的啓動程序,它運行後會啓動某個操作系統或者給用戶選擇來啓動某個操作系統。Windows的0扇區啓動程序很簡單,它就是把windows啓動了,所以在這之前你是不會有多操作系統在一個硬盤上共存的概念的。而Linux所帶的啓動程序可以讓你選擇啓動哪個操作系統,它叫做lilo。這個東西我們以後會經常碰到它。0扇區還存放有另外一個重要數據:分區信息。前面講過,硬盤是有分區的,那麼到底怎麼分的,這個信息是存在0扇區的。硬盤的分區規則是這樣的:一個分區的所有扇區必須連續,硬盤可以有最多四個分區,這四個分區可以是四個主分區或者三個主分區加一個擴展分區。在擴展分區裏可以再繼續分邏輯分區。舉一個例子,一個10G的硬盤,安裝windows,有C: D: E:三個盤。那麼它的分區情況可以是這樣的:

分區一:主分區  4G ,格式化爲C:盤
分區二:擴展分區        4G   擴展分區不能格式化,它只能被再分區爲邏輯分區
剩餘空間(可以被分區三,四佔用) 2G


在擴展分區中,建立兩個邏輯分區各爲2G,格式化爲D:E:盤。

那麼在Linux看來又是怎麼樣呢?注意我提到過,對於任何操作系統而言,分區都是一樣的,儘管Linux不認同C D E盤,但是這些分區都是相同的。所以Linux下看也是分區一,分區二等東西。但是它對這些分區的標誌和解釋是不同的。

在Linux下,硬盤是一個設備,實際上Linux下什麼都是設備。對於IDE硬盤而言,Linux認爲存在四個設備,對應於IDE的四個位置接的設備。如果裝過機器我們知道主板上有兩個槽,IDE0和IDE1,每個槽上能掛兩個設備,主盤和從盤,這些盤可以是硬盤可以是光驅。那麼Linux是怎麼認爲這些設備的呢?在Linux下,這些設備用/dev/hdx來標示。IDE0上的主盤就是/dev/hda,從盤就是hdb,依此類推,如果可以有多個IDE槽就可以延續到hde hdf等。總之每條硬盤線上接的設備都被Linux認爲是一個/dev/hdx設備。如果你的機器是IDE0槽上的
主盤是硬盤,那它就是hda,如果IDE1的槽上主盤是一個光驅,那它就是hdc。在windows下fdisk是對”硬盤1“,”硬盤2“進行操作,而linux下的fdisk就是對/dev/hda,/dev/hdb等進行操作。這樣做很靈活,很直觀,不是麼?

那麼Linux下怎麼看分區呢?Linux下的分區概念是,硬盤上的每個分區也是一個設備(又來了)。他們的標誌是/dev/hdxy,其中hdx根前面一樣表示哪個硬盤,y表示第幾個分區。以hda爲例。hda1就是第一個分區,hda4就是第四個分區位置。邏輯分區從hda5開始。所以剛纔那個例子中,Linux看來就是hda有10G。hda1是主分區,格式是windows。hda2是擴展分區,在它上劃出了hda5和hda6,格式是windows。hda還有2G剩餘空間可以繼續建立hda3和hda4。注意因爲hda2空間已經被劃分完,所以無法再建立邏輯分區。

這些硬盤的東西很容易搞混,建議多實踐,多總結一下。可以參照一些有關書籍,早期的DOS書在安裝部分講了一些。現在的linux安裝部分也都有不少。另外還有網上的一些介紹資料。


明白了Linux對分區的處理。下來就是分區策略了。在用RH6.2的光盤啓動,一直回車選擇缺省設置會到一個分區界面。這裏你需要告訴linux安裝程序在硬盤的什麼地方安裝linux。你需要告訴它一些信息,其中包括,建立一個新的Linux分區,多大,mount到哪裏。這裏需要介紹一下mount的概念。


我們知道硬盤是可以分成很多分區的,每個分區由各個操作系統格式化然後就可以使用了。但是要使用必須有一種方法。windows,或者DOS的做法是將格式化好的分區掛(或者說mount)成C: D: E:盤。盤符的分配是操作系統決定的(到NT後可以用戶指定)。在Linux下某個分區怎麼使用必須用戶自己指定。在Linux下分區並不按照C: D: E分配,而是掛(mount)到一個目錄下。整個UNIX的存儲空間結構是一個目錄樹(而不是每個C: D: E:下各有自己的目錄樹)。最上一層是根目錄(用/表示,注意不是windows的反斜槓/)在根低下有其它目錄。首先需要有一個分區mount成/,然後再在根下面建立其它目錄然後把分區mount到這些目錄上去。所以整體來看一個unix的存儲系統是一個目錄樹,但是它可以包括很多分區,甚至其它存儲設備,比如光驅,內存盤,或者網絡磁盤等。

在Linux安裝的時候除了/還有幾個目錄是預先建立的,我們需要知道的是/usr,/home還有/root。先不管他們都做什麼,一般而言我們需要分一個空間,指定它爲Linux Native類型,然後mount point是這幾個目錄之一。另外還需要注意的是Linux分區有兩種類型,native是可以存儲文件建立目錄的那種,還有一個linux swap,這個是linux的內存交換分區,在安裝RH的時候必須指定一個。所以在安裝的時候最少需要分一個區,類型linux native,mount到/上,然後一個分區類型linux swap,swap區不mount爲任何目錄,系統對其進行單獨處理。

下來是分區大小問題,安裝Linux一般而言1G空間爲/就差不多了,初次安裝爲方便起見,可以建一個2G的分區mount point爲/,然後一個swap。swap的大小作的跟內存一樣大就是了,最大128M。以後再安裝的時候可以根據自己對硬盤的要求建立其它分區來mount比如/home。

對於已經安裝了Windows的機器,可以在Linux安裝程序裏刪除一個windows的分區,一般而言是一個邏輯分區(你不會想刪除C:盤吧),然後在它的空間裏建立Linux的分區。

Linux的/可以是主分區可以是邏輯分區。但是需要注意的是8G的問題。我想你也許聽說過8G,到底8G是什麼呢?具體問題比較複雜,簡單說就是不能把Linux的/分區mount到一個硬盤8G以後的分區上。所以如果你的硬盤有16G,前6G已經分給C:盤,后里面是兩個5G的D: E:盤,納悶你就得把D盤分區刪除建立Linux分區而不是E盤,因爲E盤已經在8G以後了。8G以後安裝Linux是沒有問題的,只是無法啓動。當然這個是有解決辦法的,但是在新手的狀態我還是建議儘量按照最簡單情況作,將來熟了再練習其它。

分了區之後繼續安裝,你還被要求配置一些其它東西。包括root密碼,Lilo,配置網絡,X等東西。其中Lilo是比較重要的一部分。你會被要求將lilo安裝到MBR,分區啓動扇區,或者一張軟盤上。你需要選擇是是否安裝到MBR或者floppy上。一般而言安裝到MBR上即可,爲了保險起見可以做到軟盤上,這樣機器用硬盤啓動還是windows那套,進入linux可以用軟盤啓動。注意你需要把BIOS中的Virus Warning關閉,否則無法安裝到MBR上。

如果你的機器配置比較標準,網卡,聲卡,顯示卡等都能自動檢測出來的話,一路回車,再啓動你就可以進入Linux了。如果運氣不好(大多數情況是)網卡聲卡沒有在啓動的時候配好也無所謂,跟windows一樣將來可以再配置。總之這些不會影響到你安裝。

OK,機器再啓動,跟以往不一樣的是沒有看到Starting MS Windows 98....而是一個Lilo:的提示符。這說明Lilo已經正常安裝了。你現在按回車就可以進入Linux了。如果要進入Windows可以打DOS然後回車。如果你指定了不同的windows分區啓動標誌符,可以用[TAB]鍵看一下你有哪些選擇。

這是一個很經常被問到的問題,這裏說一下。出於某種原因你要刪除Linux,你知道用DOS盤啓動然後fdisk刪除Linux分區或者重新安裝NT刪除Linux分區。但是當你一切都安裝完了之後windows無法啓動,Lilo:這個符號總在那裏,機器死了一樣。別重新分區格式化都沒用。然後某個半瓶子醋可能告訴你“沒救了,低格吧”。記住,除非硬件損壞,硬盤任何時候不需要低格。這種情況是由於其它安裝程序並不重寫0扇區,即MBR造成的lilo無法刪除。解決辦法很簡單,請牢牢記住:用一張DOS盤啓動,運行DOS的fdisk /MBR。這個命令就是重
寫0扇區的引導程序爲MS的標準程序,即可以啓動DOS,Windows,WindowsNT, Windows 2000的那個,而不會改變硬盤分區任何其它信息。所以它是絕對安全的,絕對安全的,絕對安全的。當你碰到Lilo無法刪除的時候,記得fdisk /MBR。

OK,你成功的啓動了Linux,進入了一個圖形或者字符界面要求登陸。下來你會有成堆的問題要問。下來我會講怎麼去問問題以及怎麼尋找幫助。

”大夫,我痛,告訴我怎麼辦吧”
“彆着急,你先說你哪裏怎麼痛了“

”噢,哪裏痛還不一樣治啊,我肚子痛,快告訴我怎麼辦吧,我很着急的“
”彆着急,再說說你昨天都幹了些什麼啊?“

”怎麼跟昨天幹什麼還有關係?我昨天就幹了我每天作的事情嘛,我覺得很正常,你怎麼還不告訴我怎麼辦?不想說就別說“。
”彆着急,你再想想,昨天作了什麼跟平時不同的事情?“

”不同?好多都不同啊,我昨天上班沒搭上公車打的的,上午沒人給我打電話,比較古怪...“
”不是這些,我是問你有關吃飯啊,運動啊之類的“

”噢,這個啊,昨天晚上我吃了餃子,很好吃的喔“
”噢,吃了多少個餃子啊“

”嗯,80多個吧,噢,對了,晚上肚子就疼,一直到現在“
”噢,那你是吃撐了“


以上是我記憶中BOB老師寫過的文章。如果你覺得這是個笑話的話,那我幾乎每天都會經歷這類笑話。一個人會先問“我的Linux怎麼xxx了,怎麼辦”,到最後一步一步的誘導問題直至答案揭曉。你下來會遇到很多問題,你不知道去哪裏找答案。你覺得網上都是高手,你覺得高手就是你一站到那裏他就知道你有什麼問題。他無所不知,會告訴你一個”絕招“一下解決你的問題。所以你什麼都不必多說,一句話的標題加一個”無內容“的內容。就等高手給你”絕招“了。

可惜這樣的事情從來沒有發生過。

如前所述,Linux相對於你也許很熟練掌握的windows系統來說有很多全新的概念。好像微積分對一個只知道簡單代數的人來說一樣。在這種情況下,你用你固有體系下的思維來試圖獲得答案顯然是困難的。舉一個例子,Linux下的圖形界面X配置一向是新手必問的問題。你安裝了Linux但是屏幕卻是300X200,16色的,你想知道怎麼辦。從windows那裏得來的經驗,你想應該有個辦法找到”顯示屬性“這樣的菜單然後改變一下分辨率顏色深度,甚至掃描頻率就可以了。所以你的提問多半是“我的X只有300X200,我在哪裏可以改變它”,然後你期望一個高手告訴你“在xxx地方鼠標右鍵點一下,就得到顯示屬性的菜單啦”,然後你就可以象在windows裏面一樣修改屏幕分辨率了。這裏有什麼不對呢?不對的地方是,Linux下的X不是windows,它的顯示分辨率根本不是在圖形界面裏面調整,而是在進入X之前,更重要的是,能改變到更高分辨率的前提條件是顯示卡的驅動要配置好。而這個又跟Linux的發佈,版本等有關係。這麼多情況都不知道,高手絕對是沒有”絕招“告訴你的。對照前面那個笑話,肚子統的原因很多,如果病人都能知道並且判斷出來,醫生還有什麼用?

那麼當你有問題的時候,應當怎麼做呢?第一,最好別問問題。Linux的安裝配置本身就是個學習的過程,通過自己摸索解決一個問題也許比別人告訴你要慢很多,但是解決問題的本身有助於你加深對Linux概念的理解。同時爲了解決一個問題也許能帶出很多其它問題。我記得我當初初學Linux的時候在一臺破機器上把Linux和win98安裝了很多遍,最終明白了Linux分區DOS分區共存,Lilo的配置的很多問題。當然一些關鍵地方自己摸索耗費時間太多而且沒有意義,多交流也能達到大家共同提高的效果。關於如何去主動摸索尋找問題的答案我後面會講,這裏就假定你需要到BBS上問一個你無法解決的問題。

你碰到了一個問題,Lilo不啓動,顯示010101或者LI死機,或者不知道爲什麼你的X屏幕只有300X200,或者不知道怎麼配置網卡,或者不知道爲什麼書上講的cd /usr/src/linux;make config返回錯誤信息,或者編譯了一個測試程序gcc -o test test.c 然後運行test什麼輸出都沒有。你手足無措。你想上網問”大蝦“們來獲得答案。

問問題的第一點,是要明白,兩個字就能說明問題並且解決一個的事發生在在一個大俠身上也許表現的很瀟灑,但是在你提問題的時候只能表現的很無知,就好像那個說”我痛“的病人一樣。你必須詳細的描述一下幾個問題:你有什麼,你做了什麼,你希望達到什麼效果,你發現什麼問題,具體的問題現象描述。比如如果你網絡不通,你就需要先說你的Linux什麼發佈,什麼版本,你怎麼安裝的,怎麼配置的網絡,詳細到具體的命令,你的網絡情況,局域網廣域網等。你也許會說很多廢話,但是要明白你是來問問題的,你不會知道究竟問題出在哪裏,所以你必須把你能想到的跟問題有關的事情都說出來纔可能包含具體出問題的地方。在這裏你不是大俠,無關瀟灑不瀟灑的問題。我們的目的是解決你的問題,並且通過解決問題獲得自身的提高,無它。

第二點,是不要自己做任何判斷。好像那個認爲Linux也應當根windows一樣有個地方點右鍵獲得“顯示屬性”的問題一樣。你事先根據自己在其它系統上的經驗來自己做了問題的限定並且將回答問題的可能限制在一個很小的範圍內。這樣做既限制了你自己的思維,也影響到你正確描述問題。事實是你的錯誤多半是概念錯誤,開始走的方向就錯了,與其這樣不如把自己明白的似是而非的東西拋開,仔仔細細的把那幾個問題(你有什麼,你做了什麼....)寫清楚,看別人會怎麼作判斷。


第三點,你是來提問題的,你覺得你應該受到幫助。且慢,這裏已經不是教師答疑了,你不再是一個有權力受到教育的大學生了。回答問題的人也不再是你的老師或者助教了。他們對你沒有責任。大家無非是在一個地方相互交流共同提高。如果有人回答你,絕對是在助人爲樂幫助你。而當你的問題沒有人回答的時候,多半是你的描述不夠詳細,別人不是醫生,不必一個一個問題誘導下去。所以當你的問題沒有回答的時候,先對照前面一點再修改問題的描述,這也是個思考的過程。實在不行,就自力更生吧,接着看下面的文章。

Linux的一個重要作用,我覺得,就是培養人自己探索的能力。回想我們的學習過程,從小學中學到大學。讓人自己去探索的環境實在太少。所有的問題都有一個標準答案,要麼在老師那裏,要麼在參考書上。就連作文這樣無法量化的東西也有個倒黴的“中心思想”。所謂“自學”也無非是猜測到底標準答案是什麼。如果要做大一點的課程項目(Class Project)也會定義的非常詳細,老師恨不得把所有你能自我創造的細節都堵上,這樣可以方便他評卷。這樣環境下教育出來的人,到了Linux下就會經常感到無所適從 -- 的確,沒有老師的標準答案了,你做的對不對只有自己知道。


所以學習Linux,很重要的一點是有自己搜索知識,突破自己思想侷限的能力。遇到問題第一步不是想“誰有標準答案”然後去問人,而是先想”我怎麼能解決他“,不行就自己去尋找解決辦法,再考慮這個解決辦法爲什麼自己想不出來,將來碰到類似問題應該往哪個方向去努力。最後再考慮自己是否能在這個方向上作出改進。經歷過很多次這樣的事之後,人的創造力會有很大的提高,而這個對於現在靠技術吃飯的人來說,就是10萬和2千的區別。


OK,你有一個問題,你不知道怎麼解決,你怎麼去尋找答案,怎麼提高自己呢?在有一個問題的時候,你首先要想,你是個新手,在你之前已經有無數個新手了,你不會是個多特殊的新手。唯一的不同是你的知識面跟別人不同,而不是你的問題有多特殊。比如你有個D-LINK 220網卡無法配置你覺得很困惑。實際情況是有很多人已經困惑過了,他們問過這個問題並且都得到了答案。所以你的第一步應當是明白”這個問題已經有根我一樣的人問過並且在某個地方有答案了“。

那麼,怎麼找答案呢?在BBS上,你可以進入Linux版,然後想”已經有答案了,在哪裏呢“。首先你可以在從前的文章裏找,這個可以用搜索標題的方法。先想一下如果你要問這個問題要用什麼關鍵字作標題,然後搜索這個關鍵字。在BBS上搜索是輸入?號然後輸入關鍵字再回車。搜索中用什麼關鍵字很講究,比如你要找有關DLINK 530-TX卡的信息,那麼你要想別人會怎麼問。肯定標題裏有網卡型號,可是別人會怎麼寫呢?也許是530TX,也許是530 TX,也許是530-TX。所以但是肯定都包括530,所以你可以搜索530這個關鍵字,然後把搜索到的文章都看一遍,基本上就有答案了。類似的可以搜索的問題還有DE 尤220,810(Intel 810主板內置顯卡驅動)等。

其實BBS只是一個很小的地方,真正最新最全的知識在網絡上。幾乎所有的Linux有關程序,常見問題都會有人整理出來放在網上。需要注意的是,一,Linux不是microsoft,有專門公司維護文檔。Linux的文檔到處都有,質量不一,而且隨着Linux的不停升級會有各種版本。比如IPMASQ因爲它隨Linux內核升級版本更新很快,所以它的幫助(faq)也頻繁升級。看了老的faq會讓你更糊塗。所以找文檔不要看到一個就盲從,要確認它的確有用,也許你找到的是個舊版本呢?要知道一些講Linux的文章是5,6年前寫的,當時CDROM還是個稀罕貨,你想從那裏獲得如何用CDROM安裝Linux的問題,卻發現上面都是講怎麼用軟盤安裝,這個就不好了。另外還有有些講內核編譯的文檔都是說make config,而且裏面的選項也很舊,實際上現在內核編譯都用菜單方式的make
menuconfig了。所以文檔的新舊是個很需要注意的事。第二點是你無法逃避使用英文,你必須強迫自己去理解英文文檔。的確有中文的文檔,但是那些的普遍問題是缺乏維護,太舊了。


下來請你把這個網址寫在手背上:www.google.com。以後對Linux有了問題,就去上面搜索。google是我知道最好的搜索引擎,尤其是在Linux知識方面。幾乎是我想知道什麼就能搜出什麼,從網卡驅動到並行計算機的配置。我希望你以後在問問題之前在這上面搜過。搜索的主要技巧是選擇正確關鍵字,參考前面講過的,搜索530-TX的驅動最好輸入Linux 530 driver字樣。有關搜索技巧如果我有時間可以單獨寫一些東西。


另外一個地方是News Group,不過一般的news server是聯不上的,而且組也不多。我們可以上ww.deja.com去搜索。這裏都是非常新的國際新聞組的討論,當你的問題已經新到最新的文檔裏也沒有的時候,可以上這裏搜索。新手的問題一般不需要。

當然不要忘了BBS的精華區,那裏往往有些意想不到的收穫,仍然需要注意的
問題是,一些中文的文檔,尤其是長文章,往往很舊。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章