既然知道 Linux 在這個世界已經存在了,而你又是個挺喜歡擺弄計算機的人,那麼對 Linux 是怎樣的一種存在難道不感到好奇麼?css
也許在你開始嘗試使用 Linux 時,已經看到了不少對 Linux 不利的言論。例如,發行版本太多難以取捨、安裝繁瑣、應用程序沒那麼多、裝顯卡驅動很痛苦、無線網卡點不亮、聲卡沉默着、中文輸入法又在 Emacs 裏歇菜了……然而 Linux 已經在這個世界上存在了,即便它存在這樣或那樣的問題,它依然沒有死掉,更況且在 Linux 中去努力的化解這些問題的過程,也就是你對計算機的理解日益精深的過程。python
之前我以爲 Windows 用戶是這個世界上對計算機最沒有好奇心的用戶,他們幾乎徹底是由於討厭計算機而喜歡 Windows。如今,感受與那些叫囂着要用智能手機/平板取代 PC 的人類相比,Windows 用戶多少對計算機還保持着一點點好奇……linux
首先,你在 Windows 裏積累的大部分經驗對於學習 Linux 是沒有用的,並且在 Linux 世界裏,Windows 的使用經驗每每會變成很壞的習慣。Mac OS X 洗盡鉛華後,卻是與 Linux 很接近,由於它們算是 Unix 的嫡系。windows
不少 Linux 桌面愛好者爲本身所喜歡的 Linux 傳教,他們用着本身或別人配置的漂亮的桌面來誘惑 Windows 陣營中對 Linux 持觀望態度的人。不否定,他們常常會成功,可是被誘惑的 Windows 愛好者很快就能發現 Linux 桌面只不過是個肥皂泡。架構
2014 年,Linux 之父 Linus 說他仍然想要桌面……因此,Linux 如今依然是沒有真正的『桌面』環境的。目前解決這個問題的惟一辦法就是像我在前面所說的那樣,不要將 Windows 的使用經驗搬到 Linux 裏,對於 Linux 而言,這些使用經驗徹底的水土不服。app
城裏人到了鄉下,沒有紅綠燈、沒有下水道、沒有大超市、沒有星巴克……這並不能說明鄉下的很差,只能說明你帶來了城裏人的壞習慣!這些壞習慣正逐漸將本來寂靜的 Linux 村落改造爲亂糟糟的城鄉結合部。後來,也許這些城鄉結合部也會變成真正的城市,可是如今你要麼容忍城鄉結合部的混亂與不穩定,要麼就去尋找生態環境還沒有惡化的 Linux 山村。ide
既然已經否認了 Linux 桌面主義,那麼我認爲最能體現 Linux 特點的發行版應該是 Gentoo,而不是 Ubuntu、Fedora、Open Suse 這些號稱開箱即用的 Linux 發行版,由於開箱即用,不等於開箱好用。不過,若是你已經很熟悉這些開箱也很差用的 Linux 發行版了,能夠沒必要在乎個人推薦。wordpress
安裝 Gentoo 的過程,本質上就是使用 Gentoo 的過程。得益於 Gentoo 完善的文檔,只要略有些耐心與英文閱讀能力,按照 Gentoo 安裝手冊 的步驟進行,用不了 1 天,就差很少能裝上 Gentoo 的基本系統(內核 + 軟件包構建工具 + Shell)。工具
Linux 的野外就是黑乎乎的字符終端(TTY),這裏面運行着 Shell。在現代 Linux 系統中,Shell 差很少對應於人類的內衣,而圖形窗口系統則對應於人類的外套。學習
沒有了 Shell, Linux 是裸奔的 Linix。沒有了圖形窗口,Linux 就是穿着褲衩在奔跑的 Linux。
從某種意義上來講,Windows 其實比 Linux 更先進得多……它不穿內衣就直接穿外套了!
Linux 世界有不少 Shell,標配的 Shell 叫 Bash。
最好的 Bash 教程,當屬 Gentoo 之父——Daniel Robbins 所寫的 Bash by Example, part 1 2 3。Daniel Robbins 的命運宛若 Linux 世界的高加林……若是不知道高加林何許人也,可參考路遙文集中的「人生」。不過,Daniel Robbins 後來又建立了 Funtoo 項目……Funtoo 可能只適合有經驗的 Gentoo 用戶使用。
我建議你在嘗試爲 Gentoo 安裝一個桌面系統以前,先在黑乎乎的 Bash 中呆一段時日,苦你心智,磨你體膚,行拂亂你所爲……堅持下去,你就能學會在 Bash 中用命令與腳本控制你的機器,學會用 sed 與 Emacs 編輯文件。固然,這個過程對你而言可能最大的痛苦是無法顯示與輸入中文。
在 Linux 的世界裏,中文並非必須的,英文是必須的,可是隻要你願意,仍是有辦法讓 TTY 支持中文的顯示與輸入的,並且搞定這個問題,意味着你對 Linux 的認識程度已經超過了不少其餘 Linux 發行版的用戶。
一個城裏人,當他可以很嫺熟的在野外生存着,回到城市以後,他也許可以比之前更善於利用城市這個系統。至少,野外生存幫助他創建了不少生活上的好習慣!
所謂的 Linux 發行版,本質上只是一些比我更有經驗的 Linux 用戶終年累月的收集了一些比較有名的軟件源碼包,最有名的天然是 Linux 內核源碼包。收集到這些源碼包以後,就針對主流硬件上以一種你們好纔是真的好的策略將源碼包編譯成可執行文件,而後又將這些可執行文件作成光盤鏡象文件供用戶下載。
從上述角度來看,Gentoo 不算是 Linux 發行版。Gentoo 的工做主要是向用戶提供一個很是精簡的系統,也就是所謂的自舉系統與 Stage 3,目的是讓用戶擁有一個能夠運行的 Linux 基本環境,而後提供一個 portage 軟件包,這個軟件包主要由一個名曰 emerge
的 python 腳本以及一大堆分門別類的 Bash 腳本( ebuild
腳本)構成。若是你已經裝上了 Gentoo,那麼你必定懂得我在說什麼。
每份 ebuild 腳本記錄着相應的軟件源碼包的下載、解包、編譯環境檢測、編譯、安裝等步驟。例如我要安裝大名鼎鼎的 Emacs,只需在終端中執行如下命令:
# emerge emacs
這個名曰 emerge
的 Python 腳本會自動去 /usr/portage/app-editors/emacs
目錄尋找當前最新版本的 ebuild 文件——emacs-24.5.ebuild
,而後根據這份 ebuild 腳本中記錄的步驟,自動進行 emacs-24.5 源碼包的下載、解包、編譯環境檢測、編譯、安裝……
也就是說,Gentoo 的 Portage 只是告訴 emerge
應該怎樣安裝軟件包。這就是 Gentoo 的精華所在。由於軟件包是從源碼包編譯安裝的,這意味着你有不少機會去定製或改進這個過程,並且 Portage 也爲此打開了便利之門。
在那些真正的 Linux 發行版裏,經過編譯源碼包的方式安裝軟件,每每很是痛苦,由於一般很難弄清楚要編譯安裝的軟件包依賴哪些軟件包。此外,這些 Linux 發行版所謂的『升級』,差很少等同於從新裝一遍系統,並且差很少每半年裝一遍(幾個主流的發行版,差很少都是每半年發佈一個新版本)。我很謙虛的說,個人 Gentoo 系統已經連續用了 5 年,如今依然保持着軟件包近乎最新的狀態。
若是你受了一些 Linux 桌面傳教士的蠱惑不幸用上了 Ubuntu、Fedora 之類的發行版,不要怕, Portage 依然能夠拯救你!理論上,在這些 Linux 發行版中,安裝 Portage 並非多麼困難的事。只要有了 Portage,你能夠經過軟件包更新的方式,一點一點的將系統變成 Gentoo!
Gentoo 這種編譯安裝軟件的方式雖然很低效,可是它可以讓你養成一個好習慣:不要安裝太多的軟件包,而且儘可能遠離那些巨型軟件包。這個世界上,真正頗有用的軟件包並非太多,而那些巨型軟件包每每也是 Linux 世界的違章建築。
長期的在黑乎乎的 TTY 裏也能遊刃有餘的生活着,可是圖形化的世界畢竟仍是更直觀一些。朋友給你發來一份 MS Word 或 PDF 文檔,雖然經過 Linux 的 Framebuffer 能夠構建出 GUI 程序可視化這些文檔內容,可是這樣就真的是從新發明輪子了——從新發明了 Xorg 或 wayland。我一直都以爲 wayland 是從新發明輪子。
Linux 的桌面環境如今依然像個亂糟糟的城鄉結合部,也許惟一使人自豪一點的就是它的歷史。桌面的基礎架構 ——X 窗口系統稱雄江湖的時候,Windows 系統還未誕生。
X 目前正逐漸被現代的 Wayland 取代,然而基礎架構的更換並不能真正解決目前這種城鄉結合部的局面!由於沒有財力雄厚的公司進行統一規劃,自由軟件開發者們常常爲了本身的自由而搭建違章建築,而後干擾了用戶們的自由。對於中文用戶,最大的違章建築當屬 GTK 與 QT,它們破壞了 XIM 的大一統,致使至今爲止 Linux 圖形界面的中文輸入支持依然是個使人頭疼的問題(可參考:https://www.csslayer.info/wordpress/diary/why-linux-ime-sucks/)!
我比較喜歡的城鄉結合部是 xfce4,以前一直用的是 GNOME。曾被不少人詬病的 GNOME3 我也用了將近 4 年,直到有一天我發現它的一個新版本剝奪了我最須要的一些自由,因此毅然轉移到了 xfce4。這個故事想說的是,在一個充滿自由的環境裏,你最不須要的就是死守舊習慣。
用 xfce4 的好處是它提供了夠用的窗口管理功能。我不認爲 GNOME 3 真的有什麼比 xfce4 更先進的地方,除非是到了 wayland 徹底取代了 Xorg 的那一天。可是,從如今的情況來看,wayland 的出現讓城鄉結合部又混亂了一點,因此你不懂我在說什麼,這很正常……先按照 https://wiki.gentoo.org/wiki/Xfce 所說的步驟,裝上 xfce4。
歡迎來到混亂的 Linux 城鄉結合部,在終端裏求生成功的魯濱遜同窗!
要安裝 Gentoo,即便你對 Linux 一無所知,也是能夠按照 Gentoo Handbook 的說明,成功的安裝 Gentoo。可是,安裝 Gentoo 的過程當中須要手動輸入許多 Linux 命令。若是沒有 Linux 的基礎知識,也許沒法理解與欣賞 Gentoo 的安裝過程。
安裝一個 Linux 的前提是要懂得 Linux,這彷佛存在矛盾,由於要弄懂 Linux 的前提是應該擁有一個 Linux 操做環境。這雖然很矛盾,但這就是現實。破解這一矛盾的惟一辦法就是自舉(BootStrap)。
C 語言編譯器是自舉的一個很好的示例。第一個 C 語言編譯器是用匯編語言編寫的。第二個 C 語言編譯器能夠用 C 語言來編寫可是須要由第一個 C 語言編譯器來生成,這樣就完成了 C 語言編譯器的自舉。
要安裝 Gentoo,前提也是須要你的計算機事先運行着一個 Gentoo 環境,而後在這個 Gentoo 環境中安裝 Gentoo。因此 Gentoo 開發者爲 Gentoo 的安裝提供了一個近乎最小化的自舉系統,以 CD 鏡象文件的形式發佈,稱爲『Minimal installation CD』,其下載與刻錄方法請參考 Gentoo AMD64 安裝手冊的『介質』一節。
若是你對 Linux 並非很瞭解,那麼下載 Minimal installation CD 以後,不須要急於閱讀 Gentoo Handbook 並進行 Gentoo 的安裝。
既然 Minimal installation CD 是用於 Gentoo 自舉的,那麼它自己就是一個可用的 Linux 基本環境。也就是說,學習 Linux,實際上是不必安裝一個 Linux 的。
要將 Minimal installation CD 做爲學習 Linux 的實踐環境,最好是將鏡象文件刻錄到 U 盤上,這樣能夠獲得所謂的 Gentoo LiveUSB。現代的計算機,差很少都支持 U 盤啓動,所以 Gentoo LiveUSB 也是一個很不錯的隨身系統。製做與使用 Gentoo LiveUSB 的方法見:https://wiki.gentoo.org/wiki/LiveUSB/Guide。
若是擔憂在 Gentoo LiveUSB 中的學習過程當中由於一些誤操做而對你的計算機中既有的系統產生毀滅性打擊,也能夠在 VirtualBox 之類的虛擬機上運行 Gentoo LiveUSB 或者直接運行 Minimal installation CD,具體用法請參考本文附錄部分。
Daniel Robbins,是 Gentoo 的創始人,Funtoo 的創始人與領導者,不只精於工程與技術,也是一位優秀的 Linux 基礎知識的傳播者。他所寫的一系列文章很是務實,而且文字平實,內容流暢,用例豐富。閱讀它們,有大學英語四級水平就足夠了。固然,若是有人能將它們翻譯成中文,也很是有意義。
下面這四篇文章不只可以讓你掌握 Gentoo 安裝過程當中所使用的大部分 Linux 命令,也能讓你經過初級Linux專業認證的 101 考試。
http://www.funtoo.org/Linux_F...
http://www.funtoo.org/Linux_F...
http://www.funtoo.org/Linux_F...
http://www.funtoo.org/Linux_F...
可是,若是你想理解 Gentoo 的包管理工具——Portage 的基本原理,並順便掌握 Bash 的基本知識,能夠繼續閱讀:
http://www.funtoo.org/Bash_by...
http://www.funtoo.org/Bash_by...
http://www.funtoo.org/Bash_by...
9 年前我剛剛開始折騰 Gentoo 的時候,已經用過了幾個月的 RedHat 公司發佈的 Fedora Core(如今的 Fedora 項目的前身)。當時自認爲已經具有了一些『Linux 使用經驗』,但事實證實這些經驗對於擺弄 Gentoo 並無產生多大幫助。在個人不懈努力下,折騰了兩個通宵,終於讓 Gentoo 在個人機器上運行起來,後來的幾個月,斷斷續續補習了一些 Linux 基本命令的用法以後,才感受 Gentoo 的安裝過程其實很是的簡單,甚至能夠將這個過程做爲 Linux 基礎知識學習中的一個實踐環節。
如今這篇文檔臨近尾聲,而我只想再說兩句:
首先你要懂得 VirtualBox 的基本用法,好比如何基於光盤鏡象文件的方式安裝系統。
若是想在 VirtualBox 中直接運行 Minimal installation CD 的鏡象文件,那麼這就與向 VirtualBox 中安裝其餘系統差很少,惟一不一樣的就是所進入的 Linux 環境將做爲學習 Linux 基礎知識的環境。
若是想在 VirtualBox 中運行 Gentoo LiveUSB,那麼要稍微麻煩一點,可參考:http://www.intowindows.com/ho...