# Linux 2020 讀書會 — 第一次 [toc] ## Subject 1 - 主機規劃與磁碟分割 ### 裝 Linux 需考慮的 - 支援度 - 效能比、能耗比 - 電腦用途 > 補充:CPU 跑分網站 [cpubenchmark](https://www.cpubenchmark.net/cpu_list.php) ### Linux 檔名 - Linux 中的裝置都會被當成檔案對待 ### 硬碟分割 #### 認識磁碟 ![](https://i.imgur.com/npOP35g.png) - Q.為什麼要分割磁區? - A. 1. 當某個槽區壞掉時,其他槽區不會跟著壞掉。 2. 讀取速度,相關的資料在彼此附近時,讀取速度會比較快 - Q.分割表壞掉,資料真的就不見了嗎? - A. 沒有不見,還是可以透過一些特殊方法讀到 - Linux 曾經採取的硬碟讀取方式 - MSDOS[(MBR)](https://zh.wikipedia.org/wiki/%E4%B8%BB%E5%BC%95%E5%AF%BC%E8%AE%B0%E5%BD%95) - 分割表 : 64 byte - 主要分割 + 延伸分割(最多 1 個) : 最多 4 筆 - 邏輯分割 : 一個延伸分割可以切好幾個邏輯分割 - 缺點 : - 無法抓 2.2T 以上容量 - 壞掉很難救 QAQ - GUID partition table (GPT) - 最小切割單位: 磁區 - 缺點 - BIOS 不一定支援 #### 開機流程 - BIOS:認識第一個可開基的裝置 - MBR - 開機管理程式(boot loader) - 一隻可讀取 OS 核心檔案來執行的功能 - 主要功能 - 提供選單 - 載入核心檔案 - 轉交給其他 loader - 把開機管理的功能轉交給其他loader - 每個分割槽都有自己的開機磁區 - loader 只會認識自己的系統槽內的可開機核心檔案,以及其他 loader - 核心檔案 #### UEFI BIOS 搭配GPT開機的流程 - 優點 - 在保護模式速度比傳統BIOS快 - 安全啟動 - 確保使用者使用 OEM(製造商) 認為安全的軟體來開機 (以驗證簽章的方法來確保) - 像是 Linux 沒有被 Windows 加入信賴簽章的列表 - 可以使用者自行加入簽章 (透過 TPM) - 直接取得 GPT 分割表 ![](https://i.imgur.com/iu47XK7.png) :::info - TPM - [Wiki](https://zh.wikipedia.org/wiki/%E5%8F%AF%E4%BF%A1%E5%B9%B3%E5%8F%B0%E6%A8%A1%E5%9D%97) - [Raspberry Pi](https://en.wikipedia.org/wiki/Raspberry_Pi) ::: ### 延伸閱讀 - [百百種 Boot loader](https://en.wikipedia.org/wiki/Comparison_of_boot_loaders) - 不熟悉開機流程使用可能會開不了機 xD ## Subject 2 - 首次使用與 Man page > [大綱](https://hackmd.io/7U65o_IYRo2SQ2YU9RiaNQ) ### 指令 $ command [-options] parameter1 parameter2 - -options 代表選填 (非必須) - Parameter 為參數 #### 查詢使用方式 1. 在 command 後面試著加入 `help`, `-help`, `--help` 之類的 (每個指令可能不同) 2. `help 指令` - 3. `info 指令` - 分段顯示、有類似超連結的功能存在 4. `man 指令` 可以查看手冊 #### 小工具 - `bc` : 計算機~~ - `sl` : 有火車~ - [20 Funny Commands of Linux or Linux is Fun in Terminal](https://www.tecmint.com/20-funny-commands-of-linux-or-linux-is-fun-in-terminal/) ### 延伸閱讀 - 不知道指令怎麼下? - [tldr](https://github.com/tldr-pages/tldr) - TL;DR -> Too Long; Don't Read 縮寫 (跟你講太長了不要看) / 所以舉例給你看 (X) - `curl cheat.sh/<COMMAND>` - 範例 `curl cheat.sh/netstat` - Linux 中的快捷鍵 - [摘要版](https://manukyan.dev/notes/2019-12-08-minimum-list-of-useful-bash-shortcuts/) - [詳細版](https://linuxhint.com/100_keyboard_shortcuts_linux/) - 推薦閱讀章節 - General Linux Shortcuts - Bash Keyboard Shortcuts ### 文字編輯 - nano - vim - neovim - Fancy Vim #### 延伸閱讀 - Bash 使用上有些方便的快捷鍵 [研究看看](https://manukyan.dev/notes/2019-12-08-minimum-list-of-useful-bash-shortcuts/) ![](https://i.imgur.com/TlEQCK7.png) ### 重開機關機 - shutdown - [Options] - `-h` 立刻 - `-h 20:25` 預約時間關機 - `+N ['訊息']` N 分鐘後重新開機 / 可發布訊息 ## Subject 3 - 檔案權限與目錄配置 ### 檔案權限 - 一個檔案所限制的權限 - Owner - Group - Others - 查看檔案屬性 - ls -l (列出目錄資訊) - ls -a (包含查看隱藏檔) (截自鳥哥) ![](https://i.imgur.com/eTfKVP2.png) - 檔案類型 - `d` 資料夾 - `-` 檔案 - `l` 連結檔 (類似 Windows 捷徑) - `b` 可供儲存的週邊裝置 - `c` 序列埠設備 (滑鼠...) - 改變檔案屬性與權限 - chmod 改變權限 - chgrp 改變群組 - chown 改變擁有者 - 檔案類型 - 正規檔案 - 純文字檔案 - 二進位 -> 可執行程式 - 例如 `cat`, `ls` 這些都是 - 資料格式檔 - 特殊格式的資料, 可被 `last` 存取, 不過 cat 出來可能長得不太一樣或不可讀 - 目錄 - 連結 - 設備與裝置 - 檔名 - Max 255 bytes, 中文約 128 字 (1 中文字約 2 bytes) - 盡量避免特殊字元 (一些符號如 `'`, `!`, ` `, etc) ### 目錄配置 #### FHS - 類型 - 可分享的 - 不可分享的 - 不變的 - 可變動的 (截自鳥哥) ![](https://i.imgur.com/RGhKlx7.png) - 一些目錄 - / 根目錄 - 與開機系統有關 - /usr - 與軟體安裝執行有關 - /var - 與系統運作過程有關 (截自鳥哥) ![](https://i.imgur.com/6H1AEoF.png) ### 補充 - 檔案如果具有 x 權限可以去執行 - 看 Bash 預設使用什麼方式去執行 - 或在檔案面前加上 `!# 執行的路徑` - 例如 `!# /usr/bin/python3` 就會使用 `/usr/bin/python3` 來執行這個檔案 - 可以嘗試 CentOS, Fedora, Redhat - RedHat 要錢, 適用就用免費下載得可以 - tree 指令顯示檔案目錄架構 - `tree -L 2 /` - 可以去看看不同分支的 Unix-like 系統目錄有什麼差異