第3章 树莓派的大脑
如果说ARM处理器是树莓派的心脏,那么Linux操作系统就是树莓派的大脑。大多数树莓派上安装的都是Linux操作系统。树莓派官方推出的Raspian操作系统,也是Linux的一个发行版本。
Linux操作系统是林纳斯·托瓦兹(Linus Torvalds)(如图3-1所示)在1991年创造出来的。1991年,托瓦兹还是一名普通的大学生,刚刚买了一台3500美元的电脑。这对于任何一个芬兰家庭来说都是奢侈品。更何况,托瓦兹的父母没有太多闲钱来赞助儿子。托瓦兹把奖学金和零用钱加在一起,付了电脑三分之二的钱。剩下的三分之一,要在接下来的三年里分期支付。拿到电脑之后,托瓦兹连着几个月都耗在上面。不过,托瓦兹的母亲对此并没有太大意见,只是偶尔会提醒托瓦兹吃饭。倒是妹妹萨拉会在隔壁咆哮,逼着正在拨号上网的哥哥让出电话线。
图3-1 林纳斯·托瓦兹
由于父母早年离异,所以托瓦兹大部分时间都是跟着母亲生活的。他的外公是一位统计学教授,因此有一台工作用的Commodore电脑。这个品牌的电脑和BBC Micro一样,都曾在欧洲流行。不知是为了培养外孙,还是纯粹的偷懒,外公经常会口述程序,让托瓦兹敲入电脑里。年幼的托瓦兹很快发现,这个其貌不扬的“盒子”并不介意用户是个儿童,只要输入程序,电脑就会根据指令工作,不多也不少。除了服兵役的将近一年时间,托瓦兹把大部分时间都花在电脑编程上。考入赫尔辛基大学时,托瓦兹已经有了丰富的编程经验。
托瓦兹写了一个终端模拟程序。通过这个程序,托瓦兹可以通过电话线连接学校机房的电脑,再通过机房的电脑在互联网上收发邮件。在20世纪90年代初,电子邮件还是少数“极客”才能玩得转的高科技,一般人甚至不知道电子邮件是什么。因此,当托瓦兹向妹妹展示终端模拟器时,萨拉一脸茫然,完全不知道哥哥在干什么。托瓦兹很难向妹妹解释清楚这个程序的厉害之处。这个程序是用汇编语言写的,可以直接和电脑硬件互动。换句话说,对于一台没有安装类似Windows这样操作系统的电脑,托瓦兹可以让它运行《魔兽争霸》。当然,托瓦兹实现的功能要比游戏简单得多。
托瓦兹的野心当然不止于此,他准备让自己的操作系统超越UNIX。UNIX是一个操作系统程序,比Windows年长了20岁。贝尔实验室的肯·汤普森(Ken Thompson)想在一台PDP-11型号的电脑上玩一款叫作《太空旅行》的游戏,就和同事丹尼斯·里奇(Dennis Ritchie)一起编写了UNIX操作系统,如图3-2所示。和之前的操作系统相比,UNIX非常简单。计算机的各项活动,无论是用户交互,还是编译程序,都组织成结构相似而在运行上相互独立的“进程”。进程之间可以通过文本形式相互通信,从而能协同工作。计算机上的数据,从程序文本,到配置信息,再到硬件接口,都存储成文件。UNIX与其说是一个程序,倒不如说是一套关于操作系统的哲学。肯·汤普森就好像计算机世界里的牛顿,把计算机可以实现的复杂活动分解成几条简单的物理定律。UNIX流行了将近半个世纪,并影响了非UNIX阵营的其他操作系统,如微软的MS-DOS和Windows。
图3-2 肯·汤普森和丹尼斯·里奇在一台PDP-11前
拥有贝尔实验室的AT&T(美国电信电报公司)当时有政府禁令在身,不能涉足软件业务。因此AT&T允许教育机构免费使用UNIX。因此,UNIX在大学里传播得很快。肯·汤普森的母校伯克利大学推出了一个更加好用的BSD(Berkeley Software Distribution)版本。因为这些计算机系的大学生用惯了UNIX,所以步入社会之后,也把UNIX推广到了IT公司。UNIX成为黄金万两的生意,并衍生出各种各样的商用版本。赫尔辛基大学也在刚刚购置的小型机上安装了UNIX,可以让十多个学生同时在线使用。托瓦兹就是这台电脑的常客之一,并很快喜欢上了UNIX。他不但花了一整个夏天去钻研操作系统的经典教材,还学会了用来开发UNIX程序的C语言。只可惜,UNIX对于家用并不免费,一个最便宜的UNIX系统也要数千美元,已经负债累累的托瓦兹可负担不起。
为了从成熟的UNIX体系下借力,托瓦兹把UNIX操作系统下常用的文本交互器bash嫁接到自己的终端模拟程序上。有了这个文本交互界面,家里的电脑就像学校里的UNIX一样好用。他很快又给自己的电脑安装了C语言编译器gcc。由于UNIX下的大部分应用程序都是用C编写的,所以托瓦兹可以在自己的操作系统中编译几乎所有的UNIX应用程序。托瓦兹意识到,自己的操作系统越来越完善。他又一次充满了创造者的骄傲。
1991年8月,托瓦兹在Minix新闻组上发帖:
各位Minix用户,大家好。我正在制作一个(免费)的操作系统(只是作为爱好,不会像gnu那样专业)。这个项目从4月份就启动了,并将要准备好了。我想听听大家的意见,特别是大家喜欢或不喜欢Minix的地方,因为我的操作系统将会和Minix有些像。我正在移植bash和gcc。这意味着在接下来的几个月里,我将获得一些实质性的成果……此外,它没有用Minix的代码……
那个时候,Minix是操作系统世界里的明星。编写Minix的是阿姆斯特丹自由大学的一位计算机教授安德鲁·塔能鲍姆(Andrew Tananbaum)。为了教学方便,他仿照UNIX编写了Minix这款操作系统,并开放源代码,以便学生更好地理解操作系统的原理。他编著的操作系统教材也非常畅销。托瓦兹就是借着那本700多页的教科书才摸清操作系统原理的。多年之后,托瓦兹在阿姆斯特丹自由大学演讲时,曾拿着那本书想获得塔能鲍姆的签名。很不巧的是塔能鲍姆正好不在。
Minix并不如UNIX成熟,但比起托瓦兹的操作系统还是强得多。Minix已经有不少拥趸者。还有不少高手给Minix编写补丁,大大提高了Minix的可用性。托瓦兹自己工作时,主要用的就是Minix。因此,托瓦兹在Minix新闻组里发布自己的操作系统,看起来就像是闯入瓷器店惹事的公牛。意外的是,托瓦兹在新闻组里获得了不少支持。发帖不久,就有Minix用户向托瓦兹反馈,说明自己想要的功能。有的用户还为托瓦兹建立了FTP服务器,用于上传正式发布的操作系统代码。Minix用户看起来有些薄情,但这应该归咎于塔能鲍姆。他有言在先,不希望人们拓展他的源代码。即使有热心用户编写了改进程序,塔能鲍姆也不会把这些改进加入正式发行的版本里。因此,人们只能编写非正式的补丁并私下交流。Minix的发展陷入停滞。
相反,托瓦兹采用了GPL协议(General Public License)。任何用户都可以自由地使用并修改GPL协议的代码,但基于此修改出的代码,也必须遵照GPL协议开放,供他人使用或修改。这个行动充满了理想主义的味道,意味着托瓦兹不能从自己编写的程序获得直接的经济利益。考虑到托瓦兹的父母都曾是学生运动领袖,他的父亲还是芬兰左翼的重要成员,有人疑心托瓦兹的做法来自于家庭的影响。但按照托瓦兹自己的解释,他用GPL的唯一原因就是懒。有了GPL协议,爱好者们可以毫无顾忌地贡献代码。他只要从中择优,加入正式版本中,就可以省掉自己开发的麻烦。这一“诡计”确实奏效。爱好者们不但贡献了代码,还凑钱帮托瓦兹还了买电脑的欠债。他们还用托瓦兹的名字“Linus”命名这个操作系统为“Linux”。最后一个字母,按照UNIX的传统改成字母“x”。Linux系统的标志,如图3-3所示。
图3-3 Linux系统的标志:企鹅
圈内的很多人都不看好Linux。在Linux出生大约一年之后,UNIX之父汤普森和Minix之父塔能鲍姆公开批评Linux的实现方式。塔能鲍姆甚至说,如果托瓦兹是他班上的学生,那这个学生的成绩一定不及格。开源运动领袖艾里克·雷蒙(Eric Raymond)后来回忆,当他第一次接触Linux代码时,他有理由相信Linux最终会失败。显然,他们低估了社区的重要性。即便托瓦兹不是最天才的程序员,但社区爱好者的贡献能让任何天才程序员都跟不上Linux的速度。另一方面,托瓦兹在保持开源理想的同时,又有足够的实用精神。Linux采用了GPL协议,但托瓦兹并不鼓吹“自由软件就是好”的绝对论断。在他看来,无论哪一种力量,商业也好,非商业也好,只要能促进Linux的发展,就可以为Linux所用。在遇到问题时,托瓦兹也不会陷入“完美系统”的洁癖。他愿意接受一个不甚完美的方案,然后快速迭代,不断优化方案。同样采用GPL协议,但更富有理想主义的GNU项目也在内核开发上败给了Linux。
1995年,用于HTTP服务的Apache服务器发布。互联网服务商发现,可以把同样免费的Linux和Apache服务器结合在一起,廉价地搭建网站所需的服务器。此时的Linux已经疯狂进化了好几年,强健到完全可以胜任网站服务器的工作。内容丰富的网页取代了电邮和新闻组,成为互联网的主流。基于这套技术,最早的一批互联网公司建立起来,如雅虎、亚马逊,以及中国的搜狐。“dot-com”热潮给Linux打了一剂强心针。在网络服务器市场上,Linux彻底打败微软的Windows NT,成为大多数互联网公司的选择。网景、甲骨文、IBM等公司开始支持Linux系统,甚至同意把自己的部分代码公开,贡献给开源运动。托瓦兹的照片因此登上了福布斯的封面,成为很多青少年的偶像。
来自芬兰的穷小子打败了一统天下的比尔·盖茨,这本来就是话题性十足的故事。更让人感到困惑的是,免费的Linux究竟怎么赚钱。记者们抢着给托瓦兹打电话,想要获得独家采访的机会。他们意外地发现,接电话的并非助手,而是这个传奇英雄本人。事实上,托瓦兹也从来没有私人助手。尽管Linux项目有数万的参与者,但这些参与者组织成了不同的项目。托瓦兹真正需要打交道的,只是几十个项目领导人。另一方面,尽管领导着人类历史上规模最大的软件合作项目,甚至坐拥Linux这个商标,但托瓦兹并不富有。1997年,托瓦兹带着妻子和刚出生的女儿迁居美国,他的账户只有几千美元的余额。在美国的第一个晚上,托瓦兹不得不和妻女挤在充气床垫上,而他的猫咪也只能睡在旅行用的笼子里。
不过,如果托瓦兹愿意,他完全可以凭自己的身份获得更好的生活。微软的史蒂夫·巴尔默对Linux极为警惕,而史蒂夫·乔布斯曾亲自邀请托瓦兹加盟苹果。红帽Linux和VA Linux这些提供Linux服务和支持的公司也成立起来,获得了令人瞩目的成功。托瓦兹接受了这些公司为表达感谢而赠送给他的期权,却不愿到其中任何一家任职。托瓦兹乐意看到Linux在商业上的突破。他只是在做个人选择时极为谨慎,免得自己因为商业利益而无法保持中立。
不过,生活总是给托瓦兹带来意外的惊喜。随着红帽Linux和VA Linux的上市,托瓦兹手里的股票价值一度高达2000万美元。但托瓦兹还是住在普通的房子里,把大部分时间花在维护Linux上。真正令托瓦兹骄傲的是,社会彻底改变了对像他这样的极客的看法。极客不再是20世纪七八十年代留着长胡子,穿着拖鞋整日躲在黑暗房间里的怪胎。相反,人们把他们看成技术先锋。大公司愿意出高薪聘用参与Linux核心项目的程序员。除了高超的技术,这些为开源社区做贡献的极客们还带来了一种已经改变了历史的软件开发方式。
如今的杂志封面上,托瓦兹的Linux已经被人工智能、手机、虚拟现实、物联网取代,但Linux并未退休,只是沉淀为技术世界不可或缺的基础设施。想想吧,在IBM的超级电脑、谷歌的安卓手机、虚拟现实和物联网的嵌入式设备上,都运行着Linux系统。另一方面,像树莓派这样配备了Linux的超小型电脑,可以自由地使用Linux孕育出的代码库,从而极大地扩展了设备的可用性。正因为如此,学习Linux成为玩转树莓派的关键。我们也将从树莓派开始,深入学习Linux。