|
-- 會員 / 註冊 --
|
|
|
|
樹莓派開始,玩轉Linux ( 簡體 字) |
作者:Vamei,周昕梓 | 類別:1. -> 電腦組織與體系結構 -> 單晶片 -> Raspberry Pi |
譯者: |
出版社:電子工業出版社 | 3dWoo書號: 49341 詢問書籍請說出此書號!【缺書】 NT售價: 345 元 |
出版日:6/1/2018 |
頁數:356 |
光碟數:0 |
|
站長推薦: |
印刷:黑白印刷 | 語系: ( 簡體 版 ) |
|
加入購物車 │加到我的最愛 (請先登入會員) |
ISBN:9787121342660 |
作者序 | 譯者序 | 前言 | 內容簡介 | 目錄 | 序 |
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證) |
作者序: |
譯者序: |
前言:我是抱著玩的心態開始用電腦的。自從家里有了電腦之后,我就想方設法抓起鼠標和鍵盤打一會兒游戲。《金庸群俠傳》《仙劍》《星際》《盟軍敢死隊》,這些老游戲都玩了個遍。父母擔心我沉迷游戲,一度沒收了我的鼠標和鍵盤。總之,當時的電腦只是個娛樂平臺。 那個時候已經在提“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 |
內容簡介:本書以樹莓派基礎工具,講解Linux操作系統。樹莓派是近年來流行的微型電腦,能用于各種有趣的硬件開發。樹莓派中安裝了Linux系統,可以充當操作系統的學習平臺。本書按照“樹莓派背景知識——樹莓派使用——Linux使用——操作系統原理——實操項目”的順序展開。讀者不僅能體驗到玩樹莓派的樂趣,而且能全面了解操作系統的核心概念和原理。 |
目錄:第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 |
序: |
|