內容介紹 | |
![](http://img3m2.ddimg.cn/60/9/29409792-1_u_6.jpg)
開本:16開 紙張:膠版紙 包裝:平裝-膠訂 是否套裝:否 國際標準書號ISBN:9787302599395 叢書名:計算機科學與技術叢書 作、瀋克勤 出版社:清華大學出版社 出版時間:2022年04月 
" 編輯推薦 樹莓派是廣受電子愛好者關注的便攜式計算機繫統,Linux操作繫統是適配樹莓派的主要操作繫統。本書繫統介紹將Linux操作繫統移植到樹莓派的方法與實現,幫助讀者了解操作繫統的組成和運行方式,理解操作繫統基本軟件的作用和它們之間的關繫,掌握樹莓派控制接口的使用方法。全書內容涵蓋如下主題: 內核與根文件繫統; 軟件移植方法、基礎軟件包和網絡工具; 輕量級Linux桌面環境XFCE4; 若干Linux應用軟件移植; 構建板載開發環境、移植Python; 樹莓派I/O接口控制。 內容簡介 本書介紹Linux 內核的編譯和移植、根文件繫統的制作、基礎繫統、桌面繫統, 以及這些軟件在繫統中的 作用、軟件之間的依賴關繫、各種軟件的移植方法。由於很多樹莓派應用是由Python 語言開發的, 本書也 專門介紹樹莓派上硬件接口的Python 控制模塊和其他一些基礎應用。全書共分6 章,第1 章介紹Linux 內核的 移植及根文件繫統的制作;在第1 章的基礎上, 第2 章移植了一些基礎軟件, 增強了樹莓派的聯網功能;第3 章 介紹Linux 的基礎圖形庫、文本布局軟件、X Window 繫統, 直至構成一個完整的XFCE4 桌面環境;第4 章介 紹一些應用軟件的移植, 包括遠程桌面、音視頻編碼與解碼及媒體播放、文檔閱讀, 以及網絡監控軟件;第 5 章 介紹典型的Linux 開發工具的移植, 移植了編譯器的樹莓派繫統初步具備板載開發能力;鋻於樹莓派被廣泛用於 電子設計制作, 第6 章專門討論樹莓派GPIO 接口的功能, 介紹一款典型的GPIO Python 模塊的使用, 並介紹 各種應用模塊的工作原理和程序控制方法。 本書能對樹莓派愛好者深入學習提供一定的幫助, 對於其他嵌入式開發人員, 書中介紹的大多數內容也有 同樣的參考意義。此外, 本書也可作為高等學校電子信息專業在學習嵌入式Linux 操作繫統時的教學參考書。 作者簡介 < 南京大學物理學博士、副教授。現就職於南京大學電子科學與工程學院,長期從事信號處理、計算機組成原理及操作繫統領域的課程教學工作,主要研究領域涉及音頻信號處理、計算機通信和嵌入式繫統應用。
瀋克勤 畢業於國防科技大學繫統工程專業,於解放軍理工大學工作多年,從事計算機應用領域的教學和研究工作。退役後在南京理工大學紫金學院從事物聯網應用的教學和競賽指導工作。 目錄 第1章 內核與根文件繫統 .1 Bootloader 9 1.4 Linux內核 .10 bash67 JasPer .96 3.2.4 3.2.5 librsvg.104 Glib 107 HarfBuzz .116 3.3.4 3.3.5 Fontconfig118 GTK120 GDK-PixBuf122 3.4.2 Cairo.123第1章 內核與根文件繫統 .1
1.1樹莓派簡介 1
1.1.1 核心處理器 . 3
1.1.2 樹莓派操作繫統 4
1.1.3 樹莓派接口 . 4
1.2開發工具 . 4
1.2.1 編譯工具 5
1.2.2 調試接口 6
1.3樹莓派的外存儲器 8
1.3.1 SD卡分區 8 Bootloader 9
1.3.2 1.4 Linux內核 .10
1.4.1 獲取內核源碼.11
1.4.2 配置和編譯內核 .11
1.5根文件繫統.15
1.5.1 編譯 BusyBox15
1.5.2 初始化 RAMDisk .18
1.5.3 構造 Ext4分區 27
1.5.4 配置文件 .31
1.5.5 網絡文件繫統.40
1.6本章小結 40
第2章基礎繫統. 42
2.1軟件編譯 42
2.1.1 軟件的依賴關繫 .42
2.1.2 基礎繫統軟件.43
2.1.3 軟件編譯方法.44
2.2包管理器 49
2.2.1 數據壓縮 .49
2.2.2 編譯 dpkg56
2.2.3 安裝包格式 57
2.3安裝軟件包.60
2.4其他軟件編譯.61
2.4.1 Vim編輯器 .61
2.4.2 時區數據.66
2.4.3 文件繫統工具.67 bash67
2.4.5 systemd.68
2.5網絡工具 71
2.5.1 編譯網絡工具.71
2.5.2 遠程連接 .78
2.5.3 無線網絡連接.78
2.5.4 安裝 dropbear81
2.6本章小結 84
2.4.4 第3章桌面繫統. 86
3.1 X Window繫統86
3.2基礎圖形庫.91
3.2.1 libpng92
3.2.2 libjpeg.95 JasPer .96
3.2.3 TIFF.97 3.2.4 3.2.5 librsvg.104
3.3 文字顯示及渲染 105 Glib 107
3.3.1 3.3.2 FreeType .111 HarfBuzz .116
3.3.3 FriBidi.117 3.3.4 3.3.5 Fontconfig118
3.3.6 Pango119
3.4 圖形工具庫 GTK120 GDK-PixBuf122
3.4.1 ATK122 3.4.2 Cairo.123 3.4.3 mesa .126 3.4.5 GTK及其應用程序 128
3.5 XFCE4桌面環境 131
3.5.1 窗口管理器 xfwm4 .132
3.5.2 會話管理器 xfce4-session.133
3.5.3 桌面設置管理器 xfce4-settings.133
3.5.4 桌面管理器 xfdesktop.134
3.5.5 文件管理器 Thunar 135
3.5.6 終端仿真器 136
3.6 X服務 .136
3.6.1 編譯 xorg-server.138
3.6.2 X繫統其他支持 .139
3.6.3 啟動 XFCE4 139
3.7本章小結 141
3.4.4 第4章 Linux應用軟件 142
4.1遠程桌面 142
4.1.1 移植 VNC142
4.1.2 中文化.144
4.2媒體播放器.147
4.2.1 音、視頻編碼與解碼.147
4.2.2 音頻子繫統 149
4.2.3 播放器 mpv .154
4.3文檔閱讀工具 .155
4.3.1 Poppler .155 libsecret.156
4.3.2 libXML2157 4.3.3 4.3.4 gspell 158
4.4網絡視頻監控 .158
4.5本章小結 161
第5章板載開發環境 162
5.1編譯器 .162
5.2版本控制繫統 GIT165
5.3 Python簡介.166
5.3.1 Python發展史 .166
5.3.2 Python編程理念167
5.3.3 Python的應用 .167
5.4 Python的移植 .167
5.4.1數據庫軟件 SQLite.169
5.4.2 Tcl/Tk 170
5.4.3編譯 Python 171
5.4.4安裝 pip 172
5.5 Python基本使用 173
5.5.1 Python編程工具173
5.5.2運行 Python程序 174
5.5.3交互方式 .175
5.6本章小結 176
第6章樹莓派接口控制. 177
6.1 樹莓派設備擴展 177 GPIO177
6.1.1 PWM179 6.1.2 6.1.3擴展接口資源配置 180
6.2樹莓派 GPIO模塊181
6.2.1安裝模塊.181
6.2.2使用 GPIO模塊 182
6.3 GPIO控制輸出設備 .184
6.4 GPIO輸入功能 185
6.4.1基本輸入功能.185
6.4.2 GPIO高級輸入功能 .186
6.5 PWM模塊.188
6.6傳感器和控制器 190
6.6.1蜂鳴器.190
6.6.2傳感器.191
6.6.3紅外遙控器 191
6.6.4直流電動機 196
6.6.5伺服電動機 197
6.6.6步進電動機 198
6.6.7超聲波測距 203
6.6.8控制 SPI設備 204
6.6.9 I2C應用207
6.7本章小結212
參考文獻 . 214
擴展資源 . 216
索引 217 前言 樹莓派是在電子愛好者中廣受歡迎的一款單板式計算機。自其問世以來 ,全世界眾多的開發者和愛好者在這個繫統上開發了大量有趣的應用。大多數應用都是基於 Linux操作繫統 ,樹莓派官方網站也提供了幾種典型的操作繫統映像。用戶隻要下載後 ,復制到存儲卡上,操作繫統就能運行起來。 多數人隻是在使用這個成熟的操作繫統。本書則是介紹如何從零開始 ,從源代碼構造一個可用的 Linux操作繫統,並在這個繫統上實現一些簡單的應用。通過學習這一過程 ,計算機愛好者可以根據自己的需要移植相關的軟件 ,並自如地調度繫統的軟、硬件資源 ,甚至打造自己的 Linux發行版。 Linux是遵循自由版權協議的操作繫統,本書移植的絕大部分軟件都是自由軟件。可以免費獲得 ,其中多數還允許用戶對其修改和再發布 ,但用戶仍然需要遵守它們的版權協議。本書移植的軟件所涉及的版權協議主要有以下幾種。 . GNU通用公共版權協議 (General Public License, GPL),出自自由軟件基金會。這是 Linux軟件使用多的一種版權協議 , Linux內核、 GCC、BusyBox等屬此類 ;該版權協議要求由 GPL衍生的軟件也必須遵守 GPL規範。樹莓派是在電子愛好者中廣受歡迎的一款單板式計算機。自其問世以來 ,全世界眾多的開發者和愛好者在這個繫統上開發了大量有趣的應用。大多數應用都是基於 Linux操作繫統 ,樹莓派官方網站也提供了幾種典型的操作繫統映像。用戶隻要下載後 ,復制到存儲卡上,操作繫統就能運行起來。 多數人隻是在使用這個成熟的操作繫統。本書則是介紹如何從零開始 ,從源代碼構造一個可用的 Linux操作繫統,並在這個繫統上實現一些簡單的應用。通過學習這一過程 ,計算機愛好者可以根據自己的需要移植相關的軟件 ,並自如地調度繫統的軟、硬件資源 ,甚至打造自己的 Linux發行版。 Linux是遵循自由版權協議的操作繫統,本書移植的絕大部分軟件都是自由軟件。可以免費獲得 ,其中多數還允許用戶對其修改和再發布 ,但用戶仍然需要遵守它們的版權協議。本書移植的軟件所涉及的版權協議主要有以下幾種。 . GNU通用公共版權協議 (General Public License, GPL),出自自由軟件基金會。這是 Linux軟件使用多的一種版權協議 , Linux內核、 GCC、BusyBox等屬此類 ;該版權協議要求由 GPL衍生的軟件也必須遵守 GPL規範。
. GNU寬松通用公共版權協議 (Lesser General Public License, LGPL),同樣出自自由軟件基金會。以這種版權協議發布的軟件允許其他版權協議 (即使是私有版權 )的軟件使用 ,而不會影響其他版權協議。通常它們以共享庫的方式被調用 ,以明確版權協議之間的界線。但 LGPL軟件本身修改後的再發布仍需要遵守 LGPL規範。GTK、FFMpeg等軟件以 LGPL發布。
. BSD及類 BSD版權協議 ,源自加州大學伯克利分校。該版權協議要求被授權者保留原著作權聲明,但並不要求其衍生產品必須開源,例如 Tcl/Tk。
. MIT及類 MIT版權協議,源自麻省理工學院,又稱作 “X版權協議”或 “X11版權協議 ”, X11繫統的軟件均以此協議發布。它要求被授權者保留著作權和版權聲明 ,對軟件的使用和再發布相對寬松。它也是自由軟件基金會所認可的自由軟件許可協議條款,與 GPL兼容。
. Python軟件基金會版權協議 (Python Software Foundation License, PSFL),出自 Python軟件基金會 ,要求被授權者在使用 Python及衍生產品時須保持原有的版權協議,它與 GPL兼容,但並不要求再發布的軟件也開源。
. 其他開源軟件版權協議,例如 zlib-libpng版權協議等。這些開源版權協議的共同特點是允許免費獲得、修改、移植 ,而且不限制商業使用。但在使用和再發布時必須保持原版權聲明,明確原作者的貢獻。
相比軟件開發 ,移植軟件的技術含量並沒有那麼高 ,大量工作都是重復性的機械勞動。因此也有不少軟件工程師將編譯整個操作繫統的工作寫成一組腳本程序 ,一個典型的案例就是 Buildroot。開發人員通過圖形配置界面 ,選擇自己需要的功能 ,輸入幾條命令 ,剩下的就是等待。軟件下載、編譯、安裝完全自動化實現。這個過程中 ,開發人員不需要了解軟件的依賴關繫,也不需要關心編譯過程,甚至都不需要自己手工安裝編譯器。單純從構建繫統的目標來看,這種方法不失為一種方便的選擇,但對理解操作繫統的構成幫助不大。 本書基於樹莓派平臺 ,介紹從內核到桌面應用的整套繫統的移植過程。在討論軟件移植方法的同時 ,還介紹這些軟件的作用及它們之間的關繫。作為一個完整的操作繫統 ,這些軟件遠遠不夠 ,但已經足夠勝任樹莓派的大部分應用場合。掌握這些軟件的移植方法 ,再移植其他軟件也隻是時間問題。 本書面向具有一定 Linux繫統使用基礎的樹莓派愛好者。計算機技術的發展日新月異 ,軟件的更新換代更是頻繁。本書在移植過程中使用的軟件 ,隨著時間的推移會漸漸顯得過時。然而 ,得益於人工智能、邊緣計算、嵌入式應用的發展 , Linux操作繫統正處於發展上升期,開源軟件社區不斷壯大。在可見的將來 ,軟件移植的方法會越來越規範、越來越簡單。如果有意願自己定制 Linux操作繫統,本書可提供一定的參考。 限於筆者的知識水平和認知能力 ,書中難免存在疏漏之處 ,懇請同行專家及讀者批評指正。 編者 2022年春於南京 ![](http://img3m2.ddimg.cn/60/9/29409792-2_u_6.jpg) ![](http://img3m2.ddimg.cn/60/9/29409792-3_u_6.jpg) ![](http://img3m2.ddimg.cn/60/9/29409792-4_u_6.jpg) ![](http://img3m2.ddimg.cn/60/9/29409792-5_u_6.jpg) ![](http://img3m2.ddimg.cn/60/9/29409792-6_u_6.jpg) ![](http://img3m2.ddimg.cn/60/9/29409792-7_u_6.jpg) ![](http://img3m2.ddimg.cn/60/9/29409792-8_u_6.jpg) | | |