泰晓科技 -- 聚焦 Linux - 追本溯源,见微知著!
网站地址:https://tinylab.org

泰晓Linux实验盘,即刻上手内核与嵌入式开发
请稍侯

细数我与 Linux 这十三年

Wu Zhangjin 创作于 2019/08/15

By Falcon of TinyLab.org Aug 15, 2019

大学毕业的时候总想着要 “轰轰烈烈地” 写一写 “我的大学”,工作了以后慢慢地觉得好像也没什么好写的,工作八、九年后,现在离职了,接触了知乎、泰晓原创团队微信群等各个渠道大家提出的问题后,觉得似乎可以简单回顾一下。

所以,下面简单回顾一下 “我的大学” 以及 “我的工作”,这些基本都围绕 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 Search Engine HomePage

被 “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 的。

RMS 用了我维护的内核

这段时间特别卖力,有时候头天熬一个通宵,第二还一早来打卡继续干。

前后把所有 2F 的机器内核整成一个,原来发软件,一台机器一个固件,整完以后,发一个固件就好了。

再后来,把所有代码整巴整巴全部给弄到官方内核去了,搞完后,2010 年被提名去参加 Linux 峰会,因为经济等因素,最后没成行。

同时,顺手搞了一个社区版龙芯 Linux,一直免费维护到毕业的两年后,基本上每个晚上都要看一下邮件列表,每个周末都有至少一个晚上在熬夜合 patch,做测试验证。

中途来自北美 FSF 的 Alex 参与维护,后来实在坚持不了,我停止维护后,他一直坚持维护了好几年,期间 RMS 还用了跑这个内核的龙芯逸珑笔记本,当时世伟兄免费维护的社区版 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 次线下交流,其中有幸邀请到了多位嘉宾老师参加。相关的交流记录在 泰晓沙龙

行业演讲和报告方面,有代表性的三场分别是:

推掉了德国的工作机会

刚毕业那段,跟研究生的指导老师 Nico 聊过,请他帮忙问问 Thomas(Real Time Preemption 的 Mainainter)那边是否有工作机会,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,这个项目源自当时测试验证的一堆脚本。

后面陆续有华为等企业的朋友联系过来咨询 gc-section 特性,似乎他们有在产品中使用。自己也在早期 MX 等多款产品上试行,对于编译为一体的 Linux 内核,gc-section 的 Size 优化超过 10% 以上。这个优化对于小存储系统,确实是省空间省钱的可选措施之一,目前已经集成到了官方 Linux 社区。

赋闲在家的这几个月

从魅族离职后的这几个月,做了几件事情:

注册了一家公司

2019 年离职后很快注册了一家自己的公司,公司目前还没有正式开始运营。主要规划的业务方向是技术咨询,但是 ODM 的活拒了好几个,觉得这块不是最能体现价值的方向,对个人来讲,陷入进去,还不如去公司做单一产品,对企业来讲,解决了一个问题还会有另外一个问题。

如果是技术咨询,提供方法论,指导建立体系,引荐招到合适的人,并完善团队技能培训,这个是比较契合的,对笔者和企业其实都是具有更长远意义的。

我们在嵌入式 Linux、实时 Linux、Linux 系统优化、Linux 产品质量保障、Linux 团队建设和管理等方面具有丰富的经验,在云存储、虚拟化、AIoT、芯片设计等方面也聚拢了诸多一线技术专家。

所以如果有这块需求的客户欢迎添加微信:tinylab,也可以翻到文末直接扫描二维码。也欢迎同学们引荐给有潜在需求的企业,非常感谢!

重构了 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、操作系统、虚拟化、网络、数据库、编译原理都可以。

希望有相关需求的个人、企业、高校踊跃尝试,如果有确切的咨询、培训、企业支持需求,也欢迎联系微信:tinylab 申请提供服务。

感谢 rexZ、releung、我夏了夏天、jordonwulee、foxsen 等同学的踊跃参与,相关的项目还有 Linux 0.11 Lab, CS630 Qemu Lab。欢迎更多同学参与进来,一起体验、测试和开发。也欢迎大家加入『Linux Lab 用户群』,可以联系微信:tinylab。

重新运营泰晓科技

泰晓科技的域名最早是在 2010 年,我们的 Android 关注组讨论做咨询服务的时候购买的,那时只是买了个域名,还没有网站名字,后来有用过 “泰晓实验室”,最后才改为 “泰晓科技”。后来,3D 去腾讯以后,域名直接转给了我,停顿了一段以后,陆陆续续一直更新到现在,这段时间相对充裕一些,就重新开始启用公众号,这期间也仰赖 “LWN 翻译计划” 负责人 Wang Chen 同学的踊跃参与和支持,然后我就有更多精力在几个开源项目的重构上,同时尝试开通了 付费征稿,并开辟了除网站和公众号以外的第 3 发布渠道 —— 即会员制 VIP 版块:『Linux 知识星球』

公众号开通以后,HelloGcc 的 @ww 大大持续打气。而 Wang Chen 同学一直在负责运营公众号,而且他在繁忙的工作之余,坚持开展 LWN 翻译 和 泰晓资讯 两个栏目,实属难得,非常不易。我们的公众号已经连续运营了数月,每周一到周五都坚持更新,从未间断,快快搜索 泰晓科技 或 TinyLab-Org 关注并设为星标吧,不然会错过好文章哈。

付费征稿开通以后,有甜质粥、cee1、simowce、shenmin 等同学积极响应,踊跃投稿。欢迎更多的同学们踊跃投稿,即日起,一经采纳,即可免费获赠『Linux 知识星球』一年会员。

而知识星球开通以后,得到了近百号同学们的大力支持,大家不仅以实际行动提供支持,还积极参与讨论,出谋划策。欢迎更多的同学订阅星球,或者转发到朋友圈,引荐给其他的同学。

后来我们还开通了 B 站账号,坚持每周六开展一场线上技术直播分享。

寄语

在手机这波浪潮逐渐退却之后,汽车、物联网、AI 这些大潮接踵而至,但是都离不开它们的基石,即我们正在学习和研究的 Linux 平台,无论是作为设备(汽车大屏、充电桩、语音终端、摄像终端)系统存在,还是作为云(AI 计算、数据存储、虚拟化)平台系统存在,Linux 在未来都将继续呈现勃勃生机。

笔者希望,能够藉由『Linux 知识星球』这个载体,系统地总结过去十多年的 Linux 系统使用、研究和开源社区组织参与经验,以及过去八年来数千万规模的手机终端产品 Linux 系统研发、团队管理和质量保障经验,然后逐步回归 Linux 官方社区,密切关注和参与行业发展趋势。

与此同时,笔者将不断邀请更多专业嘉宾朋友加入。然后希望这些成果能够切实降低当下其他行业应用 Linux 技术的门槛,切实提升 Linux 一线工程师们解决问题的效率,切实提升汽车、物联网和 AI 产品中 Linux 系统的用户体验,为行业做一些微薄的贡献。

此致!感谢所有为 Linux 和其他开源技术产品做出过诸多贡献的同学们!

也特别邀请您转发这篇文章,让更多的同学了解『Linux 知识星球』,让我们一起 “聚焦 Linux,追本溯源,见微知著!”。

然后一起学习和研究 Linux,一起成长。Let’s go together, no longer alone。



Read Related:

Read Latest: