1. 程式人生 > >linux學習書籍推薦《鳥哥的Linux私房菜》下載

linux學習書籍推薦《鳥哥的Linux私房菜》下載

下載地址:點我

《鳥哥的Linux私房菜:基礎學習篇》是具有知名度的Linux入門書《鳥哥的Linux私房菜基礎學習篇》的最新版,全面而詳細地介紹了Linux作業系統。《鳥哥的Linux私房菜:基礎學習篇》分為5個部分:一部分著重說明Linux的起源及功能,如何規劃和安裝Linux主機;二部分介紹Linux的檔案系統、檔案、目錄與磁碟的管理;三部分介紹文字模式介面shell和管理系統的好幫手shell指令碼,另外還介紹了文字編輯器vi和vim的使用方法;四部分介紹了對於系統安全非常重要的Linux賬號的管理,以及主機系統與程式的管理,如檢視程序、任務分配和作業管理;五部分介紹了系統管理員(root)的管理事項,如瞭解系統執行狀況、系統服務,針對登入檔案進行解析,對系統進行備份以及核心的管理等。

編輯推薦

鳥哥傾囊相授,內容由淺入深
書中包含了鳥哥從完全不懂Linux 到現在的所有學習歷程,鳥哥將這幾年來的所知所學傾囊相授,以淺顯易懂的文字帶領您進入Linux 的世界。
按部就班,打好基礎學習的第 一步
本書分為五大部分,每部分都各具特色。內容涵蓋了Linux 的規劃與安裝,認識Linux 檔案、目錄與磁碟格式,學習Shell 與Shell Scripts,Linux 使用者管理與Linux 系統管理等。依序學習,讓您奠定Linux 的基礎,跨出成功的第 一步。
全新改版,提供您更新的技術
《鳥哥的Linux私房菜 基礎學習篇 第四版 》提供近期更新的技術,包括核心版本的升級建議,虛擬系統的操作,GPT 分割表格式處理,XFS 檔案系統的實際操作使用,
systemd 服務的管理,日誌格式的更新,grub2 開機管理程式的說明,nmcli 文字指令操作網路引數的方式等,內容更加精彩!

作者簡介

鳥哥

目錄

第一部分 Linux的規則與安裝

第0章 計算機概論 2
0.1 電腦:輔助人腦的好工具 3
0.1.1 電腦硬體的五大單元 3
0.1.2 一切設計的起點:CPU的架構 5
0.1.3 其他單元的裝置 6
0.1.4 運作流程 6
0.1.5 電腦的分類 7
0.1.6 電腦上面常用的計算單位(容量、速度等) 8
0.2 個人電腦架構與相關裝置元件 9
0.2.1 執行腦袋運算與判斷的CPU 10
0.2.2 記憶體 12
0.2.3 顯示卡 15
0.2.4 硬碟與儲存裝置 16
0.2.5 擴充套件卡與介面 20
0.2.6 主機板 21
0.2.7 主機電源 22
0.2.8 選購須知 22
0.3 資料表示方式 23
0.3.1 數字系統 24
0.3.2 字元編碼系統 24
0.4 軟體程式執行 25
0.4.1 機器語言程式與編譯型程式 25
0.4.2 作業系統 26
0.4.3 應用程式 28
0.5 重點回顧 29
0.6 本章習題 29
0.7 參考資料與擴充套件閱讀 30
第1章 Linux是什麼與如何學習 32
1.1 Linux是什麼 33
1.1.1 Linux是什麼?作業系統還是應用程式? 33
1.1.2 Linux之前,Unix的歷史 34
1.1.3 關於GNU計劃、自由軟體與開放原始碼 40
1.2 託瓦茲的Linux的發展 43
1.2.1 與Minix之間 43
1.2.2 對386硬體的多工測試 44
1.2.3 初次釋出Linux 0.02 45
1.2.4 Linux的發展:虛擬團隊的產生 46
1.2.5 Linux的核心版本 47
1.2.6 Linux發行版 48
1.3 Linux當前應用的角色 51
1.3.1 企業環境的使用 52
1.3.2 個人環境的使用 53
1.3.3 雲端應用 54
1.4 Linux該如何學習 55
1.4.1 從頭學習Linux基礎 56
1.4.2 選擇一本易讀的工具書 57
1.4.3 實踐再實踐 58
1.4.4 發生問題怎麼處理 58
1.4.5 鳥哥的建議(重點在solution的學習) 59
1.5 重點回顧 60
1.6 本章習題 61
1.7 參考資料與擴充套件閱讀 62
第2章 主機規劃與磁碟分割槽 63
2.1 Linux與硬體的搭配 64
2.1.1 認識計算機的硬體裝置 64
2.1.2 選擇與Linux搭配的主機裝置 65
2.1.3 各硬體裝置在Linux中的檔名 67
2.1.4 使用虛擬機器學習 68
2.2 磁碟分割槽 69
2.2.1 磁碟連線方式與裝置檔名的關係 69
2.2.2 MBR(MS-DOS)與GPT磁碟分割槽表(partition table) 70
2.2.3 啟動流程中的BIOS與UEFI啟動檢測程式 76
2.2.4 Linux安裝模式下,磁碟分割槽的選擇(極重要) 79
2.3 安裝Linux前的規劃 82
2.3.1 選擇適當的Linux發行版 82
2.3.2 主機的服務規劃與硬體的關係 83
2.3.3 主機硬碟的主要規劃 84
2.3.4 鳥哥的兩個實際案例 85
2.4 重點回顧 86
2.5 本章習題 87
2.6 參考資料與擴充套件閱讀 87
第3章 安裝CentOS 7.x 88
3.1 本練習機的規劃(尤其是分割槽引數) 89
3.2 開始安裝 CentOS 7 91
3.2.1 調整BIOS與虛擬機器建立流程 91
3.2.2 選擇安裝模式與啟動(inst.gpt) 94
3.2.3 在地設定之時區、語言與鍵盤佈局 96
3.2.4 安裝源設定與軟體選擇 97
3.2.5 磁碟分割槽與檔案系統設定 99
3.2.6 核心管理與網路設定 104
3.2.7 開始安裝、設定root密碼與新增可切換身份之一般使用者 106
3.2.8 準備使用系統前的授權同意 108
3.2.9 其他功能:RAM測試,安裝膝上型電腦的核心引數(可選) 110
3.3 多重引導安裝步驟與管理(可選) 111
3.3.1 安裝 CentOS 7.x + Windows 7的規劃 111
3.3.2 高階安裝 CentOS 7.x與Windows 7 112
3.3.3 恢復MBR內的啟動載入程式與設定多重引導選項 113
3.4 重點回顧 114
3.5 本章習題 115
3.6 參考資料與擴充套件閱讀 115
第4章 首次登入與線上求助 116
4.1 首次登入系統 117
4.1.1 首次登入CentOS 7.x圖形使用者介面模式 117
4.1.2 GNOME的操作與登出 118
4.1.3 X Window與命令列模式的切換 124
4.1.4 在終端登入Linux 125
4.2 命令列模式下命令的執行 127
4.2.1 開始執行命令 127
4.2.2 基礎命令的操作 128
4.2.3 重要的幾個熱鍵[Tab]、[Ctrl]-c、[Ctrl]-d 131
4.2.4 錯誤資訊的檢視 133
4.3 Linux系統的線上求助man page與info page 133
4.3.1 命令的 --help求助說明 134
4.3.2 man page 135
4.3.3 info page 139
4.3.4 其他有用的檔案(documents) 141
4.4 超簡單的文字編輯器:nano 142
4.5 正確的關機方法 143
4.6 重點回顧 146
4.7 本章習題 146
4.8 參考資料與擴充套件閱讀 147

第二部分 Linux檔案、目錄與磁碟格式

第5章 Linux的檔案許可權與目錄配置 149
5.1 使用者與使用者組 150
5.2 Linux檔案許可權概念 152
5.2.1 Linux檔案屬性 152
5.2.2 如何修改檔案屬性與許可權 156
5.2.3 目錄與檔案的許可權意義 159
5.2.4 Linux檔案種類與副檔名 162
5.3 Linux目錄配置 165
5.3.1 Linux目錄配置的依據-- FHS 165
5.3.2 目錄樹(directory tree) 169
5.3.3 絕對路徑與相對路徑 170
5.3.4 CentOS的觀察 172
5.4 重點回顧 173
5.5 本章練習 174
5.6 參考資料與擴充套件閱讀 174
第6章 Linux檔案與目錄管理 175
6.1 目錄與路徑 176
6.1.1 相對路徑與絕對路徑 176
6.1.2 目錄的相關操作 176
6.1.3 關於執行檔案路徑的變數:$PATH 179
6.2 檔案與目錄管理 181
6.2.1 檔案與目錄的檢視:ls 181
6.2.2 複製、刪除與移動:cp、rm、mv 183
6.2.3 獲取路徑的檔名與目錄名稱 186
6.3 檔案內容檢視 186
6.3.1 直接檢視檔案內容 187
6.3.2 可翻頁檢視 188
6.3.3 資料擷取 190
6.3.4 非純文字檔案:od 191
6.3.5 修改檔案時間或建立新檔案:touch 192
6.4 檔案與目錄的預設許可權與隱藏許可權 194
6.4.1 檔案預設許可權:umask 195
6.4.2 檔案隱藏屬性 196
6.4.3 檔案特殊許可權:SUID、SGID、SBIT 198
6.4.4 觀察檔案型別:file 200
6.5 命令與檔案的查詢 201
6.5.1 指令碼檔案的查詢 201
6.5.2 檔案的查詢 201
6.6 極重要的複習,許可權與命令間的關係 205
6.7 重點回顧 206
6.8 本章習題 207
6.9 參考資料與擴充套件閱讀 208
第7章 Linux磁碟與檔案系統管理 209
7.1 認識Linux檔案系統 210
7.1.1 磁碟組成與分割槽的複習 210
7.1.2 檔案系統特性 211
7.1.3 Linux的ext2檔案系統(inode) 212
7.1.4 與目錄樹的關係 217
7.1.5 ext2/ext3/ext4檔案的存取與日誌式檔案系統的功能 219
7.1.6 Linux檔案系統的執行 220
7.1.7 掛載點的意義(mount point) 221
7.1.8 其他Linux支援的檔案系統與VFS 221
7.1.9 XFS檔案系統簡介 222
7.2 檔案系統的簡單操作 224
7.2.1 磁碟與目錄的容量 224
7.2.2 硬連結與符號連結:ln 227
7.3 磁碟的分割槽、格式化、檢驗與掛載 231
7.3.1 觀察磁碟分割槽狀態 232
7.3.2 磁碟分割槽:gdisk/fdisk 233
7.3.3 磁碟格式化(建立檔案系統) 238
7.3.4 檔案系統檢驗 241
7.3.5 檔案系統掛載與解除安裝 243
7.3.6 磁碟/檔案系統引數自定義 246
7.4 設定啟動掛載 248
7.4.1 啟動掛載/etc/fstab及/etc/mtab 248
7.4.2 特殊裝置loop掛載(映象檔案不燒錄就掛載使用) 251
7.5 記憶體交換分割槽(swap)之建立 252
7.5.1 使用物理分割槽建立記憶體交換分割槽 253
7.5.2 使用檔案建立記憶體交換檔案 254
7.6 檔案系統的特殊觀察與操作 255
7.6.1 磁碟空間之浪費問題 255
7.6.2 利用GNU的parted 進行分割槽操作(可選) 256
7.7 重點回顧 257
7.8 本章習題 258
7.9 參考資料與擴充套件閱讀 259
第8章 檔案與檔案系統的壓縮 261
8.1 壓縮檔案的用途與技術 262
8.2 Linux系統常見的壓縮命令 263
8.2.1 gzip,zcat/zmore/zless/zgrep 263
8.2.2 bzip2,bzcat/bzmore/bzless/bzgrep 265
8.2.3 xz,xzcat/xzmore/xzless/xzgrep 265
8.3 打包命令:tar 266
8.4 XFS檔案系統的備份與還原 272
8.4.1 XFS檔案系統備份xfsdump 272
8.4.2 XFS檔案系統還原xfsrestore 275
8.5 光碟寫入工具 277
8.5.1 mkisofs:建立映象檔案 277
8.5.2 cdrecord:光碟燒錄工具 280
8.6 其他常見的壓縮與備份工具 282
8.6.1 dd 282
8.6.2 cpio 284
8.7 重點回顧 285
8.8 本章習題 286
8.9 參考資料與擴充套件閱讀 287

第三部分 學習shell與shell script

第9章 vim程式編輯器 289
9.1 vi與vim 290
9.2 vi的使用 291
9.2.1 簡易執行範例 292
9.2.2 按鍵說明 293
9.2.3 一個案例練習 296
9.2.4 vim的快取、恢復與開啟時的警告資訊 297
9.3 vim的額外功能 299
9.3.1 可視區塊(Visual Block) 300
9.3.2 多檔案編輯 301
9.3.3 多視窗功能 302
9.3.4 vim的關鍵詞補全功能 303
9.3.5 vim環境設定與記錄:~/.vimrc、~/.viminfo 304
9.3.6 vim常用命令示意圖 305
9.4 其他vim使用注意事項 305
9.4.1 中文編碼的問題 306
9.4.2 DOS與Linux的換行符 306
9.4.3 語系編碼轉換 307
9.5 重點回顧 308
9.6 本章練習 308
9.7 參考資料與擴充套件閱讀 309
第10章 認識與學習BASH 310
10.1 認識BASH這個Shell 311
10.1.1 硬體、核心與Shell 311
10.1.2 為何要學命令列模式的 Shell? 312
10.1.3 系統的合法shell與 /etc/shells功能 313
10.1.4 Bash shell的功能 314
10.1.5 查詢命令是否為Bash shell 的內建命令:type 315
10.1.6 命令的執行與快速編輯按鈕 316
10.2 Shell的變數功能 316
10.2.1 什麼是變數? 317
10.2.2 變數的使用與設定:echo、變數設定規則、unset 318
10.2.3 環境變數的功能 322
10.2.4 影響顯示結果的語系變數(locale) 325
10.2.5 變數的有效範圍 327
10.2.6 變數鍵盤讀取、陣列與宣告: read、array、declare 327
10.2.7 與檔案系統及程式的限制關係:ulimit 329
10.2.8 變數內容的刪除、取代與替換(可選) 330
10.3 命令別名與歷史命令 334
10.3.1 命令別名設定:alias、unalias 334
10.3.2 歷史命令:history 335
10.4 Bash shell的操作環境 337
10.4.1 路徑與命令查詢順序 337
10.4.2 bash的登入與歡迎資訊: /etc/issue、/etc/motd 337
10.4.3 bash的環境配置檔案 338
10.4.4 終端的環境設定:stty、 set 342
10.4.5 萬用字元與特殊符號 344
10.5 資料流重定向 345
10.5.1 什麼是資料流重定向 345
10.5.2 命令執行的判斷根據:;、&&、|| 348
10.6 管道命令(pipe) 350
10.6.1 選取命令:cut、grep 351
10.6.2 排序命令:sort、wc、uniq 353
10.6.3 雙向重定向:tee 354
10.6.4 字元轉換命令:tr、col、join、paste、expand 355
10.6.5 劃分命令:split 357
10.6.6 引數代換:xargs 358
10.6.7 關於減號【-】的用途 359
10.7 重點回顧 359
10.8 本章習題 360
10.9 參考資料與擴充套件閱讀 361
第11章 正則表示式與檔案格式化處理 362
11.1 開始之前:什麼是正則表示式 363
11.2 基礎正則表示式 364
11.2.1 語系對正則表示式的影響 365
11.2.2 grep 的一些高階選項 365
11.2.3 基礎正則表示式練習 366
11.2.4 基礎正則表示式字元集合(characters) 371
11.2.5 sed工具 373
11.3 擴充套件正則表示式 376
11.4 檔案的格式化與相關處理 377
11.4.1 格式化列印:printf 377
11.4.2 awk:好用的資料處理工具 379
11.4.3 檔案比對工具 381
11.4.4 檔案列印設定:pr 384
11.5 重點回顧 384
11.6 本章習題 385
11.7 參考資料與擴充套件閱讀 386
第12章 學習shell指令碼 387
12.1 什麼是shell指令碼 388
12.1.1 為什麼要學習shell指令碼 388
12.1.2 第一個指令碼的編寫與執行 389
12.1.3 建立shell指令碼的良好編寫習慣 391
12.2 簡單的shell指令碼練習 392
12.2.1 簡單範例 392
12.2.2 指令碼的執行方式差異(source、sh script、./script) 394
12.3 善用判斷式 395
12.3.1 利用test命令的測試功能 395
12.3.2 利用判斷符號[ ] 397
12.3.3 shell指令碼的預設變數($0、$1...) 399
12.4 條件判斷式 400
12.4.1 利用if…then 401
12.4.2 利用case…esac判斷 405
12.4.3 利用function功能 406
12.5 迴圈(loop) 408
12.5.1 while do done、until do done不定迴圈) 408
12.5.2 for...do...done(固定迴圈) 409
12.5.3 for...do...done的數值處理 411
12.5.4 搭配隨機數與陣列的實驗 412
12.6 shell指令碼的跟蹤與除錯 413
12.7 重點回顧 414
12.8 本章習題 415

第四部分 Linux使用者管理

第13章 Linux賬號管理與ACL許可權設定 417
13.1 Linux的賬號與使用者組 418
13.1.1 使用者識別符號:UID與GID 418
13.1.2 使用者賬號 419
13.1.3 關於使用者組:有效與初始使用者組, groups, newgr 423
13.2 賬號管理 426
13.2.1 新增與刪除使用者:useradd、相關配置檔案、passwd、usermod、
userdel 426
13.2.2 使用者功能 434
13.2.3 新增與刪除使用者組 437
13.2.4 賬號管理例項 438
13.2.5 使用外部身份認證系統 439
13.3 主機的詳細許可權規劃:ACL的使用 440
13.3.1 什麼是ACL與如何支援啟動ACL 440
13.3.2 ACL的設定技巧:getfacl、setfacl 441
13.4 使用者身份切換 444
13.4.1 su 445
13.4.2 sudo 446
13.5 使用者的特殊shell與PAM模組 450
13.5.1 特殊的shell,/sbin/nologin 451
13.5.2 PAM模組簡介 451
13.5.3 PAM模組設定語法 452
13.5.4 常用模組簡介 454
13.5.5 其他相關檔案 456
13.6 Linux主機上的使用者資訊傳遞 457
13.6.1 查詢使用者:w、who、last、lastlog 457
13.6.2 使用者對談:write、mesg、wall 458
13.6.3 使用者郵箱:mail 459
13.7 CentOS 7環境下大量建立賬號的方法 460
13.7.1 一些賬號相關的檢查工具 460
13.7.2 大量建立賬號模板(適用passwd --stdin 選項) 461
13.8 重點回顧 462
13.9 本章習題 463
13.10 參考資料與擴充套件閱讀 464
第14章 磁碟配額(Quota)與高階檔案系統管理 465
14.1 磁碟配額(Quota)的應用與實踐 466
14.1.1 什麼是磁碟配額 466
14.1.2 一個xfs檔案系統的磁碟配額實踐範例 468
14.1.3 實踐磁碟配額流程-1:檔案系統的支援與檢視 469
14.1.4 實踐磁碟配額流程-2:檢視磁碟配額報告資料 469
14.1.5 實踐磁碟配額流程-3:限制值設定方式 470
14.1.6 實踐磁碟配額流程-4:project的限制(針對目錄限制)
(Optional) 471
14.1.7 xfs磁碟配額的管理與額外命令對照表 473
14.1.8 不修改既有系統的磁碟配額例項 475
14.2 軟體磁碟陣列(Software RAID) 475
14.2.1 什麼是RAID 475
14.2.2 硬體RAID,軟體RAID 479
14.2.3 軟體磁碟陣列的設定 479
14.2.4 模擬RAID錯誤的恢復模式 482
14.2.5 開機自動啟動RAID並自動掛載 483
14.2.6 關閉軟體RAID(重要) 484
14.3 邏輯卷管理器(Logical Volume Manager) 484
14.3.1 什麼是LVM:PV、PE、VG、LV的意義 485
14.3.2 LVM實踐流程 486
14.3.3 放大LV容量 490
14.3.4 使用LVM thin Volume讓LVM動態自動調整磁碟使用率 492
14.3.5 LVM的LV磁碟快照 493
14.3.6 LVM相關命令集合與LVM的關閉 496
14.4 重點回顧 497
14.5 本章習題 498
14.6 參考資料與擴充套件閱讀 499
第15章 計劃任務(crontab) 500
15.1 什麼是計劃任務 501
15.1.1 Linux計劃任務的種類:at、cron 501
15.1.2 CentOS Linux系統上常見的例行性工作 501
15.2 僅執行一次的計劃任務 502
15.2.1 atd的啟動與at執行的方式 502
15.2.2 實際執行單一計劃任務 503
15.3 迴圈執行的計劃任務 506
15.3.1 使用者的設定 506
15.3.2 系統的配置檔案:/etc/crontab、 /etc/cron.d/* 508
15.3.3 一些注意事項 510
15.4 可喚醒停機期間的工作任務 511
15.4.1 什麼是anacron 512
15.4.2 anacron與/etc/anacrontab 512
15.5 重點回顧 514
15.6 本章習題 514
第16章 程序管理與SELinux初探 515
16.1 什麼是程序(process) 516
16.1.1 程序與程式
(process & program) 516
16.1.2 Linux的多人多工環境 518
16.2 任務管理(job control) 520
16.2.1 什麼是任務管理? 520
16.2.2 job control的管理 520
16.2.3 離線管理問題 523
16.3 程序管理 524
16.3.1 檢視程序 524
16.3.2 程序的管理 530
16.3.3 關於程序的執行順序 531
16.3.4 檢視系統資源資訊 533
16.4 特殊檔案與程序 538
16.4.1 具有SUID/SGID許可權的命令執行狀態 538
16.4.2 /proc/* 代表的意義 539
16.4.3 查詢已使用檔案或已執行程序使用的檔案 540
16.5 SELinux初探 543
16.5.1 什麼是SELinux 543
16.5.2 SELinux的執行模式 544
16.5.3 SELinux三種模式的啟動、關閉與檢視 548
16.5.4 SELinux策略內的規則管理 550
16.5.5 SELinux安全上下文的修改 552
16.5.6 一個網路服務案例及日誌檔案協助 554
16.6 重點回顧 560
16.7 本章習題 561
16.8 參考資料與擴充套件閱讀 561

第五部分 Linux系統管理員

第17章 認識系統服務(daemon) 563
17.1 什麼是daemon與服務(service) 564
17.1.1 早期System V的init管理操作中daemon的主要分類
(Optional) 564
17.1.2 systemd使用的unit分類 566
17.2 通過systemctl管理服務 568
17.2.1 通過systemctl管理單一服務(service unit)的啟動/開機
啟動與檢視狀態 568
17.2.2 通過systemctl檢視系統上所有的服務 571
17.2.3 通過systemctl管理不同的操作環境(target unit) 572
17.2.4 通過systemctl分析各服務之間的依賴性 574
17.2.5 與systemd的daemon執行過程相關的目錄簡介 575
17.2.6 關閉網路服務 577
17.3 systemctl針對service型別的配置檔案 578
17.3.1 systemctl配置檔案相關目錄簡介 578
17.3.2 systemctl配置檔案的設定專案簡介 578
17.3.3 兩個vsftpd執行的例項 581
17.3.4 多重的重複設定方式:以getty為例 582
17.3.5 自己的服務自己作 585
17.4 systemctl針對timer的配置檔案 585
17.5 CentOS 7.x預設啟動的服務概要 588
17.6 重點回顧 591
17.7 本章習題 591
17.8 參考資料與擴充套件閱讀 593
第18章 認識與分析日誌檔案 594
18.1 什麼是日誌檔案 595
18.1.1 CentOS 7日誌檔案簡易說明 595
18.1.2 日誌檔案內容的一般格式 597
18.2 rsyslog.service:記錄日誌檔案的服務 598
18.2.1 rsyslog.service的配置檔案:
/etc/rsyslog.conf 598
18.2.2 日誌檔案的安全性設定 603
18.2.3 日誌檔案伺服器的設定 604
18.3 日誌檔案的輪循(logrotate) 605
18.3.1 logrotate的配置檔案 605
18.3.2 實際測試logrotate的操作 608
18.3.3 自定義日誌檔案的輪循功能 609
18.4 systemd-journald.service簡介 610
18.4.1 使用journalctl檢視登入資訊 611
18.4.2 logger命令的應用 612
18.4.3 儲存journal的方式 612
18.5 分析日誌檔案 613
18.5.1 CentOS預設提供的logwatch 613
18.5.2 鳥哥自己寫的日誌檔案分析工具 615
18.6 重點回顧 616
18.7 本章習題 617
18.8 參考資料與擴充套件閱讀 617
第19章 啟動流程、模組管理與Loader 618
19.1 Linux的啟動流程分析 619
19.1.1 啟動流程一覽 619
19.1.2 BIOS、boot loader與kernel載入 619
19.1.3 第一個程式systemd及使用default.target進入啟動程式分析 625
19.1.4 systemd執行sysinit.target初始化系統、basic.target準備系統 627
19.1.5 systemd啟動multi-user.target下的服務 628
19.1.6 systemd啟動graphical.target下面的服務 629
19.1.7 啟動過程會用到的主要配置檔案 629
19.2 核心與核心模組 630
19.2.1 核心模組與依賴性 631
19.2.2 檢視核心模組 632
19.2.3 核心模組的載入與刪除 632
19.2.4 核心模組的額外引數設定:/etc/modprobe.d/*conf 633
19.3 Boot Loader:Grub2 634
19.3.1 boot loader的兩個stage 634
19.3.2 grub2的配置檔案/boot/grub2/grub.cfg初探 635
19.3.3 grub2配置檔案維護/etc/default/grub與
/etc/grub.d 638
19.3.4 initramfs的重要性與建立新initramfs檔案 642
19.3.5 測試與安裝grub2 643
19.3.6 啟動前的額外功能修改 645
19.3.7 關於啟動畫面與終端畫面的圖形顯示方式 647
19.3.8 為個別選項設定密碼 647
19.4 啟動過程的問題解決 650
19.4.1 忘記root密碼的解決之道 650
19.4.2 直接啟動就以root執行bash的方法 652
19.4.3 因檔案系統錯誤而無法啟動 652
19.5 重點回顧 653
19.6 本章習題 653
19.7 參考資料與擴充套件閱讀 654
第20章 基礎系統設定與備份策略 655
20.1 系統基本設定 656
20.1.1 網路設定(手動設定與DHCP自動獲取) 656
20.1.2 日期與時間設定 659
20.1.3 語系設定 660
20.1.4 防火牆簡易設定 661
20.2 伺服器硬體資料的收集 663
20.2.1 使用dmidecode檢視硬體裝置 663
20.2.2 硬體資源的收集與分析 664
20.2.3 瞭解磁碟的健康狀態 667
20.3 備份要點 668
20.3.1 備份資料的考慮 668
20.3.2 哪些Linux資料具有備份的意義 669
20.3.3 備份用儲存媒介的選擇 670
20.4 備份的種類、頻率與工具的選擇 671
20.4.1 完整備份之累積備份(Incremental backup) 672
20.4.2 完整備份之差異備份(Differential backup) 673
20.4.3 關鍵資料備份 674
20.5 鳥哥的備份策略 675
20.5.1 每週系統備份的指令碼 675
20.5.2 每日備份資料的指令碼 676
20.5.3 遠端備份的指令碼 677
20.6 災難恢復的考慮 678
20.7 重點回顧 678
20.8 本章習題 679
20.9 參考資料與擴充套件閱讀 679
第21章 軟體安裝:原始碼與Tarball 680
21.1 開放原始碼的軟體安裝與升級簡介 681
21.1.1 什麼是開放原始碼、編譯器與可執行檔案 681
21.1.2 什麼是函式庫 683
21.1.3 什麼是make與configure 683
21.1.4 什麼是Tarball的軟體 684
21.1.5 如何安裝與升級軟體 685
21.2 使用傳統程式語言進行編譯的簡單範例 685
21.2.1 單一程式:列印Hello World 686
21.2.2 主、子程式連結:子程式的編譯 687
21.2.3 呼叫外部函式庫:加入連結的函式庫 688
21.2.4 gcc的簡易用法(編譯、引數與連線) 689
21.3 用make進行巨集編譯 689
21.3.1 為什麼要用make 689
21.3.2 makefile的基本語法與變數 690
21.4 Tarball的管理與建議 692
21.4.1 使用原始碼管理軟體所需要的基礎軟體 693
21.4.2 Tarball安裝的基本步驟 693
21.4.3 一般Tarball軟體安裝的建議
事項(如何刪除?升級?) 695
21.4.4 一個簡單的範例、利用ntp來示範 696
21.4.5 利用patch更新原始碼 697
21.5 函式庫管理 699
21.5.1 動態與靜態函式庫 700
21.5.2 ldconfig與/etc/ld.so.conf 701
21.5.3 程式的動態函式庫解析:ldd 701
21.6 校驗軟體正確性 702
21.7 重點回顧 703
21.8 本章習題 704
21.9 參考資料與擴充套件閱讀 705
第22章 軟體安裝RPM、SRPM與YUM 706
22.1 軟體管理器簡介 707
22.1.1 Linux界的兩大主流:RPM與DPKG 707
22.1.2 什麼是RPM與SRPM 708
22.1.3 什麼是i386、i586、i686、noarch、 x86_64 709
22.1.4 RPM的優點 710
22.1.5 RPM屬性依賴的解決方式:YUM線上升級 711
22.2 RPM軟體管理程式:rpm 712
22.2.1 RPM預設安裝的路徑 712
22.2.2 RPM安裝(install) 712
22.2.3 RPM升級與更新(upgrade/freshen) 714
22.2.4 RPM查詢(query) 714
22.2.5 RPM驗證與數字簽名(Verify/signature) 716
22.2.6 RPM反安裝與重建資料庫(erase/rebuilddb) 719
22.3 YUM線上升級功能 719
22.3.1 利用YUM進行查詢、安裝、升級與刪除功能 720
22.3.2 YUM的配置檔案 723
22.3.3 YUM的軟體群組功能 725
22.3.4 EPEL/ELRepo外掛軟體以及自定義配置檔案 726
22.3.5 全系統自動升級 728
22.3.6 管理的抉擇:RPM還是 Tarball 728
22.3.7 基礎服務管理:以Apache 為例 729
22.4 SRPM的使用:rpmbuild(Optional) 730
22.4.1 利用預設值安裝SRPM檔案(--rebuid/--recompile) 730
22.4.2 SRPM使用的路徑與需要的軟體 731
22.4.3 配置檔案的主要內容(*.spec) 732
22.4.4 SRPM的編譯命令(-ba/-bb) 735
22.4.5 一個打包自己軟體的範例 736
22.5 重點回顧 737
22.6 本章習題 738
22.7 參考資料與擴充套件閱讀 738
第23章 X Window設定介紹 739
23.1 什麼是X Window System 740
23.1.1 X Window System的發展簡史 740
23.1.2 主要元件:X Server/XClient/Window Manager/Display
Manager 741
23.1.3 X Window System的啟動流程 743
23.1.4 X啟動流程測試 746
23.1.5 我是否需要啟用X Window System 747
23.2 X Server配置檔案解析與設定 748
23.2.1 解析xorg.conf設定 748
23.2.2 字型管理 751
23.2.3 顯示器引數微調 753
23.3 顯示卡驅動程式安裝範例 754
23.3.1 NVIDIA 754
23.3.2 AMD(ATI) 756
23.3.3 Intel 756
23.4 重點回顧 757
23.5 本章習題 758
23.6 參考資料與擴充套件閱讀 758
第24章 Linux核心編譯與管理 759
24.1 編譯前的任務:認識核心與獲取核心原始碼 760
24.1.1 什麼是核心(Kernel) 760
24.1.2 更新核心的目的 761
24.1.3 核心的版本 762
24.1.4 核心原始碼的獲取方式 763
24.1.5 核心原始碼的解壓縮、安裝、檢視 764
24.2 核心編譯前的預處理與核心功能選擇 765
24.2.1 硬體環境檢視與核心功能要求 765
24.2.2 保持乾淨原始碼:make mrproper 765
24.2.3 開始選擇核心功能:make XXconfig 765
24.2.4 核心功能詳細選項選擇 767
24.3 核心的編譯與安裝 772
24.3.1 編譯核心與核心模組 772
24.3.2 實際安裝模組 773
24.3.3 開始安裝新核心與多重核心選項(grub) 773
24.4 額外(單一)核心模組編譯 774
24.4.1 編譯前注意事項 774
24.4.2 單一模組編譯 775
24.4.3 核心模組管理 777
24.5 以最新核心版本編譯CentOS 7.x的核心 777
24.6 重點回顧 778
24.7 本章習題 778
24.8 參考資料與擴充套件閱讀 778