树莓派开始,玩转Linux(txt+pdf+epub+mobi电子书下载)


发布时间:2020-06-12 11:04:58

点击下载

作者:Vamei,周昕梓

出版社:电子工业出版社

格式: AZW3, DOCX, EPUB, MOBI, PDF, TXT

树莓派开始,玩转Linux

树莓派开始,玩转Linux试读:

前言

我是抱着玩的心态开始用电脑的。自从家里有了电脑之后,我就想方设法抓起鼠标和键盘打一会儿游戏。《金庸群侠传》《仙剑》《星际》《盟军敢死队》,这些老游戏都玩了个遍。父母担心我沉迷游戏,一度没收了我的鼠标和键盘。总之,当时的电脑只是个娱乐平台。

那个时候已经在提“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号线。全靠这班地铁上的空座位,我才能坐着写出大部分文字。

在设计本书内容时,昕梓和我决定尊重读者,不避讳艰深的内容。毕竟,树莓派本身只是一个入口。这个入口的背后有着丰富的操作系统知识。无论是编程,还是深入理解计算机,一定深度的操作系统知识都不可或缺。我们会从树莓派的基本使用讲起,一直深入操作系统原理本身。在第5部分,我们还加入了基于树莓派的实践项目,希望能抛砖引玉,激发用户的创造力。当然,篇幅所限,也不得不舍弃一些细节,但我相信,只要体验到边玩边学电脑的乐趣,那么其他技术的掌握也都可以沿着相同的轨迹重复进行。

那样的话,这本书就没有遗憾了。Vamei2018.2.25读者服务

轻松注册成为博文视点社区用户(www.broadview.com.cn),扫码直达本书页面。

◎ 提交勘误:您对书中内容的修改意见可在提交勘误处提交,若被采纳,将获赠博文视点社区积分(在您购买电子书时,积分可用来抵扣相应金额)。

◎ 交流互动:在页面下方读者评论处留下您的疑问或观点,与我们和其他读者一同学习交流。

页面入口:http://www.broadview.com.cn/34266第1部分怎样的树莓派树莓派是近年来诞生的一款微型电脑。由于体积小、功耗低,树莓派广泛应用于硬件创新领域,比如机器人、无人机、物联网和智慧工业。这一部分将介绍树莓派的相关背景:树莓派是如何诞生的,与树莓派相关的软硬件又分别有怎样的传奇故事。希望通过这一部分的介绍,能让你熟悉这款好玩的电脑,并认同它所秉承的开放创新理念。第1章树莓派的诞生

2006年,剑桥大学年轻的助教埃本·厄普顿(Eben Upton)(如图1-1所示)在为新入学的本科生头痛。图1-1 埃本·厄普顿

无疑,那些能进入剑桥大学的新生都有聪明的脑瓜。他们拿着傲人的A-Level考试成绩进入计算机系。从成绩上看,这些野心勃勃的年轻人无可挑剔,可坐在电脑前,这些新生就露馅了。大多数人只会摆弄Word和Excel,水平好一些的,也只不过会做一两个简单的网页。新生们的计算机水平让厄普顿和他的同事们摇头不止。

曾经,玩计算机的都是一群极客。他们的考试成绩或许不是那么优异,也不一定能在考试中过五关斩六将进入剑桥。但这些极客都是从小玩着UNIX系统和编译器长大的。按理说,到了2006年,家用电脑早已普及,越来越多的学生乐于选择计算机作为专业,计算机水平应该越来越高超。然而,厄普顿看到的实际情况却是新生的计算机水平很糟糕。

当然,剑桥有能力把新生培养成合格的计算机专业毕业生,但像厄普顿这样的内行明白,高手的养成有赖于青少年时期的动手实践。他自己就是个很好的例子。厄普顿成长于20世纪80年代。那个年代的英国人充满了动手精神。英国男人们以改装汽车和修冰箱为乐。厄普顿的父亲虽然是一位语言学教授,却也喜欢在业余时间带着自己的儿子们把引擎大卸八块,或者用继电器拼装起奇形怪状的家电。相同的手工精神也弥漫于计算机领域。计算机爱好者们不但对软件编程很熟练,对硬件调试也手到擒来。

在这种手工精神的鼓励下,市面上出现了很多为青少年设计的电脑,如Commodore 64和BBC Micro。Commodore 64是由Commodore公司推出的低端家用电脑,售价595美元。BBC Micro(如图1-2所示)是BBC电视台推出的教育电脑,单价200到300英镑。这些低端电脑性能一般,有时还会出不少bug。但它们售价便宜,让学校和普通家庭也可以轻松负担。由于母亲是学校老师,厄普顿本来可以免费使用学校的机房,但厄普顿的小伙伴们都有了自己的BBC Micro,而且一聚在一起就大聊各自的使用经验。不甘落后的厄普顿存够了200多英镑,给自己添置了一台BBC Micro。图1-2 BBC Micro

这款电脑有些像中国早年流行的学习机,预装了很多游戏和教育软件。更令人惊讶的是,BBC Micro非常尊重孩子们使用电脑的自由。它不但自带了编译环境,而且开放了大多数的设备接口。这意味着,电脑的功能全面地开放给了孩子们。如果喜欢,孩子们可以进行任何层面的编程,从而自由地发挥电脑的功能。对于厄普顿这样喜欢探索的孩子来说,BBC Micro提供了广阔的空间。

有一次,厄普顿想给自己的电脑增加一个鼠标,那时的鼠标可是新鲜出炉的“黑科技”。当然,新科技有很多不完善的地方,厄普顿买回来的鼠标就没有驱动。厄普顿的父亲帮他打电话到鼠标公司,结果对方的销售人员恶狠狠地回复:“如果你的儿子不会写驱动,那他就不该买鼠标。”

年少的厄普顿天真地相信了销售员的话,他决定自己写鼠标驱动。给硬件写驱动,大概是让成年人都会生畏的任务。幸好,BBC Micro开放的接口给鼠标驱动的开发提供了可能性。厄普顿用轮询的方式给自己的鼠标写了一个简单的驱动。当这个驱动运行时,这台简陋的BBC Micro就会变得异常缓慢,但总归可以看到鼠标的移动了。

相比于少年时的厄普顿,剑桥新生们能接触到性能高得多的电脑。这些电脑上配备的Windows系统,也比BBC Micro强大得多,但20世纪80年代的动手精神似乎忽然消失了。个人电脑成了很多家庭的工作和娱乐中心,花大价钱买高性能电脑的父母们,当然不想让自己的熊孩子把牛奶泼洒在键盘上。小孩子们再也不能像对待自己的BBC Micro那样,任意实验疯狂的想法。另一方面,新时代的电脑预装的都是Windows操作系统。Windows看似友好的图形化界面,把计算机真正的工作流程都隐藏在了幕后,让青少年们失去了进一步探索的动力。在Windows平台上,编程开发软件需要额外花钱购买。正因为如此,剑桥新生们反而没有20世纪80年代的厄普顿幸运。

少年时的情怀再次萌动,厄普顿想再造一台BBC Micro,让新时代的青少年可以尽情探索。他很快用各种电子元件在面包板上拼凑出一台粗糙无比的电脑,得意地展示给同事们。他的同事们都夸奖厄普顿“了不起”。可那些夸奖,听起来更像夸奖一个会打铁的现代人,颇有些猎奇的味道。毕竟,厄普顿的手工电脑性能太差。个人电脑尽管昂贵又没个性,却在性能上强大得多。没有哪个人会在家里用厄普顿的老古董。

厄普顿意识到,就算是简易电脑,还是要保持一定的性能。可是为了能让一般用户满意,成本就会迅速往上蹿。除非批量生产,否则简易电脑的成本根本无法降低到合理的水平。但厄普顿不知道自己的简易电脑能卖多少台,一千台?两千台?这样的订单数量,只会让供应商和制造工厂哂然一笑。

就在厄普顿想要放弃时,麻省理工学院传出消息,想要以Apple-II为蓝本,制作一款廉价的简易电脑。“我们可不能输。”这是剑桥计算机实验室的第一反应,所有人立刻想起厄普顿快要进棺材的手工电脑。名校的竞争精神再次复活了厄普顿的项目。一个以厄普顿为首的小圈子形成,他们用电子邮件积极交流制造廉价电脑的想法。为了方便指代厄普顿的电脑,一封邮件中使用了“树莓”这种水果的名字。树莓从此成为项目的代称。由于原型机上只支持Python编程语言,“树莓”后面又跟上了代表Python的“派”。树莓派(Raspberry Pi)就这样诞生了。厄普顿于2009年成立了慈善性质的“树莓派基金会”。这个基金会是管理运营树莓派的主要机构。树莓派的标志,如图1-3所示。图1-3 树莓派的标志

2011年,BBC科技记者罗伊的一篇博客文章,让“树莓派”进入公众视野。很多极客开始关注树莓派的产品开发。但实验原型和正式产品还有很遥远的距离。成本是最大的挑战。厄普顿的销售定价是15英镑。但对于无法预估销售量的新产品,供应商不愿给出太多优惠。幸好,厄普顿新入职的工作岗位带来了机会。他供职的博通公司(Broadcom)正在为手机生产ARM处理器,其性能和成本正符合厄普顿的预期。厄普顿决定使用ARM架构,从而解决了最关键的成本问题。

即便如此,树莓派的总成本还是难以控制在15英镑以下。很多同事劝厄普顿调高售价预期。但厄普顿不愿放弃,拼了命地想要压低每一分钱的成本。曾经的极客少年成了锱铢必较的“狡猾”商贩。他在市场上搜寻每一种型号的元器件,以便获得最优惠的价格。为了能降低以太网接口的成本,他拜访了从原厂到代理到经销商的每一个环节,最终从一家欧洲经销商处获得了半价折扣。为了寻找合适的代工厂,他几乎走遍欧美和东亚,向经理们描述着自己的教育梦。冲着厄普顿的热忱,中国台湾的一家电路板厂商才以近乎赔钱的价格接下了最初的树莓派订单。

2012年2月,树莓派(如图1-4所示)终于解决了最后一个关键问题:把Linux操作系统导入到充当文件系统的SD卡上。这个信用卡大小的电脑,与这个星球上最流行的开源操作系统合体了。Linux平台的所有功能向树莓派开放。厄普顿终于实现了自己的目标。公众也对这款区区15英镑的电脑充满好奇,总是不停地访问树莓派官网,想要获知产品发售的消息,甚至造成网站不断地死机。在同年2月底,树莓派刚刚发售,订单就纷至沓来。厄普顿惊讶地发现,自己大着胆子准备的一万台树莓派很快就销售一空。他的问题变成了甜蜜的痛苦:如何生产更多的树莓派来满足市场需求。图1-4 树莓派

从一开始,树莓派的影响就远远超出了教育领域。由于树莓派的小尺寸和低功耗,你可以把它当作很多移动平台的“大脑”。本来需要一台PC控制的机器人改用树莓派,体形一下就轻盈了许多。无人机控制同样是树莓派大显身手的地方。航天爱好者还把树莓派绑在高空气球上,以便能从几十公里的高空俯拍地球。英国宇航局甚至带了两块树莓派进空间站。树莓派成本低廉,立即成为智能家居和工业控制的重要组件。一些爱好者用树莓派来控制灯光和风扇,以便远程照顾自己的多肉植物。不少工厂用树莓派来执行关键作业,不但降低了成本,机器的运行也更加稳定。

厄普顿的简易电脑无意间填补了硬件开发的市场空白。那些支持厄普顿的供应商也因此获得了数百万的订单。但对于厄普顿来说,他最开心的事情,就是孩子们有了一款可以随便玩的电脑。直到今天,树莓派基金会依然致力于计算机教育项目。第2章树莓派的心脏

树莓派上最关键的元件,就是位于其中心位置的“心脏”——ARM处理器。这款处理器的诞生,也与BBC Micro这款启发了树莓派的电脑有关。1980年,“计算机”概念在欧美大热,成了电视和报纸上最常谈论的话题。BBC电视台趁机策划了一系列关于计算机的电视节目。导演遇到一个问题:怎么给没见过电脑的观众画饼。

此时,大洋彼岸的苹果公司已经推出了适合个人使用的微型电脑。Apple-II电脑在20世纪70年代末创造了销售神话,从而开发出个人电脑这个新市场。个人电脑在美国风靡,温吞的英国人的节奏却慢了一拍。对于英国人来说,计算机还是限于科研、国防、制造领域的高科技设备,和自己的生活没有太大关系。美国舶来的个人电脑都售价不菲。英国人不愿用一年的茶钱来换一台用途不明的机器。在这种情况下,无论BBC主持人怎样能说会道,只能凭空想象的电视观众估计也熬不过5分钟。幸好,BBC是英国传媒业的龙头,不会轻易放弃。BBC公开招标一款廉价的微型计算机。

中标的是艾康电脑公司(Acorn Computer Company)。按现在的标准看,艾康电脑很不靠谱。这家公司才成立两年,规模也很小。艾康的起家业务是给赌博机生产控制器。这些控制器拥有运算和存储组件,勉强算是电脑。但控制器执行的是固定的程序,与多功能的个人电脑还有相当的距离。

艾康中标的主要原因是他们正好有一台符合BBC预期的原型机。于是,这款原型机被重新命名为BBC Micro,成为电视节目的指定用机。借着电视节目,BBC Micro成为英国最流行的个人电脑。但钱没能消除艾康的危机感。与市面上其他的个人电脑相比,BBC Micro的性能没有优势。为了在竞争中胜出,艾康公司想把强大的Intel处理器用在BBC Micro上。

处理器又被称为“中央处理器”或“CPU”,是计算机执行指令的中枢。所谓的指令,就是计算机的某个单元操作。我们在生活中经常下指令,比如要求别人“向左转”或“向右转”。同样,用户也可以向计算机发出指令,比如要求计算机进行加减运算。无论多么复杂的动作,最终都会被分解为一系列的处理器指令来完成。因此,处理器的好坏直接决定了计算机的性能。

当时的Intel正风光无两。借着IBM电脑的大卖,Intel处理器(如图2-1所示)几乎占据了整个个人电脑市场。因此,Intel对于艾康这样的小客户提不起兴趣,不愿给出太大的折扣。由于BBC Micro的定位是廉价的教育型电脑,因此艾康最终放弃了Intel处理器,转而自行研发处理器。处理器的研发耗费巨大。艾康的工程师必须“事先非常仔细地考虑好所有的细节”,才能在苛刻的成本限制下实现处理器性能的提升。1985年,艾康公司给BBC Micro换上了性能优良的新型处理器。艾康公司也借此有了一个新产品——ARM处理器,如图2-2所示。图2-1 Intel处理器图2-2 BBC Micro中的ARM处理器

ARM是“Acorn RISC Machine”的简称,名字中的“RISC”,指的是ARM处理器对精简指令集的支持。这四个看起来干巴巴的字母,却是对Intel最直接的叫板。原因很简单,Intel采用的是完全相反的“CISC”。所谓的RISC,是指该类型的处理器只支持基本的汇编指令。“R”代表了“Reduced”,即“精简”。Intel支持的“CISC”,指的是复杂指令集。首字母“C”代表了“Complex”,即“复杂”。Intel处理器提供了比ARM处理器多得多的指令。和RISC相比,CISC处理器有很多高级功能,结构也相应复杂得多。从直觉上看,CISC处理器像是一辆超级跑车,让人趋之若鹜。

但两大阵营的对比并非那么简单。RISC支持的指令虽然基础,但总可以通过基础指令的组合来实现CISC处理器的功能。这意味着RISC处理器的汇编程序需要占用更多的空间,编译起来也比较耗时。但RISC处理器结构简单,制造成本低,运行起来也比较省电。其实在威尔森之前,大型服务器已经开始使用RISC处理器。这些大型电脑配备数目众多的处理器,就好像拥有大量汽车的出租车公司,更愿意选择经济型轿车。艾康的独到之处是把RISC引入了低成本的小型设备。

凭着ARM处理器,艾康守住了教育电脑市场。BBC Micro销量达到上百万台,直到1994年才彻底停产。但在更广阔的个人电脑市场上,Intel的CISC处理器才是赢家。毕竟,个人电脑逐渐成为家庭娱乐和个人办公的中心。一台个人电脑往往会使用5到7年,而电脑上的软件也会越来越多、越来越耗费资源。为了应对漫长的使用期,用户当然希望自己手里的是一辆超级跑车。因此,Intel长期霸占个人电脑市场,只留给竞争对手一点边角料。艾康想扩大份额,只能靠个人电脑之外的应用场景。

艾康寄希望于苹果公司的新产品。1990年,艾康公司和苹果公司联合成立了ARM公司。ARM公司的设立充满实验性质。公司最初只有12个人,只能在一间谷仓里办公。这个小团队负责开发ARM处理器。苹果将ARM处理器用于牛顿掌上电脑(Apple Newton)。这款产品极具创意。其大屏显示和手写识别,直接启发了“商务通”等PDA(Personal Digital Assistant)产品,甚至影响了iPhone的设计,如图2-3所示。掌上电脑对性能的要求没有个人电脑那么高,但需要节约使用电池。低功耗的ARM处理器正适合。但“牛顿”是一款早熟的产品,因此没能获得商业上的成功。它售价太高,而关键性的手写功能又充满缺陷,造成该产品在商业市场上折戟。ARM的路似乎走到了尽头。图2-3 Newton与iPhone

在这种绝望的状况下,ARM干脆彻底放弃了处理器的生产和销售。如果一家饭店既不做饭又不卖饭,估计第二天就要关张。幸好ARM公司是一家电子公司,还可以卖设计图纸。ARM当然不是自暴自弃地清仓甩卖。它收取一定的费用,把相关设计分享给有能力生产和销售的合作伙伴。合作伙伴生产出的每件ARM处理器,都要付给ARM公司一定的授权费。通过这种授权知识产权模式,ARM省去了生产和销售环节的巨额成本。专注于上游的设计,这也让ARM公司快速地迭代开发。当然,这也是没办法的办法。Intel这样的霸主,包揽了从设计到销售的全链条,根本不用像ARM这样委曲求全。

ARM开放的合作框架,掀起了一场反抗Intel的暴动。很多电子元件厂商都想和Intel竞争处理器市场,但都忌惮Intel的强势,不敢轻易涉入。与ARM公司合作,成了“蜀汉联合,共抗曹魏”的理想策略。反过来,这些厂商上了船,也心甘情愿地为ARM处理器攻城略地。德州仪器公司(Texas Instrument)生产的ARM处理器,就被诺基亚用在6110手机上。这款手机在中国也曾红极一时,笔者就曾拿着老爸的6110使劲地折叠贪吃蛇。除了6110这样的明星产品,ARM处理器还收编了诸多细分领域。在低端领域,ARM处理器“够用就好”的原则正好可以控制成本。在专用设备方面,ARM开放的架构允许小型电子厂自由地定制,也广受欢迎。

就在ARM攒足粮草的关键时机,苹果终于发力助攻。乔布斯回归苹果,发布了革命性的iPhone。由于iPhone选用了ARM处理器,因此ARM的市场份额开始狂飙。事实上,Intel曾有机会拿下iPhone。在iPhone诞生之前,苹果就和Intel达成战略合作关系,并把Intel处理器应用于苹果电脑。苹果也有意委托Intel开发iPhone的处理器,只是Intel内部并不看好iPhone,担心收不回投资成本。

ARM的开放又一次战胜了Intel的封闭。随后,谷歌推出安卓操作系统,刺激出一众安卓手机厂商。寻求快速迭代的安卓厂商很自然地选用开放的ARM处理器。ARM在手机市场的狂飙让Intel人心不稳。苹果在平板电脑iPad上再次跳过Intel,使用了ARM处理器。业界议论纷纷,既然ARM处理器能满足平板电脑的性能需求,为什么不能用于Intel坐镇的高端个人电脑呢?Intel的霸主地位日渐动摇。

如今,ARM处理器的出货量已经远远超过Intel,并占据了90%以上的手机处理器市场。树莓派使用的是来自博通公司的ARM处理器,从而为ARM处理器探索出新的应用领域。同样承袭BBC Micro的衣钵,ARM和树莓派都为计算机领域开创了新的发展模式。第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。第2部分使用树莓派听了那么多树莓派的故事,你一定想见识一下它的真面目。本书将从安装开始,逐步深入树莓派的使用。这一部分内容偏实用,旨在让你实际体验树莓派的功能。树莓派是一款特别适用于硬件互动的微型电脑,在这一部分会专门介绍树莓派这一方面的特长,如摄像头、GPIO接口和蓝牙模块。第4章开始使用树莓派

树莓派是一款信用卡大小的超小型电脑。它的长度为8.56cm,宽度为5.6cm,厚度只有2.1cm。树莓派把整个系统集成在一块电路板上的解决方案,被称为SoC(System on Chip)。SoC在手机等小型化设备中很常见,功耗也比较低。树莓派使用SoC的解决方案,正适合其超小型电脑的应用场景。4.1 解剖树莓派

树莓派是一台功能完整的电脑。现代电脑都采用了冯·诺依曼体系。冯·诺依曼在1945年发表了一份报告,把计算机分为五大组件,如图4-1所示,树莓派也不例外。这五大组件分别如下。

1.控制器

计算机的指挥部,管理计算机其他部分的工作,决定执行指令的顺序,控制不同部件之间的数据交流。

2.运算器

顾名思义,这是计算机中进行运算的部件。除加、减、乘、除等算术运算外,还能进行与、或、非等逻辑运算。运算器与控制器一起构成了中央处理器(CPU,Central Processing Unit)。

3.存储器

存储信息的部件。冯·诺依曼根据自己在曼哈顿工程中的经验,提出了存储器不但要记录数据,还要记录所要执行的程序。

4.输入设备

向计算机输入信息的设备,如键盘、鼠标、摄像头等。

5.输出设备

计算机向外输出信息的设备,如显示屏、打印机、音响等。图4-1 冯·诺依曼体系

我们拿树莓派和冯·诺依曼体系做一个对比。来自博通公司的ARM CPU位于树莓派的正面,如图4-2所示。CPU中除了运算器、控制器和缓存,还有一块用于图形运算的GPU。内存位于树莓派的反面,提供了1GB的存储器空间,如图4-3所示。树莓派上并没有直接的输入输出设备,但预留了多种多样的接口。你可以通过这些接口来连接输入输出设备,例如用USB口连接键盘、鼠标,用HDMI口连接显示器。加上输入输出设备之后,树莓派就补齐了冯·诺依曼体系的五大组件。图4-2 树莓派的正面图4-3 树莓派的反面

为了启动设备,你还需要一个电压为5V的电源。这个电源通过Micro B USB的输出端和树莓派连接。树莓派官方售卖的电源插座可以直接插到家用的220V电压插座上,另一端的Micro B USB就可以插入树莓派。你也可以买一根USB转Micro B USB的连接线,把USB一端插入PC或其他提供电源的USB端口。一旦接上电,树莓派的电源指示灯就会亮起,系统自动启动。

此外,你还需要一张Micro SD卡来作为计算机的外部存储器。这张SD卡插入树莓派的卡槽中,就可以接入系统。冯·诺依曼并未区分内部存储器和外部存储器。但现代的计算机,内存和外存承担了不同的功能。一般家用PC除了内存,也会有磁盘或者固态硬盘这样的外部存储器。通常来说,内存容量较小,读写速度快,因此只用于存储与当前运行程序相关的信息。一旦断电,内存中的数据就会丢失。外存容量较大,外存选取的都是可以长期保存数据的介质,从而在断电期间也能保存数据。因此,需要长期保存的数据,如树莓派的操作系统,就需要保存在这张SD卡上。当树莓派开机时,会加载SD卡中保存的操作系统程序。用户产生的文件,也保存在这张SD卡上。如果你的树莓派硬件出现故障,只需把这张Micro SD卡插入其他树莓派中继续使用即可,而不用担心任何的数据丢失。

除了上面的核心组件外,树莓派还包括了其他接口。

· 40 PIN Extended GPIO:广义编程接口,常用于硬件控制。

· 10/100 LAN Port:用于有线连接的以太网口。

· CSI Camera Port:摄像头接口。

· 3.5mm 4-Pole Composite Video and Audio Output Jack:视频音频输出口。这个接口常用于音频输出。

· DSI Display Port:另一种显示接口。这个接口不常见。

在树莓派3 Model B中,还自带了Wi-Fi和蓝牙模块,可以方便地进行无线连接。在老版本的树莓派中,只能通过USB外接相关适配器,以实现无线连接。4.2 操作系统的安装与启动

树莓派上最基础的软件就是操作系统。我们说过,树莓派的操作系统保存在它的外部存储器,也就是Micro SD卡上。由于树莓派一开机就需要找到操作系统,所以Micro SD卡上的操作系统程序必须提前写入。树莓派官方推荐使用8GB的SD卡,Raspbian操作系统本身占据的空间不到5GB,剩下的空间就可以由用户使用。不过,为了让空间足够充裕,建议使用更大空间的Micro SD卡。

我们需要一台可以读写Micro SD卡的电脑来烧录。很多笔记本电脑都自带SD卡插口。需要注意的是,这些SD卡插槽会比Micro SD卡尺寸大,所以需要一个Micro SD卡转SD卡的卡套,才能插入插槽。即使没有SD插槽和转换卡套,一个USB接口的Micro SD卡读卡器也可以很便宜地买到。

本书的操作系统是树莓派官方推出的Raspbian。正如名字暗示的,Raspbian继承自Debian操作系统。Debian是Linux的一个发行版本。当你熟悉了Raspbian,就有了使用Linux系统的经验。官网提供了Raspbian的镜像文件,你可以到官网下载。由于Raspbian不时会更新版本,所以下载文件的名字也会有差异。本书后面把该镜像文件统称为raspbian.image。我们需要把这个镜像文件烧录到SD卡上。下面分别列出了多种烧录方式。

1.Windows电脑烧录

Windows系统有现成的图形化软件来完成上述镜像烧录工作,比如树莓派官网推荐的Win32 Disk Imager,如图4-4所示。图4-4 Win32 Disk Imager界面

安装好Win32 Disk Imager后启动。在界面上的“Image File”栏选择镜像文件,在“Device”栏中选择Micro SD卡对应的盘符,然后单击“Write”按钮。待进度条完成后,Micro SD卡就烧录成功了。烧录完成后,把SD卡插入树莓派的卡槽中,为树莓派连通电源和显示器,就可以从屏幕上看到树莓派的启动画面了。

2.Mac OS X烧录

如果是在Mac OS X下,可以通过终端(Terminal)中的命令来进行烧录。首先,列出挂载的所有存储设备:

$diskutil list

从中找到对应Micro SD卡的设备,并记下它的路径,如/dev/disk3。 然后,使用dd命令把镜像文件写入SD卡:

3.Linux烧录

如果是在Linux系统下,那么可以用如下命令来找出Micro SD卡挂载的路径:

Linux下的烧录和Mac OS X类似,可以使用dd命令,把镜像文件写入SD卡:

4.NOOBS

NOOBS是一种更加简便的安装方式。NOOBS(New Out Of Box Software)是一个简便的操作系统安装程序。首先准备一个格式化为FAT格式的Micro SD卡,然后把解压缩后的NOOBS文件直接复制到SD卡中即可。随后,将此卡插入树莓派中,即可根据图形化界面提醒安装想要使用的操作系统。4.3 图形化界面

开机完成后,就可以进入Raspbian的图形化桌面了。图形化桌面提供的主要功能都在上方的导航栏中,如图4-5所示。图4-5 Raspbian桌面

1.导航栏左上角

导航栏左上角的菜单(Menu)包含了很多应用软件,分为下面几类。

· Programming:编程工具,如动态编程语言Python,用于数学运算的Mathematica,以及用于编程教育的Scratch等。

· Office:办公软件,即开源的LibreOffice套装。

· Internet:互联网软件,如电子邮件客户端和浏览器。

· Games:游戏。这里有点失望,除了Minecraft,就是用于游戏编程的Python Games。

· Accessories:工具软件,如文件管理器File Manager、终端Terminal、文本编辑器等。

· Sound & Videos:VLC播放器。

菜单末端还有两个选项。

· Preferences:系统配置,可以在里面设置时间、语言、显示等选项。

· Shutdown:用于关机或重启。

紧邻着菜单的是来自菜单的五个常用软件,依次是浏览器:用于上网;文件管理器:用于浏览和操作文件;终端:以命令行的方式控制操作系统,本书后面将常用到终端;进行科学运算的Mathematica和Wolfgram。

2.导航栏右侧

导航栏右侧通常有树莓派运行状态的几个信息。

· 蓝牙。

· Wi-Fi。

· 声音控制。

· CPU使用监控。

· 时间。

· 可插拔设备,如USB存储器。

你可以点击相应的图标进入设置页面。比如点击Wi-Fi图标,可以选择要连接的无线网络,并输入Wi-Fi密码。

导航栏之外的空间,就是桌面。桌面上有一个回收箱(Wastebasket)。此外,你可以把一些文件放在桌面上。如果你打开某个有图形化界面的软件,它的桌面也会显示在桌面上方。接下来,我们来接触两款有图形化界面的软件。4.4 Scratch

首先,简要地了解Scratch。Scratch是由麻省理工学院开发的一款图形化编程软件。这个软件已经预装在Raspbian中,在“菜单”中找到后点击它,就可以打开,如图4-6所示。图4-6 Scratch界面

Scratch的界面分为左中右三栏。右边是一只猫,左边是编程可用的命令。把左边的命令拖到中间栏,就可以制作程序。由于左栏提供了所有可用的命令,所以编程时不需要记住任何语法。因此,Scratch经常用于幼儿教育。

我们把下面几个命令组合在一起,就写成了一个小程序,如图4-7所示。图4-7 Scratch代码

这段程序很直观。当我们点击界面上的旗帜按钮时,猫咪就会说“Hello,World!”。树莓派预装Scratch的目的也很明了:让孩子们尽早享受编程的乐趣。4.5 KTurtle

Raspbian系统中还可以安装一款叫KTurtle的软件。这款软件有一个图形化界面。整个界面分为左右两栏,如图4-8所示。我们通过左边填写的程序,来控制右栏小海龟的移动。移动的小海龟会在画面上留下行动的轨迹,从而绘制出各种各样的图形。在绘图过程中,小海龟不断移动,左侧程序栏中也会用黄色标明执行到哪一行了,非常有趣。图4-8 KTurtle界面

我们首先来看KTurtle的下载安装。从树莓派菜单中打开Terminal,依次输入以下命令:

等命令运行完,KTurtle也就安装好了。

在Terminal中输入kturtle,按Enter键打开KTurtle界面,就可以开始编程了。常见的控制海龟行动的命令如下所示。

· reset:清空画面。

· pencolor:设置画笔颜色。

· forward:小海龟前进,后面跟一个数字,表示前进的距离。

· backward:小海龟后退,后面跟一个数字,表示后退的距离。

· turnleft:左转,后面跟一个数字,表示左转的角度。

· turnright:右转,后面跟一个数字,表示右转的角度。

· go:让小海龟瞬移到某个位置。后面跟两个数字,表示位置。

· print:在屏幕上打印文字。

· repeat:重复某些动作。后面跟数字和花括号,数字表示重复次数,而花括号中的内容表示重复的动作。

此外,还要一些设置命令。

· reset:清空画面。

· pencolor:设置画笔颜色。

· fontsize:设置字体大小。

程序中的文本和数字等数据可以储存在变量中,以便之后反复使用。变量用$a的形式表示。KTurtle中更复杂的命令可以通过它的“帮助”菜单来查询。

下面我们用KTurtle绘制一个花朵。在KTurtle的代码框中输入:

试读结束[说明:试读内容隐藏了图片]

下载完整电子书


相关推荐

最新文章


© 2020 txtepub下载