轉自:http://www.oschina.net/question/587367_156024
要真正了解Linux的分區機制,對LVM使用相當熟練, 沒有20次以上的Linux裝機經驗是積累不起來的,所以一定不要怕折騰。
1. UBUNTU 適合純菜鳥,追求穩定的官方支持,對系統穩定性要求較弱,喜歡最新應用,相對來說不太喜歡折騰的開發者。
2. Debian,相對UBUNTU難很多的發行版,突出特點是穩定與容易使用的包管理系統,缺點是企業支持不足,為社區開發驅動。
3. Arch,追逐時尚的開發者的首選,優點是包更新相當快,無縫升級,一次安裝基本可以一直運作下去,沒有如UBUNTU那樣的版本概念,說的專業點叫滾動升級,保持你的系統一定是最新的。缺點顯然易見,不穩定。同時安裝配置相對Debian再麻煩點。
4. Gentoo,相對Arch再難點,考驗使用者的綜合水平,從系統安裝到微調,內核編譯都親歷親為,是高手及黑客顯示自己技術手段,按需配置符合自己要求的系統的首選。
5. Slackware與Gentoo類似。
6. CentOS,社區維護的RedHat的復刻版本,完全使用RedHat的源碼重新編譯生成,與RedHat的兼容性在理論上來說是最好的。如果你專注于Linux服務器,如網絡管理,架站,那么CentOS是你的選擇。
7. LFS,終極黑客顯擺工具,完全從源代碼安裝,編譯系統。安裝前你得到的只有一份文檔,你要做的就是照文檔你的說明,一步步,一條條命令,一個個軟件包的去構建你的Linux,完全由你自己控制,想要什么就是什么。如果你做出了LFS,證明你的Linux功底已經相當不錯,如果你能拿LFS文檔活學活用,再將Linux從源代碼開始移植到嵌入式系統,我敢說中國的企業你可以混的很好。
一、Linux基礎
二、Linux平臺的C/C++開發,同時還有Bash腳本編程
工具方面推薦VIM的官方手冊,GCC中文文檔,GDB中文文檔,GNU開源軟件開發指導(電子書), 匯編語言程序設計(讓你對庫,鏈接,內嵌匯編,編譯器優化選項有初步了解,不必深度)。然后是GCC,Make,Eclipse(Java,C++或者)。
三、UNIX環境高級編程
UNIX程序設計藝術, 世界頂級黑客將同你分享他的看法。
四、選擇方向:網絡,圖形,嵌入式,設備驅動
網絡方向:服務器軟件編寫及高性能的并發程序編寫
現在是時候做分流了。 大體上我分為四個方向:網絡,圖形,嵌入式,設備驅動。
如果選擇網絡,再細分,我對其他的不是他熟悉,只說服務器軟件編寫及高性能的并發程序編寫吧。 相對來說這是網絡編程中技術含量最高的,也是底層的。 需要很多的經驗,看很多的書,做很多的項目。
我的看法是以下面的順序來看書:
APUE再深讀 – 尤其是進程,線程,IPC,套接字
多核程序設計 - Pthread一定得吃透了,你很NB
UNIX網絡編程 – 卷一,卷二
TCP/IP網絡詳解 – 卷一 再看上面兩本書時就該看了
5.TCP/IP 網絡詳解 – 卷二 我覺得看到卷二就差不多了,當然卷三看了更好,努力,爭取看了
6.Lighttpd源代碼 - 這個服務器也很有名了
7.Nginx源代碼 – 相較于Apache,Nginx的源碼較少,如果能看個大致,很NB。看源代碼主要是要學習里面的套接字編程及并發控制,想想都激動。如果你有這些本事,可以試著往暴雪投簡歷,為他們寫服務器后臺,想一想全球的魔獸都運行在你的服務器軟件上。
Linux內核 TCP/IP協議棧 – 深入了解TCP/IP的實現
如果你還喜歡驅動程序設計,可以看看更底層的協議,如鏈路層的,寫什么路由器,網卡, 網絡設備的驅動及嵌入式系統軟件應該也不成問題了。
當然一般的網絡公司,就算百度級別的也該毫不猶豫的雇用你。 只是看后面這些書需要時間與經驗,所以35歲以前辦到吧!跳槽到給你未來的地方!
圖形方向,我覺得圖形方向也是很有前途的,以下幾個方面。
Opengl的工業及游戲開發,國外較成熟。
影視動畫特效,如皮克斯,也是國外較成熟。
GPU計算技術,可以應用在瀏覽器網頁渲染上,GPU計算資源利用上,由于開源的原因,有很多的文檔程序可以參考。如果能進火狐開發,或google做瀏覽器開發,應該會很好 。
嵌入式方向:嵌入式方向沒說的,Linux很重要。
掌握多個架構,不僅X86的,ARM的,單片機什么的也必須得懂。 硬件不懂我預見你會死在半路上,我也想走嵌入式方向,但我覺得就學校教授嵌入式的方法, 我連學電子的那幫學生都競爭不過。 奉勸大家,一定得懂硬件再去做,如果走到嵌入式應用開發,只能祝你好運, 不要碰上像Nokia,Hp這樣的公司,否則你會很慘的。
驅動程序設計:軟件開發周期是很長的,硬件不同,很快。 每個月誕生那么多的新硬件,如何讓他們在Linux上工作起來,這是你的工作。 由于Linux的兼容性很好,如果不是太低層的驅動,基本C語言就可以搞定,系統架構的影響不大, 因為有系統支持,你可能做些許更改就可以在ARM上使用PC的硬件了, 所以做硬件驅動開發不像嵌入式,對硬件知識的要求很高。
可以從事的方向也很多,如家電啊,特別是如索尼,日立,希捷,富士康這樣的廠子,很稀缺的。