本章基本爲複製粘貼出一些點
目錄
第一章 linux 是什麼
1.1 linux 是什麼
1.1.1 linux 是什麼
1.Linux就是一套操作系統!Linux就是核心與系統呼叫接口那兩層,應用程序不算哦
2.每種操作系統都是在他專門的硬件機器上面運行的喔! 這點得要先了解。 不過,Linux由於是Open Source的操作系統,所以他的程序代碼可以被修改成適合在各種機器上面運行的, 也就是說,Linux是具有『可移植性』
3.Linux提供了一個完整的操作系統當中最底層的硬件控制與資源管理的完整架構, 這個架構是沿襲Unix良好的傳統來的,所以相當的穩定而功能強大
1.1.2 linux 之前 unix的歷史
1.兼容分時系統CTSS——>1969 ken Ehompson Unix原型(unics)
(Thompson 的這個文件系統有兩個重要的概念,分別是:
所有的程序或系統裝置都是檔案
不管建構編輯器還是附屬檔案,所寫的程序只有一個目的,且要有效的完成目標 )
2.unix正式誕生 Ritchie 用c 寫出第一個正式核心
3.重要的unix——bsd的誕生 1977
4. 1979 重要的system V架構與版權宣告
1979 年時,AT&T推出 System V 第七版 Unix 後,這個情況就有點改善了。 這一版最重要的特色是可以支持x86架構的個人計算機系統,也就是說 System V 可以在個人計算機上面安裝與運作了
因爲AT&T由於商業的考慮,以及在當時現實環境下的思考,於是想將Unix的版權收回去。 因此, AT&T在1979年發行的第七版Unix中,特別提到了 『不可對學生提供原始碼』的嚴格限制! 同時,也造成Unix業界之間的緊張氣氛,並且也引爆了很多的商業糾紛
5.1984X86架構的minix操作系統於兩年後誕生
6.GNU計劃
Richard Mathew Stallman(史託曼) 分享 使用Unix開發 GNU的通用公共許可證
7.1988年:圖形接口XFree86計劃 1991年:芬蘭大學生Linus Torvalds的一則簡訊
1.1.3關於GNU計劃、自由軟件與開放原始碼
Open Source就是,軟件在發佈時,同時將作者的原始碼一起公佈的意思!
自由的真諦(互利,相互學習)
自由軟件的版權GNU GPL(通用公共許可證 )
1.自由軟件商業行爲:
目前自由軟件工作者,他們所賴以維生的,幾乎都是在『服務』這個領域呢! 畢竟自由軟件並不是每個人都會撰寫,有人有需要你的自由軟件時,他就會請求你的協助, 此時,你就可以透過服務來收費了! 這樣來說,自由軟件確實還是具有商業空間的喔
2.開放原始碼:
GPL 也是合乎 Open source 所定義的授權之一,只是它更着重於保護自由軟件本身的學習與發展就是了! 那如果你想要開發開源軟件時, 到底使用哪種授權比較好呢? 其實跟妳對這個軟件的未來走向的定義有關啦! 簡單的來說,如果你的軟件未來你允許它用於商業活動中, 可以考慮 BSD 之類的授權,如果你的軟件希望少一些商業色彩,GPLv2 大概是不二選擇囉! 那如果你的軟件允許分支開發, 甚至可以考慮分成兩種版本分別授權哩! ^_^
3.專屬軟件/專利軟件(close source)
Close source的程序則僅推出可執行的二進制程序(binary program)而已。 這種軟件的優點是有專人維護,你不需要去更動他;缺點則是靈活度大打折扣,用戶無法變更該程序成爲自己想要的樣式! 此外,若有木馬程序或者安全漏洞,將會花上相當長的一段時間來除錯! 這也是所謂專利軟件(copyright)常見的軟件出售方式
- Freeware:
http://en.wikipedia.org/wiki/Freeware
不同於Free software, Freeware爲『免費軟件』而非『自由軟件! 』雖然它是免費的軟件,但是不見得要公佈其原始碼, 端看釋出者的意見囉! 這個東西與Open Source畢竟是不太相同的東西喔! 此外,目前很多標榜免費軟件的程序很多都有小問題! 例如假藉免費軟件的名義,實施用戶數據竊取的目的! 所以『來路不明的軟件請勿安裝! 』
- Shareware:
http://en.wikipedia.org/wiki/Shareware
共享件這個名詞就有趣了! 與免費軟件有點類似的是,Shareware在使用初期,它也是免費的,但是, 到了所謂的『試用期限』之後,你就必須要選擇『付費後繼續使用』或者『將它移除』的宿命~ 通常,這些共享件都會自行撰寫失效程序, 讓你在試用期限之後就無法使用該軟件
1.2 Torvalds的Linux發展
1.2.1 託瓦茲
1.2.2 對386硬件的多任務測試
探索386的硬件性能
1.2.3 初次釋出Linux 0.02
爲了讓自己的Linux能夠兼容於Unix系統,於是託瓦茲開始將一些能夠在Unix上面運作的軟件拿來在Linux上面跑。 不過,他發現到有很多的軟件無法在Linux這個核心上運作。 這個時候他有兩種作法,一種是修改軟件,讓該軟件可以在Linux上跑, 另一種則是修改Linux,讓Linux符合軟件能夠運作的規範! 由於Linux希望能夠兼容於Unix,於是託瓦茲選擇了第二個作法『修改Linux』! 爲了讓所有的軟件都可以在Linux上執行,於是託瓦茲開始參考標準的POSIX規範
POSIX是可攜式操作系統接口(Portable Operating System Interface)的縮寫,重點在規範核心與應用程序之間的接口, 這是由美國電器與電子工程師學會(IEEE)所發佈的一項標準喔!
1.2.4 Linux 的發展:虛擬團隊的產生
1.單一個人維護階段 廣大黑客志工加入階段
核心是一組程序,如果這組程序每次加入新的功能都得要重新編譯與改版的話會變成如何? 想象一下,如果你只是換了顯示適配器就得要重新安裝新的Windows操作系統,會不會傻眼? 模塊化之後,原本的核心程序不需要更動,你可以直接將他想成是『驅動程序』即可! ^_^
2.核心功能細部分工發展階段
特別值得注意的是,這些託瓦茲的Linux發展副手,以及自願傳送修補程序的黑客志工, 其實都沒有見過面,而且彼此在地球的各個角落,大家羣策羣力的共同發展出現今的Linux, 我們稱這羣人爲虛擬團隊! 而爲了虛擬團隊數據的傳輸,於是Linux便成立的核心網站: http://www.kernel.org!
1.2.5 Linux的核心版本
1.Linux的核心版本編號有點類似如下的樣子:
3.10.0-123.el7.x86_64 主版本.次版本.釋出版本-修改版本 |
雖然編號就是如上的方式來編的,不過依據 Linux 核心的發展期程,核心版本的定義有點不太相同喔
2.主、次版本爲奇數:發展中版本(development
主、次版本爲偶數:穩定版本(stable) Linux核心是使用GPL的授權
3.主線版本、長期維護版本(longterm version)
不過,這種奇數、偶數的編號格式在 3.0 推出之後就失效了。 從 3.0 版開始,核心主要依據主線版本 (MainLine) 來開發,開發完畢後會往下一個主線版本進行
而舊的版本在新的主線版本出現之後,會有兩種機制來處理,一種機制爲結束開發 (End of Live, EOL),亦即該程序代碼已經結束,不會有繼續維護的狀態。 另外一種機制爲保持該版本的持續維護,亦即爲長期維護版本 (Longterm)! 例如 3.10 即爲一個長期維護版本,這個版本的程序代碼會被持續維護,若程序代碼有 bug 或其他問題, 核心維護者會持續進行程序代碼的更新維護喔
4. Linux 核心版本與 Linux 發佈商版本
Linux核心版本與distribution (下個小節會談到) 的版本並不相同,很多朋友常常上網問到:『我的Linux是7.x版,請問....』之類的留言, 這是不對的提問方式,因爲所謂的Linux版本指的應該是核心版本, 而目前最新的核心版本應該是4.0.0(2015/04) 纔對,並不會有7.x的版本出現的。
妳常用的Linux系統則應該說明爲distribution纔對! 因此,如果以CentOS這個distribution來說, 妳應該說:『我用的Linux是CentOS這個 distribution,版本爲7.x 版,請問....』纔對喔
1.2.6 Linux distributions
好了,經過上面的說明,我們知道了Linux其實就是一個操作系統最底層的核心及其提供的核心工具。 他是GNU GPL授權模式,所以,任何人均可取得原始碼與可執行這個核心程序,並且可以修改。 此外,因爲Linux參考POSIX設計規範,於是兼容於Unix操作系統,故亦可稱之爲Unix Like的一種
1.可完全安裝的Linux發佈套件
Linux + 各種軟件』就可以完成一個相當完整的操作系統了 。 不過,要完成這樣的操作系統...... 還真難~ 因爲Linux早期都是由黑客工程師所開發維護的,他們並沒有考慮到一般用戶的能力
爲了讓用戶能夠接觸到Linux,於是很多的商業公司或非營利團體, 就將Linux Kernel(含tools)與可運行的軟件整合起來,加上自己具有創意的工具程序, 這個工具程序可以讓用戶以光盤/DVD或者透過網絡直接安裝/ 管理Linux系統。 這個『Kernel + Softwares + Tools + 可完全安裝程序』的咚咚,我們稱之爲Linux distribution, 一般中文翻譯成可完全安裝套件,或者Linux發佈商套件
由於GNU的GPL授權並非不能從事商業行爲,於是很多商業公司便成立來販賣Linux distribution。 而由於Linux的GPL版權宣告,因此,商業公司所販賣的Linux distributions通常也都可以從Internet上面來下載的
爲了讓所有的Linux distributions開發不致於差異太大,且讓這些開發商在開發的時候有所依據,還有Linux Standard Base (LSB)等標準來規範開發者,以及目錄架構的 File system Hierarchy Standard (FHS)標準規範! 唯一差別的,可能就是該開發者自家所開發出來的管理工具,以及套件管理的模式吧!
鳥哥認爲distributions主要分爲兩大系統,一種是使用RPM方式安裝軟件的系統,包括Red Hat, Fedora, SuSE等都是這類; 一種則是使用Debian的dpkg方式安裝軟件的系統,包括Debian, Ubuntu, B2D等等
RPM 軟件管理 | DPKG 軟件管理 | 其他未分類 | |
商業公司 | RHEL (Red Hat 公司) SuSE (Micro Focus) |
Ubuntu (Canonical Ltd.) | |
社羣單位 | Fedora CentOS OpenSuSE |
Debian B2D |
Gentoo |
1.3 Linux當前應用的角色
1.3.1 企業環境的利用
1.網絡服務器:
襲了Unix高穩定性的良好傳統,Linux上面的網絡功能特別的穩定與強大! 此外,由於GNU計劃與Linux的GPL授權模式,讓很多優秀的軟件都在Linux上面發展, 且這些在Linux上面的服務器軟件幾乎都是自由軟件
2.關鍵任務的應用(金融數據庫、大型企業網管環境)
舉例來說,金融業最重要的就是那些投資者、帳戶的數據了,這些數據大多使用數據庫系統來作爲存取接口, 這些數據很重要吧! 很多金融業將這麼重要的任務交給了Linux了! 你說Linux厲不厲害啊
3.學術機構的高效能運算任務
1.3.2 個人環境的使用
1. 桌面計算機:
上網瀏覽+實時通訊(Skype, FB, Google, Yahoo...) ;
字處理;網絡接口之公文處理;辦公室軟件(Office Software)處理數據;收發電子郵件;
2. 手持系統(PDA、手機):
Google 成立了開放手機聯盟 (Open Handset Alliance),並且推出 Android 手機專用操作系統! 而 Android 其實就是 Linux 核心的一支,只是專門用來針對手機/平板這類的 ARM 機器所設計的
3. 嵌入式系統
而要讓硬件系統順利的運作就得要撰寫合適的操作系統才行。 那硬件系統除了我們常看到的計算機之外, 其實家電產品、PDA、手機、數字相機以及其他微型的計算機配備也是硬件系統啦! 這些計算機配備也都是需要操作系統來控制的! 而操作系統是直接嵌入於產品當中的,理論上你不應該會更動到這個操作系統, 所以就稱爲嵌入式系統啦
包括路由器、防火牆、手機、IP分享器、交換器、機器人控制芯片、家電用品的微計算機控制器等等,都可以是Linux操作系統喔! 酷學園內的Hoyo大大就曾經介紹過如何在嵌入式設備上面加載Linux! 你桌面上用來備份的 NAS 說不定內部也是精簡化過的 Linux 系統啊
1.3.3 雲端運用
現在(3)由於行動裝置的發達,產生的龐大數據需要集中處理,因而產生雲端系統的需求! 讓信息/資源集中管理!
1.雲程序
雲程序的底層就是 Linux ,而云程序搭建出來的虛擬機,內容也是 Linux 操作系統哩! 用的越來越多啊!
所謂的『虛擬化』指的是:在一部實體主機上面仿真出多個邏輯上完全獨立的硬件,這個假的虛擬出來的硬件主機,可以用來安裝一部邏輯上完全獨立的操作系統! 因此,透過虛擬化技術,你可以將一部實體主機安裝多個同時運作的操作系統 (非多重引導),以達到將硬件資源完整利用的效果。 很多 ISP 就是透過販賣這個虛擬機的使用權來賺錢的喔
2.端設備
既然運算資源都集中在雲裏面了,那我需要聯機到雲程序的設備應該可以越來越輕量吧? 當然沒錯! 所以智能型手機纔會這麼熱門啊! 很多時候你只要有智能型手機或者是平板,聯機到公司的雲裏面去,就可以開始辦公了哩
1.4 Linux 該如何學習
1.4.1 從頭學習Linux基礎
網絡基礎與安全也很重要,例如TCP/IP的基礎知識,網絡路由的相關概念等等
1.計算器概論與硬件相關知識:
2.先從Linux的安裝與指令學起:
3.Linux操作系統的基礎技能:
4.務必學會vi文書編輯器:
5.Shell與Shell Script的學習:
6.一定要會軟件管理員:
7.網絡基礎的建立:
8.如果連網絡基礎都通過了,那麼網站的架設對你來說,簡直就是『太簡單啦!
計算機基礎 (http://www.study-area.org/compu/compu.htm)
網絡基礎 (http://www.study-area.org/network/network.htm)
1.4.2 選擇一本易讀的工具書
1.4.3 實作再實作
1.4.4 發生問題怎麼處理啊? 建議流程是這樣..
1.在自己的主機/網絡數據庫上查詢How-To或FAQ
2.注意訊息輸出,自行解決疑難雜症:
呵呵! 所以囉,請注意,發生錯誤的時候,請先自行以屏幕前面的信息來進行 debug(除錯)的動作,然後,如果是網絡服務的問題時,請到/var/log/這個目錄裏頭去查閱一下 log file(登錄檔),這樣可以幾乎解決大部分的問題了!
3.搜尋過後,注意網絡禮節,討論區大膽的發言吧:
4.Netman大大給的建議:
在Windows裏面,程序有問題時,如果可能的話先將所有其它程序保存並結束,然後嘗試按救命三鍵 (Ctrl+Alt+Delete),將有問題的程序(不要選錯了程序哦)『結束工作』,看看能不能恢復系統。 不要動不動就直接關機或reset。
有系統地設計檔案目錄,不要隨便到處保存盤案以至以後不知道放哪裏了, 或找到檔案也不知道爲何物。
養成一個做記錄的習慣。 尤其是發現問題的時候, 把錯誤信息和引發狀況以及解決方法記錄清楚,同時最後歸類及定期整理。 別以爲您還年輕,等你再弄多幾年計算機了, 您將會非常慶幸您有此一習慣。
如果看在網絡上看到任何好文章,可以爲自己留一份copy,同時定好題目,歸類存盤。 (鳥哥注:需要注意知識產權! )
作爲一個用戶,人要遷就機器;做爲一個開發者,要機器遷就人。
學寫 script 的確沒設定 server 那麼好玩,不過以我自己的感覺是:關鍵是會得『偷』, 偷了會得改,改了會得變,變則通矣。
在Windows裏面,設定不好設備,您可以罵它;在Linux裏面,如果設定好設備了,您得要感激它
1.4.5 鳥哥的建議(重點在solution的學習)
﹗