树莓派开始,玩转Linux
  • 推荐0
  • 收藏6
  • 浏览1.4K

树莓派开始,玩转Linux

张腾飞 (作者) 

  • 书  号:978-7-121-34266-0
  • 出版日期:2018-06-27
  • 页  数:356
  • 开  本:16(185*235)
  • 出版状态:上市销售
  • 维护人:安娜
电子书 ¥45.00
购买电子书
纸质版 ¥69.00
本书以树莓派基础工具,讲解Linux操作系统。树莓派是近年来流行的微型电脑,能用于各种有趣的硬件开发。树莓派中安装了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部分,我们还加入了基于树莓派的实践项目,希望能抛砖引玉,激发用户的创造力。当然,篇幅所限,也不得不舍弃一些细节,但我相信,只要体验到边玩边学电脑的乐趣,那么其他技术的掌握也都可以沿着相同的轨迹重复进行。
那样的话,这本书就没有遗憾了。

Vamei
2018.2.25

目录

第1部分 怎样的树莓派

第1章 树莓派的诞生 2

第2章 树莓派的心脏 7

第3章 树莓派的大脑 12

第2部分 使用树莓派

第4章 开始使用树莓派 20
4.1 解剖树莓派 20
4.2 操作系统的安装与启动 23
4.3 图形化界面 24
4.4 Scratch 26
4.5 KTurtle 27

第5章 贝壳里的树莓派 31
5.1 初试Shell 31
5.2 用命令了解树莓派 32
5.3 什么是Shell 35
5.4 Shell的选择 36
5.5 命令的选项和参数 37
5.6 如何了解一个陌生的命令 38
5.7 Shell小窍门 38

第6章 好编辑 40
6.1 图形化的文本编辑器 40
6.2 使用nano 42
6.3 语法高亮 44
6.4 文件基础操作 45

第7章 更好的树莓派 47
7.1 常见初始化配置 47
7.2 软件升级与安装 49

第8章 漂洋过海连接你 51
8.1 局域网SSH登录 51
8.2 Bonjour 53
8.3 互联网SSH登录 53
8.4 文件传输 56

第9章 时间的故事 60
9.1 NTP服务 60
9.2 时区设置 61
9.3 实时时钟 62
9.4 date的用法 65

第10章 规划小能手 67
10.1 用cron规划任务 67
10.2 用cron开机启动 68
10.3 用/etc/init.d实现开机启动 68
10.4 避免使用/etc/rc.local 71
10.5 Shell中的定时功能 71

第11章 GPIO的触手 73
11.1 GPIO简介 73
11.2 控制LED灯 74
11.3 两个树莓派之间的GPIO 75
11.4 UART编程 77
11.5 用UART连接PC 79
11.6 用UART登录树莓派 79

第12章 玩转蓝牙 80
12.1 蓝牙介绍 80
12.2 BLE介绍 82
12.3 Bluez 85
12.4 了解树莓派上的蓝牙 86
12.5 树莓派作为BLE外设 87
12.6 树莓派作为BLE中心设备 88
12.7 树莓派作为Beacon 89

第13章 你是我的眼 91
13.1 摄像头的安装与设置 91
13.2 摄像头的基本使用 92
13.3 用VLC做网络摄像头 92
13.4 用Motion做动作捕捉 93

第3部分 进入LINUX

第14章 Linux的真身 96
14.1 什么是内核 96
14.2 什么是GNU软件 98
14.3 Linux的发行版 99

第15章 你好,文件 101
15.1 路径与文件 101
15.2 目录 102
15.3 硬链接 103
15.4 软链接 104
15.5 文件操作 105
15.6 文件搜索 106

第16章 从程序到进程 108
16.1 指令 108
16.2 C程序 110
16.3 程序编译 111
16.4 看一眼进程 112

第17章 万物皆是文本流 114
17.1 文本流 114
17.2 标准输入、标准输出、标准错误 116
17.3 重新定向 117
17.4 管道 118
17.5 文本相关命令 119

第18章 我的地盘我做主 121
18.1 我是谁 121
18.2 root和用户创建 122
18.3 用户信息文件 124
18.4 文件权限 125
18.5 文件权限管理 127

第19章 会编程的bash(上) 129
19.1 变量 129
19.2 数学运算 131
19.3 返回代码 132
19.4 bash脚本 133
19.5 函数 136
19.6 跨脚本调用 137

第20章 会编程的bash(下) 138
20.1 逻辑判断 138
20.2 选择结构 140
20.3 循环结构 143
20.4 bash与C语言 146

第21章 完整架构 148
21.1 内核模式与系统调用 148
21.2 库函数 149
21.3 Shell 151
21.4 用户程序 151

第22章 函数调用与进程空间 153
22.1 函数调用 153
22.2 跳转 155
22.3 栈与情境切换 157
22.4 本地变量 158
22.5 全局变量和堆 159

第23章 穿越时空的信号 161
23.1 按键信号 161
23.2 kill命令 162
23.3 信号机制 163
23.4 信号处理 164
23.5 C程序中的信号 166

第4部分 深入Linux

第24章 进程的生与死 170
24.1 从init到进程树 170
24.2 fork系统调用 171
24.3 资源的fork 172
24.4 最小权限原则 174
24.5 进程的终结 174

第25章 进程间的悄悄话 177
25.1 管道 177
25.2 管道的创建 178
25.3 其他IPC方式 179

第26章 多任务与同步 185
26.1 并发与分时 185
26.2 多线程 186
26.3 竞态条件 189
26.4 多线程同步 190

第27章 进程调度 194
27.1 进程状态 194
27.2 进程的优先级 195
27.3 O(n)和O(1)调度器 196
27.4 完全公平调度器 199

第28章 内存的一页故事 201
28.1 内存 201
28.2 虚拟内存 202
28.3 内存分页 203
28.4 多级分页表 204

第29章 仓库大管家 207
29.1 外部存储设备 207
29.2 外部存储器的挂载 208
29.3 ext文件系统 209
29.4 FAT文件系统 211
29.5 文件描述符 212

第30章 鸟瞰文件树 213
30.1 /boot和树莓派启动 213
30.2 应用程序相关 214
30.3 /etc与配置 215
30.4 系统信息与设备 216
30.5 其他目录 217

第31章 分级存储 219
31.1 CPU缓存 219
31.2 页交换 220
31.3 交换空间 221
31.4 外存的缓存与缓冲 222

第32章 遍阅网络协议 225
32.1 通信与互联网协议 225
32.2 协议分层 226

第33章 树莓派网络诊断 229
33.1 基础工具 229
33.2 网络层 230
33.3 路由 231
33.4 网络监听 231
33.5 域名解析 232

第5部分 树莓派小应用

第34章 树莓派平板电脑 234
34.1 平板电脑 234
34.2 硬件介绍 234
34.3 硬件的安装 235
34.4 配置操作系统 236

第35章 天气助手 238
35.1 读取互联网API 238
35.2 发送邮件 242

第36章 架设博客 245
36.1 安装服务器软件 245
36.2 安装Typecho 247
36.3 让别人可以访问你的网站 248

第37章 离线下载 250
37.1 安装下载工具Aria2 250
37.2 Aria2的使用 251
37.3 远程使用Aria2 251
37.4 安装图形化下载管理工具 252

第38章 访客登记系统 255
38.1 编写命令行小程序 255
38.2 尝试Tkinter 257
38.3 制作访客登记系统 260
38.4 访客名片和访客拍照 261

第39章 节能照明系统 263
39.1 传感器 263
39.2 读取传感器数据 264
39.3 控制照明电路 266

第40章 树莓派挖矿 268
40.1 比特币钱包 268
40.2 在树莓派上挖矿 270
40.3 区块链存储服务 272

第41章 高性能计算 275
41.1 Spark 275
41.2 树莓派与Spark 276
41.3 单机版?计算 277
41.4 树莓派集群 278

第42章 蓝牙即时通信 281
42.1 树莓派与蓝牙 281
42.2 蓝牙服务端 282
42.3 蓝牙客户端程序 284
42.4 服务端和客户端通信 285
42.5 实现文字聊天功能 285
42.6 数据加密传输 286

第43章 制作一个Shell 291
43.1 配置项目 291
43.2 输入输出设置 293
43.3 初步的Shell 295
43.4 文字颜色与其他配置 296
43.5 部分Shell 功能 297
43.6 Shell主程序 304

第44章 人工智能 311
44.1 树莓派的准备 311
44.2 YOLO识别 313
44.3 图形化显示结果 316

附录A 字符编码 318

附录B Linux命令速查 320

附录C C语言语法摘要 328

附录D Makefile基础 332

附录E gbd调试C程序 334

附录F 参考书目及简介 338

后记 340

读者评论

  • P24, 两个烧录命令 sudo dd if=/dev/disk3 of=./raspian.image
    这个if是input file,应该设置成./raspian.image才对
    另外问下本书的勘误表在哪里能找到?

    BlackCatFirst发表于 2018/10/24 10:46:40

电子书版本

  • Epub

相关图书

微信开发深度解析:微信公众号、小程序高效开发秘籍

苏震巍 (作者)

本书以深度剖析Senparc.Weixin SDK框架的设计思想和使用方法为主干,全面介绍了开发微信公众号(包含了订阅号、服务号和小程序)所需的关键技能,包括了...

¥99.00

实战微信小程序:JavaScript、WXML与Flexbox综合开发

于连林 (作者)

本书从零开始介绍微信小程序开发,主要内容包括微信小程序介绍、微信小程序开发环境介绍、JavaScript语法、WXML和WXSS语法、小程序开发基础、FlexB...

¥49.00

知晓程序:微信小程序入门指南

郑裕耿 (作者)

本书是一本分析小程序生态、解读小程序产品设计与开发的入门图书。全书共 9 章,全面讲解了小程序的基本知识、大家如何看待小程序、小程序对行业的影响、小程序对开发者...

¥49.00

微信小程序开发零基础入门

薛淑英 (作者)

微信小程序是一种最新的App替代品,其定位是在微信公众号的生态链中,使用微信本身作为应用平台,无须更新和下载,开箱即用。本书由浅入深、循序渐进,使零基础的读者能...

¥59.00

嵌入式Linux驱动开发教程

贾燕枫 (作者)

本书结合大量实例,在基于ARM Cortex-A9四核处理器Exynos4412的硬件教学平台和PC机上,全面详细讲解了Linux设备驱动开发。主要内容包含开发...

¥69.00

微信公众平台网页开发实战——HTML5+JSSDK混合开发解密

薛淑英 (作者)

2017年,微信已经全面支持公众平台内的网页开发,并且提供了网页开发样式库、JSSDK库和网页内支付、网页调试工具,Web开发人员可以利用这些功能开发出更多、更...

¥69.00