基于linux的學習方法
——
不斷地選擇系統中的軟件根據其相關文檔在系統中付諸實施的過程,制定一個自己
滿意的目標可能效果更好。參考的目標可能以學習為主更好,倘若你有一定的基礎
制定一個基于GNU/Linux系統解決方案也不錯;參考的應用范圍開始以作為服務器運
行更好,而不是作為和Windows 95一樣的作桌面系統,比較理想的環境就是有一臺
Windows95的機器作為客戶端而把Linux作為服務器,我接觸Linux很偶然完全是想看
一看免費的UNIX的樣子,學習Linux是的目標開始很簡單,就是實現類似于Windo
ws NT中的IIS的功能。
我把GNU/Linux的學習分為以下三個部分,并根據自己的經驗提出的事項。
1. 系統安裝
對于熟悉Windows環境的人來說GNU/Linux的安裝是一個非常痛苦
的過程,對于安裝過程中遇到的問題足以讓許多聞風而動的人放棄了GNU/Linux的使
用。安裝過程中比較典型的問題是硬件不支持,如聲卡和顯示卡,其中顯示卡的問
題一般是希望安裝X-WINDOW環境而引起的,并且常常引起系統重啟或安裝失敗。所
以,我給大家的第一個提示就是可以考慮不安裝X-WINDOW軟件包;:( 其次如果你不是
使用的Sound Blast系列的聲卡,可以考慮不安裝聲卡 ;also :( 如果你的網絡卡
不識別可以
考慮更換一塊廉價的NE2000兼容網絡卡,保證網絡的正常工作對于調試客戶/服務器
方式的應用程序是必須的,網絡服務啟動成功但不能正常訪問多是由于缺省的路由(
default route)沒有指定為網卡的地址引起。由于現在的硬件制造商還沒有普
遍提供Linux下的驅動程序,所以希望提供象Windows環境一樣的硬件兼容的確有些
困難。另外, 建議做好可能要數次格式化硬盤的準備,實際上當你使用Linux系統一
段時間后,就會發現以前頻繁格式化硬盤實際上是錯誤的。當然,由一個具有Linux
使用經驗的人進行指導安裝是最好的選擇。同樣,有一本關于Linux系統指南的手冊
是入門時不錯的參考,不過不用太厚的著作因為許多的著作涉及的軟件介紹實際多
是對軟件文檔的復制,最好的文檔實際就在你的/usr/doc目錄下,當然其文檔主要是
英文不過都不是太深奧,畢竟很多軟件的作者并不是用英文作為母語,并且開始是可
以從/usr/doc/HOWTO開始,如可讀性極強的《DOS-TO-Linux HOWTO》《NET-3-HOWTO》
等文檔。在不熟悉UNIX命令的情況下,可以使用一個類似pctools的軟件mc,
通過他你可以完成許多的文件操作,如文件的瀏覽、編輯、刪除等,當然熟悉
UNIX的基本命令可能是開始時的主要工作,UNIX的命令有一個比較特殊的地方就是
有太多的選擇項,其實開始只要會它的基本功能就行。系統的安裝和配置是一個不
斷積累經驗的過程,急于求成可能效果不好,和Windows入門容易深造難剛好相反L
inux是入門困難而深造容易。
2、系統管理
由于Linux是一個多用戶多任務的操作系統,系統管理對于在Windows 95環境
下的用戶可能是一個陌生的事情,在熟悉了基本的文件操作命令之后就可以考慮進行
系統管理,系統管理的工作主要分為用戶管理、資源管理、軟件安裝、
服務配置和網絡。當你使用linuxconf進行系統管理時,你會發現他許多真正優秀
的地方。系統管理是相通的,只要是多用戶的系統都存在這樣的問題,實現的方法
也是大同小異,通過linuxconf進行管理實際是調用了許多的UNIX命令,就象mc一
樣。Linux的通常使用的命令一般放在/usr/sbin、/usr/bin、/sbin、/bin目錄下,
可以抽點時間看看到底他們都包含了些什么東西,并且使用man 看一下他該怎么
使用。資源管理的一個特色是文件系統的限額功能,這是UNIX系統普遍具有的功能
而在微軟的Windows NT 4沒有實現的功能。軟件安裝實際就是使用RPM軟件或是直
接使用tar,其中RPM包格式的軟件更容易安裝和使用。我對服務的理解是系統的駐
留程序,要配置Linux的各種服務需要了解涉及的程序和多半在/etc目錄下配置文件
的作用,/etc目錄和Windows的注冊表文件類似,包含了系統啟動和相關軟件的配置
信息,在集中管理方面應該說Windows做得更好,不過/etc的文件多半是文本文件,
你可以使用編輯器打開他們,其中很多文件里包含了詳細的配置幫助,配置服務的
過程有時可能就是去掉它的注釋符號,實際上Linux下的服務和商用UNIX提供的服務
很相似。和在Windows環境相比,最好的是一般修改一個服務后不需要重新啟動系統
,而只是重新啟動該服務。網絡是Linux給我最多收獲的部分,由于Linux是一個互
聯網上誕生的系統,支持完整的TCP/IP網絡協議族,其網絡應用軟件非常豐富,并
且很多網絡應用軟件都系出名門且廣泛使用,如BIND、apache、wu-ftp、sendmail
、telnetd、NFS、NIS等,并且有非常完備的文檔和例子支持,通過配置其網絡服
務你可以深入了解TCP/IP協議,構造一個非常不錯的內部網環境,相關的文章比較
多,在此便不再贅述。同樣,支持Linux的大型關系數據庫也不少,目前各大數據庫
廠商Oracle、Sybase、Informix)為了對抗微軟的操作系統壟斷,均將產
品向Linux移,主要的目的是為大家提供使用和學習的機會,他們對一般對產品
的限制是不能應用于商業領域,同時支持Linux的免費數據庫系統也不少如PostgreSQL、
MySQL等,由于SQL數據庫涉及數據的并發控制、安全管理、備份等問題,掌
握它能夠讓你在管理員的角度思考你的數據共享的問題,并且SQL作為一個標準其通
用性較強,所以把Linux作為一個數據庫服務器平臺是很理想的。同時,將數據庫和
Web服務器結合起來,利用PHP3或是其他的CGI工具便能夠實現一個基于Web的數據
庫環境,并且是能夠被你自由控制的環境。
3、程序設計
目前GNU/Linux系統是一個為程序員提供的操作系統和編程環境,
因為其操作系統核心源代碼和應用軟件的源代碼都是公開的,并且你可以根據你的
愛好選擇編程語言,你可以通過大量的應用軟件源代碼理解進程、線程、文件、設
備、網絡、RPC、IPC等原來比較抽象的概念。和Windows環境下的可視開發環境相
比,Linux下的編程可能會困難一些,但是如果只是完成特定的服務端應用,就比
較簡單和高效,你開了集成環境可能需要的是多開幾個虛擬控制臺,方便對庫函
數的參考。由于應用軟件主要是C語言程序,有C語言基礎是比較好的,并且應用軟
件的注釋都比較好,可以比較方便地修改。當然,用JAVA也比較好,可以充分享受
其跨平臺的優勢,還有就是可以使用以前只是聽過而沒有用過的Ada、Lisp等語言。
基于GNU/Linux的程序設計可以讓你充分感受選擇的自由,沒有必要大家都
去研究核心程序,畢竟計算機是工具,能夠為具體應用服務才是計算機軟件人員的
職責,僅有系統核心也是不夠的。不過,在Linux下編寫驅動程序不是象想象的那么
困難,原因主要是我們的設計者為我們提供了詳細的指南,感受最深刻的是在
/usr/src/linux/drivers/net/skeleton.c程序,它描述了網卡驅動程
序的框架,并且相關的文檔非常多如KHG等,相比Windows就更為開放和容易。我不
是程序設計的高手,通過GNU/Linux的使用知道一些有用的方法,學會了欣賞別人的
程序,如果讓我做一個程序我的第一步可能就是找到相關的程序并查看他們的編程
方法。同樣,如果能夠真正使用互聯網,你可以發現更多的程序設計的參考。
兩年的實踐給了我一種駕馭系統的輕松,因為我知道很多東西沒
有想象的那么難以接受,最重要的是"try again"。實際上,你能夠真切地感受到各
種系統是相通的,如同水是相通的一樣;學習不應該是一種負擔,而是根據自己的
實際情況去解決實際的問題,興趣是一種不可忽視的因素。我想象不出如果能夠根
據大學計算機專業的課程設置,同步提供Linux的實踐,那么我們的大學生在畢業時
會有怎樣的技術水平?同樣,我們的高校可能會有更多一些的可以為普通人接受的
軟件,而不是只是培養專家的科研成果,或是寥寥千套的獲獎操作系統。沒有理論
的實踐是盲目的,沒有實踐的理論是空洞的,而計算機軟件是需要理論和實踐緊密
結合的。
評論