我是抱着玩的心態開始用電腦的。自從家里有了電腦之后,我就想方設法抓起鼠標和鍵盤打一會兒游戲。《金庸群俠傳》《仙劍》《星際》《盟軍敢死隊》,這些老游戲都玩了個遍。父母擔心我沉迷游戲,一度沒收了我的鼠標和鍵盤。總之,當時的電腦只是個娛樂平台。
那個時候已經在提“20世紀是計算機的世紀”。好萊塢電影開始把黑客塑造成孤膽俠客。我經常抱着《電腦報》或《大眾軟件》,幻想着自己成為一名俠客一般的計算機高手。但對於一個內地小城的孩子來說,深入接觸計算機技術的機會很有限。我曾經很認真地找了一套計算機等級考試的書看。把二進制運算、SQL命令、QBasic語法都記得滾瓜爛熟,卻因為裝不好編譯環境,最終沒能寫出一個可以使用的軟件。后來讀那些頂級黑客的傳記,講他們從小如何如何編程,一直很好奇他們是如何度過環境搭建這個難關的。后來發現,這些人都有機會接觸一些編程高手,所以在他們的眼里,根本不認為這是太大的問題。
上大學時,我選擇了物理專業。物理專業做數值模擬和數據處理,C語言和Fortran語言編程也是必修課。有了大學里的資源,編程環境的搭建變成了小菜一碟。只是自己的電腦太過老邁,動不動就要死機。朋友們呼嘯着打Dota時,我卻在為Word觸發的藍屏頭痛。相熟的朋友看不下去,扔給我一張光盤,要我重裝Ubuntu系統。Ubuntu是當時最流行的一個Linux版本。死馬當活馬醫,我安裝了光盤上的Ubuntu。系統裝好了,電腦死機的次數大為減少。不過Linux下的圖像化界面確實和Windows有差距,辦公軟件也比不上Office。我戚戚然地把Linux當作低成本的二等方案。但無論如何,當時正值我做“大學生研究計划”,運行穩定的Linux還是救我於水火。事后請朋友吃飯,問朋友哪里來的光盤,才曉得Ubuntu的安裝光盤可以免費領取。
更讓我刮目相看的是Linux下的軟件分發。那個時代還沒有蘋果App Store這樣的東西。所謂的在線軟件分發,就是上網下載exe安裝包。用了Ubuntu之后,我需要的軟件基本都可以在軟件源中找到。在終端輸入一行命令,編譯環境就搭建好了。我不用擔心病毒,而且大部分情況下也不需要付費。再加上學校里有Ubuntu鏡像,下載一個軟件往往只需要幾秒鍾。於是,探索Linux下的軟件成了我的一大業余愛好,我漸漸習慣了用ImageMagick來做圖片處理,用FFmpeg來轉換視頻,用Wget來做網絡下載。這些基於命令行的應用軟件,再搭配bash的批處理功能,往往能實現強大的復合功能。
我也越來越享受Linux系統提供的編程環境。在寫C語言和Fortran語言作業時,我就開始用vim編寫自己的作業,用GCC和GFortran來編譯,再用GDB來調試。這個過程要比Windows下的IDE麻煩。但當接觸其他語言時,相同的工具可以復用,不用每一次都花費大量時間來熟悉全新的IDE。后來在Linux下學習Python語言時,很容易就可以上手。如果說編程是去游樂園,那么Linux為入園玩耍提供了直通車。想起小時候為編譯環境苦惱的自己,真想穿越時光送去一張Ubuntu的安裝盤。
我覺得對於一個電腦愛好者來說,Linux最美的地方就是開放。Linux的開放可以分為多個層面。軟件層面是開放的,用戶可以免費使用。文檔也是開放的,你可以在終端下用man命令方便地查詢。操作系統是開放的,你可以自由地調整系統,也可以深入了解其原理。代碼上亦是開放的,你隨時可以看到世界上頂級程序員寫下的源代碼。在Linux系統下,“實現”和“如何實現”是合二為一的。吃魚的同時,釣魚的本事也可以學到。因此,Linux提供了一個絕佳的學習平台。
后來,太太送給我一部樹莓派做生日禮物。我驚喜地發現,樹莓派使用的操作系統正是Linux。更棒的是,樹莓派的底層硬件也很開放。它可以方便地通過有線或無線的方式和硬件外設進行連接。它對使用方式沒有太多限制。於是,在后來的智能硬件創業項目,我總是在研發版本中使用樹莓派。無論是作為硬件的樹莓派,還是作為軟件的Linux,都遵循了相同的規律:開放戰勝了封閉。知識的共享帶來更加活躍的創造力,也給社會帶來協同合作的機會。
幾年前,我讀到印度的一個公益項目。這個項目募集舊電腦,在電腦上安裝Linux系統,再發放給貧困地區的兒童使用。這個項目給孩子們帶來的不止是歡樂,還改變了他們的命運。當樹莓派發布的新聞出來時,我想到的就是這款微型電腦的社會意義。后來讀到樹莓派之父厄普頓發明這台小電腦的初衷,果然也是教育。我由此確信,有很多人和我抱着相同的見解。
如今,“科技取代人類”的言論甚囂塵上,很多人對技術霸權頂禮膜拜,對人類的未來充滿絕望。其實,科技本身是中性的。科技可以取代人們的工作,也可以幫助人們更好地就業。像樹莓派和Linux這樣的技術,尊重了用戶本身的創造力。它們用一種開放協作的態度,提高了社會的溫度。我也一直抱着這樣的理念,堅持在博客上分享自己的所知。我還記得自己在探索計算機時無路可循的尷尬。即使是出於簡單的同理心,我也希望自己的分享能幫助任何一個在門檻上抓耳撓腮的學習者。
借着這股心勁,我克服了寫作的羞澀,投入到這本書的寫作中。我希望這本書能以樹莓派硬件為平台,全面講解Linux原理。全靠昕梓的通力合作,我才能順利完成這個野心勃勃的目標。杜鵑、陳思為幫我審讀了全書,提出大量的修改意見,讓書稿變得真正可讀。安娜會在關鍵的時候給我們提供任何所需的幫助,全程引導了寫作過程。最后,這本書還要感謝上海的地鐵11號線。全靠這班地鐵上的空座位,我才能坐着寫出大部分文字。
在設計本書內容時,昕梓和我決定尊重讀者,不避諱艱深的內容。畢竟,樹莓派本身只是一個入口。這個入口的背后有着豐富的操作系統知識。無論是編程,還是深入理解計算機,一定深度的操作系統知識都不可或缺。我們會從樹莓派的基本使用講起,一直深入到操作系統原理本身。在后面一部分,我還加入了基於樹莓派的實踐項目,希望能拋磚引玉,激發用戶的創造力。當然,篇幅所限,我也不得不舍棄一些細節。但我相信,只要體驗到邊玩邊學電腦的樂趣,那么其他技術的掌握也都可以沿着相同的軌跡重復進行。
那樣的話,這本書就沒有遺憾了。
本文為《樹莓派開始,玩轉Linux》一書前言