細數我與 Linux 這十三年

吳章金發表於2019-08-16

本文首次發表在 細數我與 Linux 這十三年 -- 泰曉科技

大學畢業的時候總想著要 “轟轟烈烈地” 寫一寫 “我的大學”,工作了以後慢慢地覺得好像也沒什麼好寫的,工作八、九年後,現在離職了,接觸了知乎、泰曉原創團隊微信群等各個渠道大家提出的問題後,覺得似乎可以簡單回顧一下。

所以,下面簡單回顧一下 “我的大學” 以及 “我的工作”,這些基本都圍繞 Linux,希望可以打發一下大家的碎片時間。

在黃土高原萃英山下組建 Linux 社團

第一次看到黃土高原

2003 年高考,筆者把報考的第一志願全部填寫為 “計算機專業”,因為對 “科技奧祕” 充滿無盡的遐想,雖然那夥都沒怎麼碰過電腦,高考後的那個暑假才學會了五筆打字。

2003 年 9 月,坐了 20 多個小時的綠皮車,從江西南昌一路到甘肅蘭州,天亮以後,過了寶雞,看到黃土高原滿目的 “荒蕪” 感覺像是被流放到了邊陲,淚水直流,等到輾轉下了校車搖了兩個小時到榆中校區(現在有高速和火車,半個多鍾可到),看到蔥翠的校園和熱情接待的師兄師姐們,心才平靜下來。

各種折騰

到學校以後,在師兄師姐的地攤上買了好幾本感覺有趣的技術圖書,比如說 HTML,由於買不起電腦,所以跟同學們借了一堆上機證,每天下午上完課,揣著個饅頭就去學校機房排隊去了。

也有加入學院報社編撰《資訊星空》去圓自己的“文學夢” —— 咬文嚼字,“排版碼字”而已了,後面很榮幸有機會一直做到副主編。真地很想念當年投稿的作者們,一起編輯報紙的小夥伴們,還有第一食堂前那家列印社協助排版的同事們。這兩年多的經歷,不僅結識了很多喜歡文字喜歡文學的朋友,也養成了嚴謹的撰寫和編輯習慣,所以,泰曉科技的投稿作者們一定要耐心,有錯別字是比較難接受的,有排版不美觀也是比較難接受的,可能來來回回得改好幾版,不過,改個幾版後,提升會很明顯的,歡迎接受挑戰 ^_^

剛學完 C 語言沒多久參加過一屆學校 ACM 比賽,拿了二等獎,贏了一個 16M 的 U 盤,現在還珍藏著。

然後也有暑假一個人窩在宿舍寢室編撰 組合語言課程的參考答案,那夥不知道去找出版社出版,而是跑到學校電臺去打字做勤工儉學,歪打正著把碼字速度提升了不少。

期間,也陸陸續續參加過學校就業網站等各類專案。

對面宿舍的 “北極” 同學 10 歲那年用父母送的遊戲機學 Qbasic,他在那一屆 ACM 比賽拿了第 3 名,後面陸續帶隊參加全國的比賽,而我則徹底離開了 ACM 比賽,遠離了對演算法的研究。

FTP 搜尋引擎

大學裡頭,由自己發起並持續改了 n 個版本的軟體,當屬 FTP 搜尋引擎。那時候成天夢想著打造一個西北地區高校的 FTP 搜尋引擎,從大二寫到大四。

大二以後死皮賴臉跟家裡要錢攢了一臺電腦(非常感激老爸老媽)。那時候成天抱著 MSDN 大磚頭電子書啃 VB,同時不斷向 “北極” 同學取經(所以,“北極” 可以說是我大學階段的計算機啟蒙老師)。

在資料庫、網路這些課程通通沒有接觸前,硬是在 Windows 下用 VB+Acess+ASP 碼了個帶圖形介面,集爬蟲、資料儲存、搜尋介面為一體的具有完整功能的 FTP 搜尋引擎。

然後每隔一段時間在自己機器上跑完所有西北地區高校的 IP 地址段,跑完後把資料庫和網站更新到學校提供的個人空間上。

那段時間成就感滿滿,因為可以看到實實在在有很多同學在用,各種五花八門的搜尋內容都有,然後為了避免那啥,自己還因此建立了敏感詞庫等功能,後來陸陸續續迭代,一直到後面在 Linux 平臺用 C+MySQL+PHP 重構了一遍。那個時候,跟隔壁班的 Tom 同學一起搞,他負責 UI 設計,我負責剩下的部分,搞出來有模有樣。

FTP 搜尋引擎 —— 獵鷹搜尋 首頁

被 “rm -rf" 傷到

只可惜,大四畢業那年,需要把電腦轉給弟弟用,在整理資料時,一條 rm -rf 結束了一切。

只留下在實驗樓 502 室無數個通宵達旦 debugging 的夜晚以及相關的 debugging 文章,比如說 Linux 段錯誤詳解,當然,還有那篇基於 VB+Access+ASP 版本寫的論文(沒有在任何雜誌發表,直接放到了網路上):FTP搜尋引擎的設計與實現(優化版),至今還在網路流傳。

那個時候,有幾年,陸陸續續有很多高校的應屆畢業生找過來,要幫忙寫論文,由於鄙視這種學術作風,所以一一拒絕了,雖然當時一個月才拿實驗室 200 塊,但是不為這點小錢折腰的精神至今還是讚賞的。

當然,這個專案有幾個很重要的貢獻:

  • 因此取了現在的網名:Falcon,因為當時取的搜尋引擎名字是 “獵鷹搜尋 —— 生來是獵手,網海中搜尋”,原來想用 eagle,只是覺得不夠霸氣。

  • 認識了 Open Source 和程式碼管理工具的重要性,如果當時把程式碼開放到 sf.net,就不至於因為一條 rm -rf 就蕩然無存了。

  • 後面那些考試,比如說資料庫都是很容易就 Pass 了。因為在專案裡頭,SQL 都被玩爛了,各種優化需要都實踐過了嘛,幾百萬條資料要在幾秒內返回,得優化資料庫索引,優化每條 SQL 語句。

差不多時間段,“北極” 在 Windows 平臺上,不停地用 C+記憶體資料庫+CGI 寫他的搜尋引擎版本,速度很快,介面很一般。

蘭大開源社群剛成立時的那些事兒

2005 年 9 月,教育部和科技部批准在全國 40 所高校建立 “國家 Linux 技術培訓與推廣中心”,蘭州大學於 10 月份建立 “Linux 技術中心”,成為首家 “大學國家 Linux 技術培訓與推廣中心”

之後學校開設了相關的 Linux 課程,同學們開始涉獵 Linux 方面的知識。

也是在這一年,我和 Tom 因為在搞 FTP 搜尋引擎,被學校團委的徐老師發現,那個時候她正在負責一個校園入口網站:萃英線上,然後討論把這個搜尋引擎搞得正式一點。

因此結識了萃英線上的主要成員 osier、jolestar、柳力、acai、K.D. 等同學,然後突然有一天,他們有人提出來要組建學校的 Linux 使用者組,於是大家一起玩 Linux,印象中,從 TurboLinux, MandrivaLinux, Ubuntu 5.04 開始玩。

然後,委派我去跟當時上資料庫課程的副院長申請裝置資源,那個時候打探到有個 IBM 實驗室,有臺很不錯的伺服器閒置著,不過當時沒能申請上,後來輾轉聯絡上了 DSLab 的 Kinggo 老師,後來在他的支援協助下,我們在學校網路中心申請到了伺服器,另外,也協調學院在實驗樓給我們支援了一間辦公室。

2006 年 5 月 12 日,蘭州大學第二屆Linux開放日暨蘭州大學開源社群對外開放,正式成立了蘭大開源社群,大家做了一些分工,有的搭建論壇,有的搭建社群映象站,熱火朝天。

主導建立面向全校的正式社團

後來 osier 等師兄畢業後,DSLab 還在讀研的 “黃天” 師兄找到我和 Tom 接手負責後續的運營,我們商量組織了全校範圍內的納新,制定了團隊章程,註冊了正式的校園社團,方便持續永久合法地運作。現在回頭來看,這個策略是對的,一個鬆散的開源團隊是無法持續存在下去的。

另外,為了避免侷限在資訊學院,我們主導把社團註冊在了資源環境學院(可惜地是,後面有一屆負責人又被忽悠把註冊單位改回了資訊學院),從而確保團隊有來自各個專業背景的同學,大家可以相互學習,切磋,交換思想。

同時,建立了兩條線的管理制度,一條技術線,一條活動線,雙 “CEO” 制度。也逐步形成了社團文化,建立了邀請外部工程師來做講座,邀請優秀畢業生來做交流以及畢業時捐贈圖書的傳統,還搞了幾個經典的活動,新人培訓,軟體自由日,軟體自由日通常會播放 Revolution OS、裝機、以及講解 Linux 命令上手。

那個時候,每年都有來自美術、物理、行政、資環、管理各個不同專業的新同學加入,很多同學都是品學兼優。筆者後來在學校繼續讀研,雖然大四後就交棒給了下一屆新人 Loyou 和 Silent,但是一直以來都在關心和支援社群直到研究生畢業。畢業後,也贊助過幾筆小的費用,用於採購書籍和映象站硬碟。

何不在貴校也建立一個社團

在這個時間段,“北極” 在負責當時學校的一個 BBS,星期天社群。後來,我們都有幸被邀請當西北望 BBS 的技術站務,只是那段時間專案多,站務技術工作也少,所以我這邊沒有什麼實質的貢獻,只是在自己熟悉的 Linux 版塊做好版務工作。

那個時候,除了對技術的執著,其實還有一種責任感在驅使著我們,就是覺得我們應該為學校留一下一點什麼,現在回頭來看,每年都有幾十位來自蘭大開源社群的應屆生畢業,甚感當時的付出是值得的,也感謝有機會和那麼多優秀的師兄師姐師弟師妹們一起學習和奮鬥過,如今很多已經畢業,在各自的崗位上做得很出色,為他們感到自豪,也希望更多的新同學不斷地加入,通過這樣一個優秀的團隊,抱團學習,一起成長。

蘭大,雖然地理位置偏僻一些,但是即使在那邊學習計算機,離東部沿海的網際網路和硬體企業很遠,但是如果執著,有求知慾,不管是加入蘭大開源社群,還是加入其他的 IT 社團(當時的星期天論壇,以及萃英線上、西北望BBS 等等),都是有機會跟有經驗的老師和學長一起學習,通過網路,大家還可以跟來自世界各地的人們一起交流。其他高校也是,並不是所有高校都有豐富的裝置和網路資源,也不一定能碰到慷慨支援學生的 “kinggo” 支援,但是隻要去想辦法,去克服,肯定是可以解決的。

前段時間,我們去收集全國高校的開源社團資訊,能夠通過搜尋引擎檢索到的寥寥無幾,所以,非常鼓勵所有高校的計算機新生們,如果有興趣,可以去抱團組建這樣的團隊,除了一起切磋研討技術,對於組織能力,協作意識都是非常重要的歷練。

在市區 DSLab 玩數控車床

被 kinggo “忽悠” 了

由於蘭大開源社群的這段經歷,有幸結識了 DSLab 的 kinggo 老師,也參加了 DSLab 組織的幾次 “Summer School”,這個完全向本科生免費開放,由 Nicholas Mc Guire 教授上課。我們都親切地稱呼他 Nico。

所以到本科畢業的時候,剛好那個時候還進了基地班,積分合計下來能排到專業前三,自己有保送的機會,就跟 kinggo 老師聯絡,請他幫忙推薦國內的高校實驗室,後來,總之是被 “忽悠”(也確實有主觀覺得 Linux 前景很贊,老師們也比較 Nice) 直接去 DSLab 實驗室,跟 Nico 和 Kinggo 老師學習和研究實時系統和安全關鍵系統。

30 分鐘 Watchdog

從 Nico 的 Summer School 上學到的最重要的一課是:“如果一個解決問題的方法花了 30 分鐘實施毫無效果,要停下來思考一下,分析是不是哪裡出了問題,不要盲目重複”。這個觀念在後來的研究和工作中,屢次被得到驗證,筆者也一直跟周邊的朋友和同事宣導。

讀研那些事兒

所以大三、大四基本就跟 Tom 一起做了 DSLab 的研究專案,師兄師姐們都非常 Nice 和照顧,前前後後有參與做過 KIOSK,有做過 IBM Power CELL 處理器上的 gdb tracepoint,當時積累不夠,時間倉促,結果做的很一般。還有用 power 的板子做過一個模組化的閘道器競賽,還因此後面不斷迭代搞了一個 VnstatSVG

後來做研究,主要有用 XtratuM 做 Fault-tolerant System,而投入時間最多的當屬跟西門子合作的 SIL4 Linux,本科還沒畢業就參與了理論研究環節,我跟師姐一組研究 HAZOP,後面整個 Demo 系統基本是由鄙人主導開發。

後面的畢業論文主要跟龍芯有關,研二下半年開始去實習,實習完主要時間都埋在實驗室做實驗,寫畢業論文

這個論文算是在國內首次較為系統地研究和分析了 實時搶佔核心,有理論分析,也有工程實踐,還有實質的成果,那就是 MIPS Ftrace 以及龍芯平臺上的實時搶佔支援。創新性呢不是很足,但是每個環節的論證和實驗部分非常有分量,不知道趴在實驗室睡了多少個晚上,設計實驗,驗證,看效果,這個很大程度上受到 Nico 影響,治學很嚴謹。

跟本科生講嵌入式課

大四和研一的時候,還也有參與 2 屆 Summer School 的授課,給本科的同學講嵌入式 Linux 課程,結合之前學習 Nico 授課的學習筆記,加上自己曾經動手過的一些專案素材,課堂效果還算不錯。在比較短的 4 周時間內,一邊要做實驗室的專案,一邊還得整理講解和實驗材料,講完還要答疑,講的時候陷入情境了,有時候眉飛色舞,滔滔不絕,估計不少同學可能沒跟上節奏 ;-)

實驗室創業也難

那個時候,實驗室窮,每個月領實驗室 200 塊大洋,因為屬於保送,學校還補貼了 200 塊大洋,不過這個只是杯水車薪,還得去外面兼職做個家教攢點住宿費。幸好那個時候牛肉麵便宜好吃,不然被餓死(^_^)。

那夥應該是實驗室第 3 屆,現在實驗室很財大氣粗了。創業難,建立實驗室也一樣難,真是不容易,要養活一大堆學生,還得組織大家出成果。經費、學術、管理都是很大的負擔,而且學生流動性很大,要持續深入做一些課題確實不容易。

在江南水鄉玩龍芯那一年

為什麼要讀博士

研一的時候,有個學術會議,跟臺灣來的老師請教,諮詢他是否要讀博,他說建議儘量頂住困難,讀一個,他說經濟上的困難以後回頭看都是一定能克服的。他打了一個比方,“博士就好比一套西裝,大部分時候不是必須的,但是有些場合得穿著才行”。

萬事孝為先

研二的時候,西門子的專案做得差不多了,在等新加坡的專案,一直沒順利拿到,加上弟弟那夥上大三,學費壓力比較大,父母因為常年勞作,身體都積壓出了毛病,學校+實驗室 400 塊大洋都不夠自己吃住,所以沒有辦法補貼家用,於是跟導師商量要出去實習,delay 了差不多半年,實在是等不及,再拖父母身體就跨了,所以就跟導師講道理,苦口婆心,各有苦衷,孝道為先,豁出去了。

那夥一直在想到底去哪裡實習比較好,雖然說當時情況下攢錢是第一位的,但是當時找實習卻是另外一種思路。偶爾找了龍芯胡老師的幾篇文章,讀得眼淚稀里嘩啦的,於是決定一定要去那邊實習,剛好 kinggo 老師跟龍芯產業化基地的老師有聯絡,所以也沒談實習工資就去奔常熟去了,kinggo 說工資先別考慮,回頭再談,應該沒問題的。

關於實習工資

2009 年 2 月,到那邊以後,幹活特別用心,部門領導以及其他同事也非常關心和熱情,在同事們的指導下,兩週內把實時搶佔核心在龍芯 2F 盒子上跑起來了,包括搭建環境,熟悉 MIPS 平臺,移植,debugging 一股腦搞完。

一個月後,工資卡收到 500 大洋,後面瞭解到,包吃包住,那夥實習生都是這個待遇,可是,真是來攢學費的,這個不夠用啊,那夥弟弟在江西師大讀軟體工程,一年學費 1 萬大洋,這幹一年也不夠啊,所以跟 kinggo 和基地的老師去溝通,然後看錶現還可以破例給提升了一些。

去德累斯頓做報告

這個實時 Linux 的工作搞得七七八八以後,寫了一篇論文投到了 RTLWS,然後在 Nico 的資助下還跟在那邊讀博士的 “黃天” 師兄去德累斯頓做了一個報告

報告完,Ftrace Maintainer Steven 指出 function graph tracer 實現不完整,討論完發現確實有 Bug,回來繼續完善,最後搞了 12 個版本才把 MIPS Ftrace 提交進官方 Linux 社群。

在這次會議上,有見了很多大神真身,除了 Ftrace Steven,還有 Lwn Cobert, RT Thomas,RCU Paul,Scheduler Ingo,跟 Thomas 拍了合照,估計找不到了,然後還有跟 20 多個核心 Maintainers 一起喝大杯啤酒,都忘記聊了些啥,印象是挺 happy 的。

RSM 用了我維護的核心

這段時間特別賣力,有時候頭天熬一個通宵,第二還一早來打卡繼續幹。

前後把所有 2F 的機器核心整成一個,原來發軟體,一臺機器一個韌體,整完以後,發一個韌體就好了。

再後來,把所有程式碼整巴整巴全部給弄到官方核心去了,搞完後,2010 年被提名去參加 Linux 峰會,因為經濟等因素,最後沒成行。

同時,順手搞了一個社群版龍芯 Linux,一直免費維護到畢業的兩年後,基本上每個晚上都要看一下郵件列表,每個週末都有至少一個晚上在熬夜合 patch,做測試驗證。

中途來自北美 FSF 的 Alex 參與維護,後來實在堅持不了,我停止維護後,他一直堅持維護了好幾年,期間 RSM 還用了跑這個核心的龍芯逸瓏筆記本,當時世偉兄免費維護的社群版 Debian 也是用這個核心。

在歐洲跑了 5+ 年的龍芯盒子

還有實時 Linux,最後搞到在各種軟硬體負載下穩定在 80us 以內。2009 年底回實驗室,繼續完善,同時撰寫 畢業論文

後面有送一臺 2F 的盒子到歐洲的 OSADL 實驗室,一直跑實時 Linux 的壓力測試,現在還在歡快的跑著

與風之河的一段緣

工作選擇的煩惱

2010 年,筆者畢業並加入北京風河(WindRiver),那是一家成立了 30 多年的公司,在的那年剛好是 30 週年慶。

還在龍芯實習的時候,由於在 Linux 社群發了很多龍芯和 MIPS 的 patch,風河 Linux 部門的老大 Mark 發來郵件,有過幾通電話來往,後面確定了過去。

這期間其實有過不少糾結和煩惱,因為在龍芯這邊實習也幹得挺好,同事和領導也比較關心,自己對龍芯的熱情也一直有而且很強烈,所以,經過了很大的一個思想鬥爭,最後還是覺得要去 WindRiver 看看,畢竟那個時候做 Vxworks 和 RTLinux 的風河還是嵌入式系統行業的 No.1,跟自己一直搞的 Real Time 和 Safety 也比較契合,而自己還是一個學生,還得多學習。

不過去了以後,就上面介紹到的,即使是畢業後的 2012 年,基本上每天,每個週末,在繁忙的工作之餘,我還是花了大量的時間義務維護社群版的龍芯 Linux 核心,一直在為龍芯服務,不拿一份工資。所以,那個時候,成天在住處和辦公室跑,基本也沒有業餘的時間去談朋友,也沒怎麼運動。

全身心投入

在工作方面,自己是 Linux BSP 部門唯一的一個應屆生,由於自己資歷淺,還是學生,很擔心趕不上,所以工作也很認真,特別虛心跟各位同事們請教,大家也很 Nice。

那個時候是一個人負責整個 BSP,沒有跟現在手機專案一樣,好幾個人,甚至是十多個人做一個 BSP,一個人做兩三個模組。

做評估和實施的時候,由於不太熟悉,所以就做的特別仔細,比如說評估文件,就儘量能驗證的都驗證好,有資料的就把資料列上去,一天半天都評估得比較具體細緻。因此,有個專案的評估報告還被 Mark 作為樣板在會上宣導 ;-)

有做自己評估的專案,也有做其他同事評估的專案,基本上都能按時按質完成工作計劃,在一年多 3 個月的時間裡頭,完成了應該至少有 5 個左右的 BSP 專案吧(太久了記不得太清楚),有時候還要負責一些自己比較熟悉的 Ftrace, RT Features,有時還要 Review 測試同事撰寫的測試用例。

這一年多下來其實還是成長比較快的,因為要做完整的 BSP,所以接觸的核心子系統,外設,各種功能就比較豐富,對於 porting 過程,驗證工作,評審流程,系統質量保障都有比較系統地認識。如果能做得再久一點當然更好了。

BSP Monkey

記得剛去風河沒多久,Nico 回國的時候路過北京,我把他接到望京聚了個餐,然後去機場送行。

他問我都在幹啥,問完以後跟我開玩笑:You Are A BSP Monkey。說我不停地重複做不同的 BSP,就是個 BSP Monkey。感觸很深,這麼多年,一直還記得。

做 BSP Porting 工作本身,有多少原創性的工作呢?“確實不多”,但是對於產品整體的把握意識和系統性的掌控能力確實是有巨大幫助的。

後來,我一直在思考,怎麼突破 “BSP Monkey” 這個範疇並且跟周邊的同事們也在宣導這個概念,不能只是個 “BSP Monkey”,要思考要突破,從深度上、效率上、從質量上、流程上、思路上,進度保障上,必須不斷地創新進取。

Android 關注組

2010 年底 2011 年初,也是因為之前參與官方 Linux 社群的原因,提前就結識了幾個 WindRiver 的小夥伴和前輩,我們在業餘時間經常聊聊天,聚個餐什麼的,大家聊到剛興起的 Android,覺得應該要關注,甚至聊到是否未來有可能為剛興起的手機廠商提供技術諮詢服務。

那一年,遠在珠海的魅族剛好釋出了第一款 M9 不久,上市了一年多還有各種當機崩潰問題,那夥正在做 MX,迫切希望能改善狀況。

在 2009 年的常熟,筆者有幸在很愛趕時髦的 Mike 唐同學那裡看到過一臺手機,真是豔羨得很,那滑動看新聞的效果真是酷斃了,據說那臺手機應該是 M8,同一年,在風河另外一個 Team 的 3D 也是 Android 關注組的一員,他原來給 M8 搞過 libfetion,所以跟魅族的同學有聯絡,巧合,天衣無縫。

2011 年初,我和 3D,受邀去魅族做一個報告,全場坐無虛席。臨行前,我們的 Android 關注組祝福我們成功起步,因為是第一家,根本沒經驗,一共下來除了對方報銷機票,一人拿了應該不到 2k 來著,記不太得了。

後面,其他的廠家需求也沒有渠道,而關注組的同學們,3D 第一個南下騰訊了,後來,魅族拋來橄欖枝,加上來回的溝通,以及對網路中魅族大 Boss 的 “執著” 精神做了一個調研,幾經折騰,最後南下珠海了,打算奉獻給國產事業了。

第一次聽說小米

這一年多裡,真地非常感謝 WindRiver 幾位 Leader 和同事們一直以來的關照和指導,大家真地都非常非常地 Nice。特別地,

在部門組織的歡送會上,同事們問道,北京不是有小米也準備做機麼,為什麼不考慮一下?那夥做的調查工作實在太少,也沒有考慮太多,甚至對手機行業都一片空白,那夥自己還在用 Nokia,對智慧機真是一無所知,只是覺得,這麼多年對系統的研究應該在國產的產品上可以有點實際作為了。

依依不捨

離開北京的時候,我在人人網還是 QQ 朋友圈留言,“待到東南下,竟覺北亦佳!” 怎麼捨得那麼好的同事和領導呢,還有很多北漂的師兄師姐師弟師妹以及同學們,而且北京很多地方都沒怎麼逛過,都窩在宿舍維護社群版龍芯 Linux。

對了,那一年,本科就畢業到福州做互動機的 “北極”,在我去風河的時候,他已經在樓下做 Vxworks,真是巧合,兩位老同學,三年後,又聚到了一起。

在學校的時候,他住我對面宿舍,工作以後,又分別在樓上樓下辦公。有一段時間換房子沒來得及,還在 “北極” 家借宿了一段時間。“北極” 現在還在那邊,還在那棟樓了,在技術上,他的耕耘很深很專業,而我卻走上另外一條道路,做終端產品上的系統去了,要更多地要跟產品的細枝末節打交道。

南下特區做機的這幾年

初入魅族

2011 年 9 月,剛南下的時候,很不習慣,興沖沖地過來,卻是被安排先從 LED、感測器驅動做起來,當然,熟悉一下終端產品也無妨,之前確實缺少面向使用者產品的經驗,在風河做的東西,交付給廠商,廠商還得進一步做成實際產品,而且這些產品往往是路由器之類的隱藏在雲上的產品,使用者看不到摸不著著,而這邊做的東西是直接交付給使用者的,所以確實有差異的。

識別方向

所以剛開始挺耐心的,不過這跟我來的初衷不符啊,所以,做了一段時間以後,通過跟上司和同事們分析、探討和觀察,自己特別關注和思考如何去提升體驗,體驗除了當機和穩定性,逐步發現,還有效能、續航和溫控等嚴重的體驗問題,續航和溫控這兩個在雲端產品基本不會涉及。

想了解這段過程的話,可以閱讀 智慧手機系統優化的演進與實踐,這是 2015 年,我在 CSDN MDCC 大會上做的一場報告。報告講述了整個系統優化的發展過程。

我們應該是安卓手機行業內最早體系化地去思考系統體驗問題的團隊,也最早建立了專職的團隊去做系統優化,這些工作在 2011 年底,2012 年就開始在醞釀和準備了。

付諸實施

這期間,沒有對應的測試環節,就引薦外部的測試供應商過來交流;沒有體系化的保障措施,就從頭設計一套方案:Linux RAS 解決方案,制定標準和規範,開發原型系統;並打通生產、研發和測試各部門壁壘。一步一步,在不斷有成績以及領導的大力支援下,從 0~1 組建系統優化團隊,組建自動化測試團隊,組建魅藍驅動開發團隊,組建專案管理團隊,與此同時,不斷在踐行:

  • 一方面,逐步實施新人培養計劃,建設課題組,建立知識庫,打造技能體系。依託課題組,建立 “技術委員會”。鼓勵各課題組進行技術分享,完善標準和規範,從而保障部門的技術能力建設。

  • 另外一方面,把部門經費管理、活動組織、專利資料運營、知識庫運營等都交付給 “團建委員會”。由剛入職的新同事們輪崗參與實施,建立起全面參與的團隊文化,同時加快新人融入團隊和成長的節奏,也確保了開放性、創造性和多樣性。比如說所有的經費管理都有線上賬本記錄完全公開透明,出納和財務都做到完全分開;而活動組織這塊,大家集思廣益,出現了很多精彩的活動節目;而專利和知識庫,由於大家策略很多,然後負責的同事們自己帶頭貢獻,所以呈現了爆發式增長。

  • 再一方面,建立專案資料運營系統,完善研發流程的各個環節。不僅完善了各環節資料監控指標,避免死角,創新性地引入 “未更新”、“未解決”,“未驗證” 三項指標來避免錯過一些關鍵問題、關鍵時間點,從而避免專案管理、研發和測試任何一個環節的疏忽大意,並藉此排程資源,保障進度和質量。與此同時,還引入了一個 “低概率問題佔比” 這個指標來論證越到上市環節,留下的問題,90% 以上都是低概率問題,也就是不易復現的問題。所以,最關鍵的部分,是需要開發和測試一起不斷去完善測試用例,確保問題是可以有效發現的,這樣才有辦法去定位問題,進而嘗試解決方案是否有效。對於這種問題,通常需要強有力的 Leader 去把各個部門,各個課題組,包括研發、測試、專案,甚至技術委員會的技術專家喊進來,一起分析探討,制定 Roadmap,設計修復方案,制定驗證策略,反覆迭代,直到問題收斂。

這個期間,由於涉及到資源,涉及到進度,如果足夠真誠和有力量,基本上還是能大家協調一致,但是也不排除有人只顧自己的利益,在背後放槍,所以搞技術的同時也要稍微提防一下。

行業交流

這幾年在行業交流方面做了幾個事情。

其中一個是泰曉沙龍。前前後後在珠海地區組織了 5 次線下交流,其中分別有榮幸邀請到國內 Linux 業界前輩宋寶華老師、臺灣開源教父級大佬黃敬群老師、國內另外一家 Linux 內容原創平臺蝸窩科技郭健老師等嘉賓參加。相關的交流記錄在 泰曉沙龍

行業演講和報告方面,有代表性的三場分別是:

推掉了德國的工作機會

剛畢業那段,跟 Nico 聊過,請他幫忙問問 Thomas 那邊是否有工作機會,2012 年的時候,Thomas 回覆說可以去了。

不過那段時間,在魅族自己有一些規劃正在實施,還沒有成果,不希望半途而廢,所以,暫時推掉了 Thomas 的邀請。後面忙起來,也忘記再聯絡了。

現在想起來,既錯過了去那邊讀博,也錯過了去那邊工作,或許是些許的遺憾吧。

攢到第一筆外快

2011 年向 elinux 基金會提交了一個 TinyLinux proposal,然後陸陸續續完成了 50% 的工作量,拿了一半的費用。這期間,在五一還是十一,有幾天就一直窩在家裡做實驗,測衰退,測資料,最後趕出來了。這篇論文是 Tiny Linux Kernel Project: Section Garbage Collection Patchset。這是第一次有收入的開源活動,期間喊了一個師弟參加,每週參加兩個晚上,不僅親自指導,還每個月發給他 1000 大洋 ;-)

這個 gc-section patchset 基本是 ok 了,但是有部分平臺依賴比較新的 binutils,而且牽涉到的程式碼改動比較多,所以當時放棄了 Upstream。

這個專案其實還是有不少成果,相關成果列在 TinyLinux,我記得當時在龍芯 2F 上有做到一個 386k 的 vmlinuz ,順道提一下,這裡的 vmlinuz —— MIPS 核心壓縮支援也是筆者貢獻到 Linux 官方社群的。還有一個附帶的成果就是 Linux Lab,這個專案源自當時測試驗證的一堆指令碼。

後面陸續有華為等企業的朋友聯絡過來諮詢該特性,似乎他們有在產品中使用。自己也在早期 MX 等多款產品上試行,對於編譯為一體的 Linux 核心,Size 優化超過 10% 以上。只是目前來看,這塊的實際意義不是很大了,一方面,模組 delay 載入,另外一方面,儲存越來越大,多的已經到了 256G,核心再大也就幾十 M,還有一個是不斷有高壓縮率的核心壓縮演算法加入。不過這個優化對於小儲存系統,還是省空間省錢的可選措施之一。

賦閒在家的這幾個月

從離職到現在的這幾個月,做了幾件事情:

註冊了一家公司

離職後很快註冊了一家自己的公司,公司目前還沒有正式開始運營。主要規劃的業務方向是技術諮詢,但是 ODM 的活拒了好幾個,覺得這塊不是最能體現價值的方向,對個人來講,陷入進去,還不如去公司做單一產品,對企業來講,解決了一個問題還會有另外一個問題。

如果是技術諮詢,提供方法論,指導建立體系,引薦招到合適的人,並完善團隊技能培訓,這個是比較契合的,對筆者和企業其實都是具有更長遠意義的。

我們在嵌入式 Linux、實時 Linux、Linux 系統優化、Linux 產品質量保障、Linux 團隊建設和管理等方面具有豐富的經驗,在雲端儲存、虛擬化、AIoT、晶片設計等方面也聚攏了諸多一線技術專家。

所以如果有這塊需求的客戶歡迎新增筆者微信:lzufalcon,也可以翻到文末直接掃描二維碼。也歡迎同學們引薦給有潛在需求的企業,非常感謝!

重構了 Linux Lab

這是一個即時 Linux 核心實驗室。這個專案的潛力很大,目標是成為 Linux 開發者的手頭必備工具,它正在朝這個方向走,所以,如果還沒體驗過,快快體驗吧。

這個專案的作用:

  • 大大降低了個人學習 Linux 的門檻,原來要花幾周建立學習環境,現在數十分鐘就好。原來要各種挑選開發板,現在 Linux Lab 支援 7+ 大架構,14+ 開發板,除了主流架構,還包括樹莓派 raspi3 和當下最火熱的 Risc-V 32/64。

  • 同時也可以用到企業做 Linux 培訓,做開發、除錯和測試環境。無論是什麼架構,很方便選擇,甚至各種不同版本的核心都有預先驗證過的核心配置檔案和編譯好的核心。

  • 尤其是晶片公司,做好 Qemu 虛擬化後,用這個可以大大節省時間,提升效率。比如說目前 Linux Lab 除了支援 5 大主流架構(X86, ARM, MIPS, PowerPC, Risc-V),也已經支援 龍芯 和 Csky。其中龍芯這塊的支援是和龍芯實驗室聯合開發的。Csky 是中天微聯合開發的。

  • 另外,做 Linux 核心特性開發,做程式碼 Upstream 都很方便,可以同時在 7+ 個架構,14+ 虛擬板子上驗證自己的成果是否完善,是否有影響到其他子系統。

  • 高校也可以免費用來開設很多課程,包括體系結構、組合語言、C、Shell、作業系統、虛擬化、網路、資料庫、編譯原理都可以。

希望有相關需求的個人、企業、高校踴躍嘗試,如果有確實的諮詢、培訓、企業支援需求,也歡迎聯絡筆者微信:lzulfaocn 提供服務。

感謝 rexZ、releung、我夏了夏天、jordonwulee、foxsen 等同學的踴躍參與,相關的專案還有 Linux 0.11 Lab, CS630 Qemu Lab。歡迎更多同學參與進來,一起體驗、測試和開發。也歡迎大家加入『Linux Lab 使用者群』,可以聯絡筆者微信:lzufalcon。

重新運營泰曉科技

泰曉科技的域名最早是在 2010 年,我們的 Android 關注組討論做諮詢服務的時候購買的,那時只是買了個域名,還沒有網站名字,後來有用過 “泰曉實驗室”,最後才改為 “泰曉科技”。後來,3D 去騰訊以後,域名直接轉給了我,停頓了一段以後,陸陸續續一直更新到現在,這段時間相對充裕一些,就重新開始啟用公眾號,這期間也仰賴 “LWN 翻譯計劃” 負責人 Wang Chen 同學的踴躍參與和支援,然後我就有更多精力在幾個開源專案的重構上,同時嘗試開通了 付費徵稿,並開闢了除網站和公眾號以外的第 3 釋出渠道 —— 即會員制 VIP 版塊:『Linux 知識星球』

公眾號開通以後,HelloGcc 的 @ww 大大持續打氣。而 Wang Chen 同學一直在負責運營公眾號,而且他在繁忙的工作之餘,堅持開展 LWN 翻譯 和 泰曉資訊 兩個欄目,實屬難得,非常不易。我們的公眾號已經連續運營了數月,每週一到週五都堅持更新,從未間斷,快快掃描下方二維碼關注並設為星標吧,不然會錯過好文章哈。

掃碼關注 泰曉科技 微信公眾號

付費徵稿開通以後,有甜質粥、cee1、simowce、shenmin 等同學積極響應,踴躍投稿。歡迎更多的同學們踴躍投稿,即日起,一經採納,即可獲得 200 大洋稿費,同時可以免費獲贈『Linux 知識星球』一年會員。

而知識星球開通以後,得到了近百號同學們的大力支援,大家不僅以實際行動提供支援,還積極參與討論,出謀劃策。歡迎更多的同學訂閱星球,或者轉發到朋友圈,引薦給其他的同學。

送您一張免費體驗卡

非常感謝您能耐心讀到這裡,下面奉上一張免費體驗卡,可以多人使用,也歡迎轉贈給周邊的朋友。

『Linux 知識星球』免費體驗卡

寄語

在手機這波浪潮逐漸退卻之後,汽車、物聯網、AI 這些大潮接踵而至,但是都離不開它們的基石,即我們正在學習和研究的 Linux 平臺,無論是作為裝置(汽車大屏、充電樁、語音終端、攝像終端)系統存在,還是作為雲(AI 計算、資料儲存、虛擬化)平臺系統存在,Linux 在未來都將繼續呈現勃勃生機。

筆者希望,能夠藉由『Linux 知識星球』這個載體,系統地總結過去十多年的 Linux 系統使用、研究和開源社群組織參與經驗,以及過去八年來數千萬規模的手機終端產品 Linux 系統研發、團隊管理和質量保障經驗,然後逐步迴歸 Linux 官方社群,密切關注和參與行業發展趨勢。

與此同時,筆者將不斷邀請更多專業嘉賓朋友加入。然後希望這些成果能夠切實降低當下其他行業應用 Linux 技術的門檻,切實提升 Linux 一線工程師們解決問題的效率,切實提升汽車、物聯網和 AI 產品中 Linux 系統的使用者體驗,為行業做一些微薄的貢獻。

此致!感謝所有為 Linux 和其他開源技術產品做出過諸多貢獻的同學們!

也特別邀請您轉發這篇文章,讓更多的同學瞭解『Linux 知識星球』,讓我們一起 “聚焦 Linux,追本溯源,見微知著!”。

然後一起學習和研究 Linux,一起成長。Let's go together, no longer alone。

相關文章