① 誰能給推薦一些linux內核編程方面的書呢,基礎和進階的……~謝謝了~~
1.LKD-Linux Kernel Development--Linux內核設計與實現
對內核從總體上介紹,沒有深入細節,適合用來了解Linux內核,不需要太多基礎
2.LDD-Linux Driver Development--Linux驅動程序設計
專門講驅動程序設計-不需要太多基礎
3.ULK-Understanding the Linux Kernl--深入理解Linux內核
對Linux內核中大部分的子系統進行講解,非常詳細~需要知道一點微機原理和了解一點AT&T格式的匯編~(該書沒有涉及網路部分)
4. Understanding Linux Networks Internals --深入理解Linux網路技術內幕
專門講解Linux網路實現,沒看過,所以沒有太多發言權~(但是它是ULK上的推薦書目)
5.Linux內核原代碼情景分析
很多類似的書,看情況自己選擇吧。
6.深入Linux內核架構
又是一本非常厚的書,這本書主要講解x86 x86-64架構上內核實現細節~性質類似於ULK~
7.深入理解Linux虛擬內存管理
這是一本源碼解讀性質的書,專門講內核中內存管理部分的~
8.其他各種「嵌入式Linux驅動」相關的書~
上面的書都需要一點C語言的基礎
如樓上所說,這些書需要一點時間去理解和練習~不然比較沒勁~
② Linux內核怎麼入門,求書籍推薦
光碟詳細內容
嵌入式新手入門最佳視頻教程
一、光碟01
1.軟體視頻包-嵌入式linux軟體開發入門培訓視頻.iso
共有46個視頻,介紹嵌入式linux入門需要掌握的基礎知識,包括linux的基礎知識,shell基礎,vi編輯器,包括嵌入式linux的C語言編程,非常詳細,非常精闢,我當初剛出學校做嵌入式的時候,就是看這個視頻的。
2.軟體視頻包-嵌入式系統30學時.iso
共有16個視頻,講述嵌入式系統概述,還有基本概念,嵌入式微處理器及ARM體系結構,已經嵌入式系統的基本硬體知識,嵌入式實時操作系統的介紹,介紹us, os-II,介紹嵌入式wince,linux等操作系統。
3.軟體視頻包-嵌入式系統設計培訓教程.iso
共有25個視頻,講述嵌入式系統硬體和軟體的知識,嵌入式系統的基本知識,講述嵌入式軟體和硬體的協同設計,最後還講述了U-BOOT程序設計,MP3播放器的設計。
4.軟體視頻包-計算機系統結構和匯編培訓.iso
共有51個視頻,將計算機系統結構和匯編語言程序設計,對於以後進行底層的開發很有幫助。
二、光碟02
5.軟體視頻包-底層內核和驅動培訓視頻.iso
共有28個視頻,講述linux內核介紹,內核的源代碼結構,如何編譯和配置內核,如何開發內核模塊,內核的啟動流程分析,內核的內存管理,進程內存空間管理,linux2.6內存管理和分配,內核的鏈表操作,包括一些內核的實驗。
驅動部分講述字元設備驅動程序和字元驅動例子解析,驅動調試技術,並發控制技術,Ioctl的實現,驅動如何訪問硬體,中斷處理,LED驅動程序設計,等待隊列,阻塞,Poll方法實現,時間度量,內核定時器,網路體系架構,網卡驅動設計,觸摸屏驅動分析等等。
三、光碟03
6.軟體視頻包-linux系統編程培訓教程.iso
共有22個視頻,講述基於linux系統的編程,裡面介紹很多linux實例代碼的分析,非常不錯。
7.軟體視頻包-嵌入式系統及應用開發培訓視頻.iso
共有40個視頻,講述嵌入式系統結構、外設驅動和應用開發調試技術,嵌入式系統開發模式,嵌入式硬體開發,實時/嵌入式系統開發方法,還講述了嵌入式系統硬體結構,嵌入式處理器,ARM介紹,片內周邊電路,外圍電路,外設等等。
四、光碟04
8.軟體視頻包-嵌入式培訓視頻1.iso
這是RetHat的企業安裝盤,還有samba安裝方法介紹,適合新手學習,還有包括linux命令,腳本,Makefile和GCC的材料。
五、光碟05
9.軟體視頻包-linux內核編程初級班培訓教程.rar
共有30個視頻,都是基於代碼分析的,講述linux內核的基礎知識,匯編及保護模式,linux內核體系結構,linux引導程序分析,linux內核代碼分析,linux塊設備驅動程序分析。
10.軟體視頻包-嵌入式培訓視頻2.iso
共 有20個視頻,講述linux文件編程,庫函數方式訪問文件,系統調用方式訪問文件,時間編程,進程式控制制理論,進程創建,進程等待,進程通訊概述,管道通 訊,信號通訊,共享內存通訊,消息隊列,信號量,線程創建,線程等待與清除, ARM概述, mini2440, ARM寄存器, ARM定址方式, ARM指令1, ARM指令2.
六、光碟06
11.軟體視頻包-嵌入式培訓視頻3.iso
共有 20個視頻,講述內核簡介,Linux內核源代碼,Linux內核配置與編譯,內核模塊-1,內核模塊-2,Linux內存管理,Linux進程與內核地 址空間,Linux內核鏈表,內核定時器,內核進程,進程調度,系統調用,Proc文件系統,異常分析,交叉工具鏈,嵌入式系統構 建,bootloader介紹,Uboot簡介,UBoot命令,Uboot移植。
七、光碟07
12.軟體視頻包-嵌入式培訓視頻4.iso
共 有25個視頻,講述Linux驅動程序介紹,字元設備驅動,簡單字元設備驅動實例分析,並發控制,Ioctl設備控制,內核等待隊列,阻塞型字元設備驅 動, poll設備方法,自動創建設備文件, mmap設備方法,硬體訪問, LED驅動程序,匯流排,設備,驅動, platform驅動,中斷處理程序,按鍵驅動,網卡驅動程序設計, CS8900A網卡驅動程序分析,輸入子系統,觸摸屏驅動程序, PCI匯流排, PCI驅動程序設計,串口驅動程序,
八、光碟08
13.軟體視頻包-中嵌培訓視頻1
共有21個視頻,如圖1
九、光碟09
14.軟體視頻包-中嵌視頻2
共有22個視頻,如圖2,
十、光碟10
15.軟體視頻包-中嵌視頻3
共有26個視頻,包括課件
十一、光碟11
1.軟體視頻包-linux內核編程高級班培訓教程.rar
共有29個視頻,詳細介紹2.6內核的代碼,非常不錯,如果想學習內核,值得推薦!
2.硬體視頻包-CPLD系統設計和VHDL語言培訓教程
共有10個視頻,介紹CPLD系統設計和VHDL的程序設計,包括視頻和課件還有相關的資料。
3.硬體視頻包-電路分析培訓教程
共有30個視頻,詳細的介紹了電路分析,電路原理。
4.軟體視頻包-ARM S3C44B0 嵌入式微處理器原理及應用
共 有48個視頻,主要內容包括:嵌入式系統基礎知識、嵌入式交叉編譯環境與嵌入式開發環境的搭建、基於Linux的嵌入式軟體開發流程、MiniGUI應用 程序設計、嵌入式資料庫應用、Qt圖形界面應用程序開發。《嵌入式系統開發基礎——基於ARM微處理器和Linux操作系統》涉及嵌入式系統從底層驅動到 頂層應用的各個部分,配合實驗操作循序漸進地幫助讀者完成各個章節內容的學習,引領初學者順利進入嵌入式世界。
十二、光碟12
5.硬體視頻包-單品機經典培訓教程01-11
共有11個視頻,講述單片機的基本所有的內容,老師現場寫代碼,非常棒,可以從一個完全不懂單品機的人到熟悉單品機,到單片機編程,為以後ARM編程打好基礎!
十三、光碟13
6.實踐開發包-ARM 2410開發板資料.zip
包括用戶手冊,網上資料,晶元手冊,目標代碼和支持包,USB 驅動程序,原理圖,裡面還有實驗的指導,很好!
7.實踐開發包-ARM FS44B0開發板資料.zip
包括用戶手冊,ADS120評估板,BOIS和測試程序的源代碼,uCLinux代碼和編譯工具,晶元手冊,目標代碼和支持包,USB 驅動程序,原理圖,裡面還有實驗的指導,很好!
8.硬體視頻包-計算機電路基礎培訓教程.iso
共有14個視頻,講述計算機的電路基礎,適合初學者入門。
9.硬體視頻包-PCB設計培訓教程 Altium Designer
共有14個視頻,講述Altium Designed,電子設計基礎知識,原理圖初步設計,進階,提高,深入,pcb庫的設計,集成庫的作用和製作,pcb設計初步,PCB設計提高,PCB深入。
10.硬體視頻包-單品機經典培訓教程12-13
接光碟12
十四、光碟14
11.實踐開發包-ARM 6410開發板資料.rar
這是我們購買了一塊7000元的開發板配套的完整資料,包括開發套件源代碼壓縮包,套件使用手冊、CPU及其它各種晶元的datasheet,開發板電路圖,模擬器的驅動文件及說明文檔等等。
12.實踐開發包-MIPS CPU開發板資料.rar
這是我們購買了一塊3000元的開發板配套的完整資料,現在市場上 MIPS的開發板非常少,當然資料更少了。包括整套的文檔,軟體和硬體所有的資料,包括工具。
13.實踐開發包-USB實踐開發包.iso
關於USB的實踐開發包,裡面有介紹關於U盤和MP3的工具,軟體的程序,硬體的原理圖,製作的工具,和相關的資料手冊。
14.實踐開發包-嵌入式linux網路的遠程式控制制開發包.iso
關於嵌入式linux網路遠程式控制制的實踐開發包,裡面有詳細的一步步圖文操作的電子書,軟體的程序,硬體的原理圖,製作的工具,和相關的工具。
15.實踐開發包-電子相冊開發包.iso
關於電子相冊的實踐開發包,裡面有詳細的配套說明和實驗指導書,軟體的程序,硬體的原理圖,製作的工具,和相關的工具。
16.行業視頻包-MTK手機開發培訓.iso
介紹MTK的資料,有10個視頻教程,還包括新手如何學習MTK手機開發的資料,MTK開發平台大集合,入門導讀,全套資料,MMI的資料等等。
17.行業視頻包-VOIP視頻教程
共有12個視頻,介紹VOIP網路電話開發,非常不錯,這對以後找這方面的工作非常有幫助,是高薪的行業。
十五、光碟15
18.開發工具包-Wince開發平台platform builder5.0
這是platform builder 5.0的安裝包,可以基於它開發 wince.
十六、光碟16
19.電子書籍包.iso
這是我們多年來積累的電子書籍,是你學習嵌入式的不可多得的材料,太多經典的教材,太多經典的好文章,一定會讓你流連忘返!共有近900本關於嵌入式的電子書籍,覆蓋了嵌入式方方面面的內容!
20.開發工具包-安裝好的fedora9
已經安裝好的Fedora(一種基於linux的操作系統和平台,,從硬碟直接可以拷貝到硬碟linux,方便linux初學者免去安裝linux的麻煩。
③ 《由尚德系列講座之linux內核編程(進階篇)》(linux kernel)內核版本2.6那裡有下
www.kernel.org
④ 學習Linux的步驟是怎樣的
對於Linux的學習,可以分為四個階段,Linux初級入門階段→Linux中級進階→Linux高級進階→Linux資深方向細化階段
第一階段:初級階段
初級階段需要把linux學習路線搞清楚,任何學習都是循序漸進的,所以學linux也是需要有一定的路線。
1. Linux基礎知識、基本命令;
2. Linux用戶及許可權基礎;
3. Linux系統進程管理進階;
4. linux高效文本、文件處理命令;
5. shell腳本入門
第二階段:中級進階
中級進階需要在充分了解linux原理和基礎知識之後,對上層的應用和服務進行深入學習,其中說到服務肯定涉及到網路的相關知識,是需要花時間學習的。
1. TCP/IP網路基礎;
2. Linux企業常用服務;
3. Linux企業級安全原理和防範技巧;
4. 加密/解密原理及數據安全、系統服務訪問控制及服務安全基礎;
5. iptables安全策略構建;
6. shell腳本進階;
7. MySQL應用原理及管理入門
第三階段:Linux高級進階
1. http服務代理緩存加速;
2. 企業級負載集群;
3. 企業級高可用集群;
4. 運維監控zabbix詳解;
5. 運維自動化學習;
第四階段:Linux資深方向細化
1. 大數據方向;
2. 雲計算方向;
3. 運維開發;
4. 自動化運維;
5. 運維架構師
以上是Linux的一個學習方向和路線,對於Linux學習是一個需要堅持的過程,也許通過自學或者培訓,3至6個月都可以把基本知識學會,但是重在實踐,深入的思考和不斷的摸索,你會發現Linux更多的美!
⑤ 求由尚德的Linux內核編程進階篇的PDF文檔。在網上找了半天都沒有
他講的不好
⑥ 怎麼樣學習linux
對於不懂Linux的人員來說,Linux等計算機相關領域都十分神秘,尤其是看了很多國際大片,如速度與激情中的計算機天才,使用的「天眼系統」、「人臉識別」「全球定位」等高科技技術,都與計算機息息相關,這些都催生了學習計算機技術的熱情,那麼,對於想學習Linux的人員來說,需要學習哪些內容才能學好Linux呢?
對於Linux的學習,想要系統的學習,就需要一套完整的教程,可以是一本權威的書籍,也可以是一套完整的視頻教程,只要內容完整,再加上您的激情,相信是很容易學好的!
對於Linux的學習,可以重點學習以下內容:
一、linux基礎
Linux基礎入門主要包括: Linux硬體基礎、Linux發展歷史、Linux系統安裝、xshell連接、xshell優化、SSH遠程連接故障問題排查、L inux基礎優化、Linux目錄結構知識、Linux文件屬性、Linux通配符、正則表達式、Linux系統許可權等
二、linux系統管理進階
linux系統管理進階包括:Linux定時任務、Linux用戶管理、Linux磁碟與文件系統、Linux三劍客之sed命令等。
三、Linux Shell基礎
Linux Shell基礎包括:Shell編程基礎、Linux三劍客之awk命令等。
四、Linux網路基礎
五、Linux網路服務
Linux網路服務包括:集群實戰架構開始及環境准備、rsync數據同步服務、Linux全網備份項目、nfs網路存儲服務精講、inotify/sersync實時數據同步/nfs存儲實時備份項目等。
六、Linux重要網路服務
Linux重要網路服務包括:http協議/www服務基礎、nginx web介紹及基礎實踐、nginx web、lnmp環境部署/資料庫異機遷移/共享數據異機遷移到NFS系統、nginx負載均衡、keepalived高可用等。
七、Ansible自動化運維與Zabbix監控
Ansible自動化運維與Zabbix監控包括: SSH服務秘鑰認證、ansible批量自動化管理集群、 zabbix監控等。
八、大規模集群高可用服務(Lvs、Keepalived)
九、Java Tomcat服務及防火牆Iptables
十、MySQL DBA高級應用實踐
MySQL DBA高級應用實踐包括:MySQL資料庫入門基礎命令、MySQL資料庫進階備份恢復、MySQL資料庫深入事務引擎、MySQL資料庫優化SQL語句優化、MySQL資料庫集群主從復制/讀寫分離、MySQL資料庫高可用/mha/keepalved等。
學完以上內容,基本上可以成為Linux工程師,想要進一步深造,就需要在實踐中摸索並提升,一般3至5年才可精通Linux運維,因此,貴在堅持!
⑦ linux 進階書籍推薦
[Linux伺服器配置全程實錄].張勤,楊章明
[Linux系統管理技術手冊(第二版)].(美)奈米斯
Shell腳本學習指南
⑧ 學習linux操作系統需要掌握哪些東西
一.為什麼要學linux?
當然最重要是愛好和興趣!如果你這種必要學,或者根本不喜歡,請不要浪費時間,你學也學不好!
二.起步
你應該為自己創造一個學習linux的環境--在電腦上裝一個linux或unix
問題1:版本的選擇
北美用redhat,歐洲用SuSE,桌面mandrake較多,而debian是技術最先進的linux
開發人員中用debian的最多,其次是redhat,從全球linux各應用領域市場份額來看
無疑redhat是最多的,此外還有很多出名的發行版本,不再列舉。
對於初學linux的人來說,我建議是使用redhat,原因如下:
1)現在很多書都是以redhat為例講的,為了與書本協調一致
2)周圍的人都用redhat,交流比較方便
3)redhat應用范圍廣,有典型性和代表性
4)它易於使用和安裝,我們沒有必要把時間浪費在「裝系統」上
而應集中精力學習最有用的東西。
//註:現在覺得RH很死板,AS,ES等用在伺服器上或許不錯,
Personal desktop用mandrake,debian,suse都不錯,筆者現在用Mandrake,因為她長得漂亮
如果你並不打算深入學習linux,而是有諸如適應北京市政府辦公平台遷移到
linux上這種需要,那麼中軟,紅旗等中文linux是不錯的選擇
我強烈建議:自己親自動手把linux裝到你的硬碟上,
你必須學會獨立安裝linux系統的技能,對於現在的版本來說,其實跟裝WinXP一樣簡單
從此現在開始,請不要以windows的工作方式來考慮問題,
應該嘗試挖掘linux身上的「天才unix」的氣質。
三.進階
掌握至少50個以上的常用命令
理解shell管道"|",文件流重定向">"及追加">>"等
熟悉Gnome/KDE等X-windows桌面環境操作
掌握.tgz.rpm.biz等軟體包的常用安裝方法
學習添加外設,安裝設備驅動程序(比如modem)
熟悉Grub/Lilo引導器及簡單的修復操作
熟悉系統固有目錄的名稱及公用
學會用mount命令訪問其他文件系統
了解vi,gcc,gdb等常用編輯器,編譯器,調試器
學習linux環境下的簡單組網
建議:買一本不需要太厚的linux教材,大致可以滿足要求
//現在的書越來越多了,還帶很多圖,我當時可沒這么多書:)
四.高級應用
澄清一些概念:
linux的普通操作與真正的系統管理不能相提並論,後者需要很多知識
我個人認為比較重要幾種linux語言
1.英語
即使你不學linux,我也強烈建議你學好英文[U.S.english]
因為實質上計算機語言就是英文和字元,所謂的多國語言只是外部包裝
你必須能無障礙的閱讀大量的英文技術文檔
在搜索引擎找到的英文網站和網頁中熟練的檢索
最好能有用英文直接交流的能力,
擺脫了這個障礙,你的學習和理解速度就能快很多,你就有機會拉開和別人的差距
2.shell[sed/awk]
shell是命令解釋器,是內核與用戶界面交流通道,shell寫的小腳本有點類似於win下的.bat
但shell比.bat強大的多,shell不只是解釋命令,更是一種編程語言,有時候幾百行的c用shell
幾十行就能代替完成工作,因為shell的工作方式建立在系統已有的眾多應用程序之上
這也是CS中的一個重要思想。
此外,shell可以實現工作自動化,這個概念也比較重要
sed,awk用來處理文本,歷來很常用
3.Perl/php
漂亮的腳本, CGI的首選,比ASP好,應用面很廣
4.C\C++
C、C++是linux/unix的核心語言,系統代碼都是C寫的
5.ASM
系統底層及內核,硬體,設備驅動程序,嵌入式開發都需要
//走核心路線的話,才c\c++,asm最重要
6.Java,Python,Tcl,XML
*系統管理篇
在熟悉linux的基礎上還需要掌握至少一種unix
我首推Solaris,其次是FreeBSD
比如運營級系統一般是Solaris+Oracle/DB2之類的
學習apache,ssh,sendmail/Qmail,proftp/vsftp,Samba,Squid,MySQL/PostgreSQL/Oracle,Bind
等各種應用伺服器的構架及電子商務的應用
熟悉TCP/IP協議族,學習諸如apache+php+proftp+mysql+quota的實現以及大型區域網,分布式集群
等各種企業級應用解決方案
熟悉多用戶管理,資料庫管理,文件系統,邏輯存儲管理,日誌分析,備份與災難數據修復
系統補丁,內核升級,以及在此基礎上的防火牆構架等以保障系統安全在內的各種系統管理技能
我覺得,如果在此基礎上再掌握路由/交換設備便是一個不錯的系統管理員
各種基於linux的解決方案可參考相關書籍和文獻,必要時用google或各大linux站點站內
搜索引擎尋找最新文檔,以避免錯誤和漏洞
有幾本技術大全和技術內幕我認為都是這方面不錯的書
*深入學習linux
我個人理解的讀linux內核需要的基礎:
在此之前,希望先把應用層的東西學一下,那樣會比較好理解
1.C
如果學過潭浩強的大學教科書(除了編幾個數學模型好像什麼也做不了的那種),
建議再看一下
《The C Programming Language》Second Edition這本聖經
/*如果想學緩沖區溢出,這點C的功力可能是不夠的*/
還有,,,
反正經典書看多了是沒有壞處的
2.asm (AT&T語法,保護模式)
保護模式下的比較復雜,基本上每本講內核的書都會有介紹
有80x86 Intel語法的基礎就行,
有興趣可以看看Intel的官方****
3.數據結構(離散數學)
計算機專業的核心課程,重要性我就不說了
4.操作系統原理
看懂這個再去讀linux吧
5.微機原理/組成原理(數字電路)
底層直接和硬體打交道,所以這個也要
6.了解linux/unix
我想至少你要會操作吧,了解unix的API
⑨ 如何學習linux經驗分享及linux起源與發展
你應該為自己創造一個學習linux的環境--在電腦上裝一個linux或unix
如何選擇版本:北美用redhat,歐洲用SuSE,桌面mandrake較多,而debian是技術最先進的linux開發人員中用debian的最多,其次是redhat,從全球linux各應用領域市場份額來看無疑redhat是最多的,此外還有很多出名的發行版本,不再列舉。
對於初學linux的人來說,我建議是使用redhat,原因如下:
1)現在很多書都是以redhat為例講的,為了與書本協調一致
2)周圍的人都用redhat,交流比較方便
3)redhat應用范圍廣,有典型性和代表性
4)它易於使用和安裝,我們沒有必要把時間浪費在「裝系統」上而應集中精力學習最有用的東西。
【注】現在覺得RH很死板,AS,ES等用在伺服器上或許不錯,Personal desktop用mandrake,debian,suse都不錯,筆者現在用Mandrake,因為她長得漂亮:)
如果你並不打算深入學習linux,而是有諸如適應北京市政府辦公平台遷移到linux上這種需要,那麼中軟,紅旗等中文linux是不錯的選擇
我強烈建議:自己親自動手把linux裝到你的硬碟上,你必須學會獨立安裝linux系統的技能,對於現在的版本來說,其實跟裝WinXP一樣簡單
從此現在開始,請不要以windows的工作方式來考慮問題,應該嘗試挖掘linux身上的「天才unix」的氣質。
三.進階
掌握至少50個以上的常用命令
理解shell管道"|",文件流重定向">"及追加">>"等
熟悉Gnome/KDE等X-windows桌面環境操作
掌握.tgz.rpm.biz等軟體包的常用安裝方法
學習添加外設,安裝設備驅動程序(比如modem)
熟悉Grub/Lilo引導器及簡單的修復操作
熟悉系統固有目錄的名稱及公用
學會用mount命令訪問其他文件系統
了解vi,gcc,gdb等常用編輯器,編譯器,調試器
學習linux環境下的簡單組網
建議:買一本不需要太厚的linux教材,大致可以滿足要求(現在的書越來越多了,還帶很多圖,我當時可沒這么多書)
四.高級應用
澄清一些概念:linux的普通操作與真正的系統管理不能相提並論,後者需要很多知識
1.英語
即使你不學linux,我也強烈建議你學好英文[U.S.english]。因為實質上計算機語言就是英文和字元,所謂的多國語言只是外部包裝。你必須能無障礙的閱讀大量的英文技術文檔在搜索引擎找到的英文網站和網頁中熟練的檢索最好能有用英文直接交流的能力,擺脫了這個障礙,你的學習和理解速度就能快很多,你就有機會拉開和別人的差距。
2.shell[sed/awk]
shell是命令解釋器,是內核與用戶界面交流通道,shell寫的小腳本有點類似於win下的.bat但shell比.bat強大的多,shell不只是解釋命令,更是一種編程語言,有時候幾百行的c用shell幾十行就能代替完成工作,因為shell的工作方式建立在系統已有的眾多應用程序之上
這也是CS中的一個重要思想。此外,shell可以實現工作自動化,這個概念也比較重要sed,awk用來處理文本,歷來很常用。
3.Perl/PHP
漂亮的腳本, CGI的首選,比ASP好,應用面很廣
4.C\C++
C、C++是linux/unix的核心語言,系統代碼都是C寫的
5.ASM
系統底層及內核,硬體,設備驅動程序,嵌入式開發都需要。//走核心路線的話,c\c++,asm最重要
6.Java,Python,Tcl,XML
五、系統管理篇
在熟悉linux的基礎上還需要掌握至少一種unix。我首推Solaris,其次是FreeBSD比如運營級系統一般是Solaris+Oracle/DB2之類的學習apache、ssh、sendmail/Qmail、proftp/vsftp、Samba、Squid、MySQL/PostgreSQL/Oracle、Bind等各種應用伺服器的構架及電子商務的應用熟悉TCP/IP協議族,學習諸如apache+php+proftp+mysql+quota的實現以及大型區域網,分布式集群等各種企業級應用解決方案熟悉多用戶管理,資料庫管理,文件系統,邏輯存儲管理,日誌分析,備份與災難數據修復系統補丁,內核升級,以及在此基礎上的防火牆構架等以保障系統安全在內的各種系統管理技能。
我覺得,如果在此基礎上再掌握路由/交換設備便是一個不錯的系統管理員
各種基於linux的解決方案可參考相關書籍和文獻,必要時用google或各大linux站點站內搜索引擎尋找最新文檔,以避免錯誤和漏洞有幾本技術大全和技術內幕我認為都是這方面不錯的書
六、深入學習linux
我個人理解的讀linux內核需要的基礎:在此之前,希望先把應用層的東西學一下,那樣會比較好理解
1.C
如果學過潭浩強的大學教科書(除了編幾個數學模型好像什麼也做不了的那種),建議再看一下《The C Programming Language》Second Edition這本聖經(如果想學緩沖區溢出,這點C的功力可能是不夠的,還有<C陷阱與缺陷>,<C專家編程>,<C\C++深層探索>,反正經典書看多了是沒有壞處的)
2.asm (AT&T語法,保護模式)
保護模式下的比較復雜,基本上每本講內核的書都會有介紹有80x86 Intel語法的基礎就行,
有興趣可以看看Intel的官方網站
3.數據結構(離散數學)
計算機專業的核心課程,重要性我就不說了
4.操作系統原理
看懂這個再去讀linux吧
5.微機原理/組成原理(數字電路)
底層直接和硬體打交道,所以這個也要
6.了解linux/unix
我想至少你要會操作吧,了解unix的API
7.軟體工程/編譯原理
這方面的經典書去www.china-pub.com可以搜到很多我覺得APUE這種書不適合初學者,還是先看看UPE
從 Unix 到 Linux 這一段歷史
為什麼大家常常會說, Linux 是很穩定的一套操作系統呢?這是因為, Linux 他有個老前輩,那就是 Unix 家族啰!有這個前輩的提攜,讓 Linux 這個小老弟很快的就成為一套穩定而優良的操作系統啦!所以,底下我們來談一談 Unix 到 Linux 的這一段歷史吧!
早在 Linux 出現之前的二十年 ( 大約在 1970 年代 ), 就有一個相當穩定而成熟的操作系統存在了!那就是 Linux 的老大哥『 Unix 』是也!怎麼這么說呢?!他們這兩個傢伙有什麼關系呀?這里就給他說一說啰!眾所皆知的, Linux 的核心是由 Linus Torvalds 在 1991 年的時候給他開發出來的,並且丟到網路上提供大家下載,後來大家覺得這個小東西 ( Linux Kernel ) 相當的小而精巧,所以慢慢的就有相當多的朋友投入這個小東西的研究領域裡面去了!但是為什麼這的小東西這么棒呢?!然而又為什麼大家都可以免費的下載這個東西呢?!嗯!等鳥哥慢慢的唬xx....喔不!聽我慢慢的道來!
一個沒有完成的夢想: Bell, MIT 與 GE 的『 Multics 』系統
早期的計算機並不像現在的個人計算機一般,他可不是一般人碰的到的玩意兒,除非是軍事或者是高科技用途才有可能接觸到這類的 Computer !而如前面所言,有計算機硬體還需要操作系統的配合才能夠發揮計算機的效能,不過,在那個年代,由於計算機算是『奢侈品』,喔~應該說是『貴重物品』,所以,可能一間學校就只有一部大型主機當然,那個年代所謂的大型主機仍然無法提供適度的運算能力的。不過,既然只有一部大型主機,然而有許許多多的教師、學生要想要來使用,怎麼辦呢?為了解決這個問題,在 1960 年代初期,麻省理工學院 ( MIT ) 發展了所謂的『兼容分時系統 ( Compatible Time-Sharing System, CTSS )』,就字面上的意義來看,他主要讓大型主機可以提供多個終端機聯機進入主機使用主機的資源, ( 附帶一提,當時的終端機 ( Terminal ) 本身並沒有軟體或者可供使用的資源,這些終端機要能使用,一定必需要聯機登入主機之後,才能夠使用主機的資源來工作!) 當時可以讓約 30 位使用者聯機使用主機。而為了讓這個分時系統更加的強大,所以,在 1965 年前後由貝爾研究室 ( Bell )、 麻省理工學院 ( MIT ) 及奇異電器公司 ( GE ) 開始來共同開發一個名為 Multics 的大型計畫,目標是想讓大型主機可以聯機 300 位以上的使用者。不過,在奮鬥了四年之後,該計畫仍然宣告不治...喔!是失敗啦!(註: Multics 有復雜、多數的意思。)
一個小型檔案系統的產生:1969 年 Ken Thompson 的小型 file server system
在復雜的 Multics 系統的計畫失敗後,貝爾研究室當然就退出該計畫。就在這個計畫解散之後,曾經參與 Muitics 的貝爾研究室的成員 Ken Thompson 由於自己工作上的需求,需要一套檔案存取的小型操作系統,便在 1969 年的時候以 DEC 公司 ( Digital Equipment Corporation ) 的計算機 PDP-7 為硬體基準,設計了一個適合自己工作環境的小型檔案系統,其中也含有他自行開發的一些小工具。那個系統就是最早期的 Unix 的源頭!當初 Ken 設計這個檔案系統時,主要是為了自己的存取方便所設計的簡單 OS ,因此將原有的 Multics 系統大幅度的簡化,不過,在當時還並沒有 Unix 這個名詞的出現!
Unix 的正式誕生:1973 年 Ritchie 等人以 C 語言寫出第一個正式 Unix 核心
由於 Thompson 寫的那個操作系統實在太好用了,所以在 Bell 研究室內部廣為流傳,並且數度經過改版。到了 1973 年, Bell 研究室的 Dennis Ritchie 等人為了讓這個系統的執行效能更佳化,所以使用編譯效能更好的 C 語言將原有的 1969 年的那個系統之核心大幅度的改寫過,並且確定該操作系統名稱為 Unix,呵呵!那就是最早的 Unix 操作系統啰!不過,由於這個操作系統是由這一群工程師所開發完成的,而且使用者也大多是這方面的工程師,因此造成了後來 Unix 系統介面較難被一般使用者接受的情況 @_@ (註: 相對於 Multics ,Unix 具有單一的意思!)
重要的 Unix 分支: 1977 年 BSD 的誕生
在 Unix 早期的發展中,有一件相當重要的事情,那就是 BSD 的誕生!由於 C 語言是一種高級語言,他可以被應用在不同的硬體架構上面,而 Unix 本身就是 C 語言寫成的!在 Unix 發表之後, 柏克萊大學 ( Berkeley ) 的教授對於這個操作系統相當的有興趣,在經過取得 Unix 的原始碼,並且幾經修改之後,終於在 1977 年發表了第一代的 Berkeley Software Distribution ( BSD ) 。這個 BSD 是 Unix 的一個分支,他的發展對於 Unix 有相當大的影響,例如後來的 Sun 公司就是使用 BSD 發展的核心進行自己商業的 Unix 版本的發展的!