本書以樹莓派基礎(chǔ)工具,講解Linux操作系統(tǒng)。樹莓派是近年來流行的微型電腦,能用于各種有趣的硬件開發(fā)。樹莓派中安裝了Linux系統(tǒng),可以充當操作系統(tǒng)的學習平臺。本書按照“樹莓派背景知識——樹莓派使用——Linux使用——操作系統(tǒng)原理——實操項目”的順序展開。讀者不僅能體驗到玩樹莓派的樂趣,而且能全面了解操作系統(tǒng)的核心概念和原理。
張騰飛,筆名Vamei,從事圖像處理和高性能運算方面的科研,現(xiàn)從事智能硬件和畜牧大數(shù)據(jù)方面的創(chuàng)業(yè)。個人的技術(shù)博客點擊量超600萬,寫作有Python、 Java、Linux、網(wǎng)絡(luò)協(xié)議和數(shù)據(jù)科學方面的教程。
第1部分 怎樣的樹莓派
第1章 樹莓派的誕生 2
第2章 樹莓派的心臟 7
第3章 樹莓派的大腦 12
第2部分 使用樹莓派
第4章 開始使用樹莓派 20
4.1 解剖樹莓派 20
4.2 操作系統(tǒng)的安裝與啟動 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 命令的選項和參數(shù) 37
5.6 如何了解一個陌生的命令 38
5.7 Shell小竅門 38
第6章 好編輯 40
6.1 圖形化的文本編輯器 40
6.2 使用nano 42
6.3 語法高亮 44
6.4 文件基礎(chǔ)操作 45
第7章 更好的樹莓派 47
7.1 常見初始化配置 47
7.2 軟件升級與安裝 49
第8章 漂洋過海連接你 51
8.1 局域網(wǎng)SSH登錄 51
8.2 Bonjour 53
8.3 互聯(lián)網(wǎng)SSH登錄 53
8.4 文件傳輸 56
第9章 時間的故事 60
9.1 NTP服務(wù) 60
9.2 時區(qū)設(shè)置 61
9.3 實時時鐘 62
9.4 date的用法 65
第10章 規(guī)劃小能手 67
10.1 用cron規(guī)劃任務(wù) 67
10.2 用cron開機啟動 68
10.3 用/etc/init.d實現(xiàn)開機啟動 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章 玩轉(zhuǎn)藍牙 80
12.1 藍牙介紹 80
12.2 BLE介紹 82
12.3 Bluez 85
12.4 了解樹莓派上的藍牙 86
12.5 樹莓派作為BLE外設(shè) 87
12.6 樹莓派作為BLE中心設(shè)備 88
12.7 樹莓派作為Beacon 89
第13章 你是我的眼 91
13.1 攝像頭的安裝與設(shè)置 91
13.2 攝像頭的基本使用 92
13.3 用VLC做網(wǎng)絡(luò)攝像頭 92
13.4 用Motion做動作捕捉 93
第3部分 進入LINUX
第14章 Linux的真身 96
14.1 什么是內(nèi)核 96
14.2 什么是GNU軟件 98
14.3 Linux的發(fā)行版 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 文本相關(guān)命令 119
第18章 我的地盤我做主 121
18.1 我是誰 121
18.2 root和用戶創(chuàng)建 122
18.3 用戶信息文件 124
18.4 文件權(quán)限 125
18.5 文件權(quán)限管理 127
第19章 會編程的bash(上) 129
19.1 變量 129
19.2 數(shù)學運算 131
19.3 返回代碼 132
19.4 bash腳本 133
19.5 函數(shù) 136
19.6 跨腳本調(diào)用 137
第20章 會編程的bash(下) 138
20.1 邏輯判斷 138
20.2 選擇結(jié)構(gòu) 140
20.3 循環(huán)結(jié)構(gòu) 143
20.4 bash與C語言 146
第21章 完整架構(gòu) 148
21.1 內(nèi)核模式與系統(tǒng)調(diào)用 148
21.2 庫函數(shù) 149
21.3 Shell 151
21.4 用戶程序 151
第22章 函數(shù)調(diào)用與進程空間 153
22.1 函數(shù)調(diào)用 153
22.2 跳轉(zhuǎn) 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系統(tǒng)調(diào)用 171
24.3 資源的fork 172
24.4 最小權(quán)限原則 174
24.5 進程的終結(jié) 174
第25章 進程間的悄悄話 177
25.1 管道 177
25.2 管道的創(chuàng)建 178
25.3 其他IPC方式 179
第26章 多任務(wù)與同步 185
26.1 并發(fā)與分時 185
26.2 多線程 186
26.3 競態(tài)條件 189
26.4 多線程同步 190
第27章 進程調(diào)度 194
27.1 進程狀態(tài) 194
27.2 進程的優(yōu)先級 195
27.3 O(n)和O(1)調(diào)度器 196
27.4 完全公平調(diào)度器 199
第28章 內(nèi)存的一頁故事 201
28.1 內(nèi)存 201
28.2 虛擬內(nèi)存 202
28.3 內(nèi)存分頁 203
28.4 多級分頁表 204
第29章 倉庫大管家 207
29.1 外部存儲設(shè)備 207
29.2 外部存儲器的掛載 208
29.3 ext文件系統(tǒng) 209
29.4 FAT文件系統(tǒng) 211
29.5 文件描述符 212
第30章 鳥瞰文件樹 213
30.1 /boot和樹莓派啟動 213
30.2 應(yīng)用程序相關(guān) 214
30.3 /etc與配置 215
30.4 系統(tǒng)信息與設(shè)備 216
30.5 其他目錄 217
第31章 分級存儲 219
31.1 CPU緩存 219
31.2 頁交換 220
31.3 交換空間 221
31.4 外存的緩存與緩沖 222
第32章 遍閱網(wǎng)絡(luò)協(xié)議 225
32.1 通信與互聯(lián)網(wǎng)協(xié)議 225
32.2 協(xié)議分層 226
第33章 樹莓派網(wǎng)絡(luò)診斷 229
33.1 基礎(chǔ)工具 229
33.2 網(wǎng)絡(luò)層 230
33.3 路由 231
33.4 網(wǎng)絡(luò)監(jiān)聽 231
33.5 域名解析 232
第5部分 樹莓派小應(yīng)用
第34章 樹莓派平板電腦 234
34.1 平板電腦 234
34.2 硬件介紹 234
34.3 硬件的安裝 235
34.4 配置操作系統(tǒng) 236
第35章 天氣助手 238
35.1 讀取互聯(lián)網(wǎng)API 238
35.2 發(fā)送郵件 242
第36章 架設(shè)博客 245
36.1 安裝服務(wù)器軟件 245
36.2 安裝Typecho 247
36.3 讓別人可以訪問你的網(wǎng)站 248
第37章 離線下載 250
37.1 安裝下載工具Aria2 250
37.2 Aria2的使用 251
37.3 遠程使用Aria2 251
37.4 安裝圖形化下載管理工具 252
第38章 訪客登記系統(tǒng) 255
38.1 編寫命令行小程序 255
38.2 嘗試Tkinter 257
38.3 制作訪客登記系統(tǒng) 260
38.4 訪客名片和訪客拍照 261
第39章 節(jié)能照明系統(tǒng) 263
39.1 傳感器 263
39.2 讀取傳感器數(shù)據(jù) 264
39.3 控制照明電路 266
第40章 樹莓派挖礦 268
40.1 比特幣錢包 268
40.2 在樹莓派上挖礦 270
40.3 區(qū)塊鏈存儲服務(wù) 272
第41章 高性能計算 275
41.1 Spark 275
41.2 樹莓派與Spark 276
41.3 單機版?計算 277
41.4 樹莓派集群 278
第42章 藍牙即時通信 281
42.1 樹莓派與藍牙 281
42.2 藍牙服務(wù)端 282
42.3 藍牙客戶端程序 284
42.4 服務(wù)端和客戶端通信 285
42.5 實現(xiàn)文字聊天功能 285
42.6 數(shù)據(jù)加密傳輸 286
第43章 制作一個Shell 291
43.1 配置項目 291
43.2 輸入輸出設(shè)置 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 圖形化顯示結(jié)果 316
附錄A 字符編碼 318
附錄B Linux命令速查 320
附錄C C語言語法摘要 328
附錄D Makefile基礎(chǔ) 332
附錄E gbd調(diào)試C程序 334
附錄F 參考書目及簡介 338
后記 340