在 Raspberry Pi OS 環境下,系統管理能力是提升開發效率的關鍵。除了基本指令操作外,更需要掌握系統工具、列印設定及高效的檔案系統應用。本文將由淺入深,逐步介紹系統資訊查詢、列印作業管理,並著重探討 ZFS 檔案系統的特性與應用,幫助讀者建構更穩固、可靠的儲存架構。從系統層面到資料管理,提供全方位的技術指引。

Raspberry Pi OS 系統管理:輔助主題

Raspberry Pi OS 的系統管理涵蓋了多個方面,從基本的命令列操作到高階的系統組態。這些內容通常分散在不同的章節中,每個章節針對特定的使用者群體提供詳細的指導。以下是一些重要的章節概述:

主要章節內容

  • 第1章:軟體開發者:這部分主要涵蓋了程式函式庫和系統呼叫,適合軟體開發者參考。
  • 第2章:系統呼叫:這部分介紹了由核心提供的函式,適合需要深入瞭解系統內部執行機制的使用者。
  • 第3章:程式函式庫呼叫:這部分涵蓋了程式函式庫中的函式,適合需要進行程式開發的使用者。
  • 第4章:特殊檔案:這部分介紹了通常位於 /dev 目錄中的特殊檔案。
  • 第5章:檔案格式與約定:這部分介紹了各種檔案格式和約定,例如 /etc/passwd
  • 第6章:遊戲:這部分介紹了一些遊戲相關的內容。
  • 第7章:雜項:這部分涵蓋了各種雜項主題,如宏包和約定。
  • 第8章:系統管理命令:這部分介紹了系統管理所需的命令,通常僅限於 root 使用者。
  • 第9章:核心常規(非標準):這部分介紹了一些非標準的核心常規。

Raspbian 手冊頁面(man pages)

Raspberry Pi OS 提供了詳細的手冊頁面(man pages),這些頁面是針對每個命令、系統呼叫和程式函式庫呼叫所撰寫的多頁、特別格式化的描述性檔案。使用 man 命令可以檢視手冊頁面。例如:

$ man passwd

當你顯示手冊頁面時,頁面左上角會顯示命令名稱及其所屬章節,例如 LS(1)。手冊頁面通常包含多螢幕的文字內容,你可以按空白鍵檢視下一頁,按 Q 鍵離開檢視。

高效使用手冊頁面

如果同一關鍵字在多個章節中都有相關資訊,而你對特定章節感興趣,可以使用 -S 選項來指定。例如:

$ man -S2 read

這個命令會顯示 read 系統呼叫的手冊頁面,而不是 shell 命令 read 的手冊頁面。

搜尋相關資訊

使用 man 命令並搭配 -k 選項,可以根據關鍵字搜尋手冊頁面。這與 apropos 命令等效。例如:

$ man -k passwd

這個命令會列出所有包含 passwd 關鍵字的手冊頁面標題。

其他幫助方法

除了 man 命令外,還有一些其他方法可以取得幫助:

  • whatis 命令:用來取得命令的簡短描述。例如:

    $ whatis man
    

    這個命令會顯示與 man 命令相關的簡短描述。

實務應用

以下是一些實務應用範例:

更改登入密碼

  1. 使用 man -k passwd 命令來顯示與 passwd 命令相關的所有摘要幫助。
  2. 使用 whatis passwd 命令來取得 passwd 命令的簡短描述。

小段落標題

小段落標題

透過上述命令和工具,你可以快速找到並理解 Raspberry Pi OS 中各種命令和系統設定的使用方法。這些工具不僅適合初學者快速上手,也能幫助有經驗的使用者深入瞭解系統運作原理及高效解決問題。

此圖示
  graph TD;
    C[C]
    A[開始] --> B[選擇工具];
    B --> C{選擇 man 命令};
    C -->|是| D[檢視手冊頁面];
    C -->|否| E[選擇 whatis 命令];
    E --> F[取得簡短描述];
    D --> G[學習並應用];
    F --> G;
    G --> H[完成];

內容解密:

  • 流程圖解析:此圖示展示瞭如何根據需要選擇不同工具來取得幫助資訊。從開始選擇工具後,根據是否選擇 man 命令來決定下一步動作。如果選擇 man 命令,則進入檢視手冊頁面;如果不選擇則進入取得簡短描述。最後無論選擇哪種方法都會進入學習並應用階段。

透過上述步驟和圖示,玄貓希望讀者能夠更好地理解如何有效地利用 Raspbian 的檔案和工具來提升自己的技能和知識。

Raspberry Pi OS系統管理入門

利用whereis命令查詢系統設定

玄貓來介紹如何使用whereis命令來查詢系統中特定的二進位制檔案、原始碼檔案和手冊頁面。whereis命令能夠幫助你快速定位系統中的重要工具和指令。以下是其基本語法:

whereis [options] filename

whereis命令的用途

whereis命令主要用於查詢指設定檔案的二進位制、原始碼和手冊頁面檔案,並將結果顯示在螢幕上。

常用選項及功能

  • -b:僅查詢二進位制檔案
  • -s:僅查詢原始碼檔案

實際範例

例如,當你在命令列中輸入whereis bash時,會顯示Bash shell程式的路徑:

$ whereis bash
bash: /bin/bash /etc/bash.bashrc /usr/share/man/man1/bash.1.gz

需要注意的是,內建命令(如內部命令)無法透過whereis命令找到。

使用whoami命令取得系統資訊

當你首次登入系統時,瞭解自身使用者ID、登入的電腦或系統以及作業系統相關資訊非常重要。這些資訊可以透過whoami命令取得。以下是其基本語法:

whoami

whoami命令的用途

whoami命令用於顯示當前使用者的有效ID。

實際範例

當你在命令列中輸入whoami時,會顯示你的使用者名稱:

$ whoami
bob

進階系統管理工具:who和hostname

除了whereiswhoami外,還有兩個非常重要的工具:whohostname。這些工具可以幫助你取得更多關於系統的資訊。

who命令

who命令用於顯示目前已登入的使用者列表。以下是其基本語法:

who [options]

hostname命令

hostname命令用於顯示當前主機的名稱。以下是其基本語法:

hostname [options]

在Raspberry Pi OS上進行列印作業

列印文字檔案是每位使用者都會經常進行的一項操作。Raspberry Pi OS中,列印作業主要由Common UNIX Printing System(CUPS)管理。常用的列印指令包括systemctl start cups.service, lpr, lp, 等。

lpr指令

以下是lpr指令的基本語法:

lpr [options] filename
常用選項及功能:
  • -P printer: 指定印表機名稱。
  • -# copies: 指定列印份數。
實際範例
$ lpr -Pspr order.pdf    # 將order.pdf傳送到spr印表機進行列印。
$
$ lpr memo1              # 將memo1傳送到預設印表機進行列印。
$
$ man ls | lpr -Php1200   # 將ls指令的手冊頁面傳送到hp1200印表機進行列印。
$

lp指令

以下是lp指令的基本語法:

lp [options] [option arguments] file(s)
常用選項及功能:
  • -d destination: 指定列印目的地。
  • -n copies: 指定列印份數。
實際範例
$ lp -d spr file1                # 將file1傳送到spr印表機進行列印。
request id is spr-983 (1 file(s))
$
$ lp -d spr -n 3 sample phones   # 將sample和phones分別傳送到spr印表機進行列印,並各自複製3份。
request id is spr-984 (2 file(s))
$

ZFS檔案系統概述與安裝步驟

ZFS屬性與安裝方式

ZFS(Zettabyte File System)是一個現代化的檔案系統,具有自動校正、高安全性、卷管理以及即時備份等特性。ZFS可以在Debian Bookworm-based Raspberry Pi OS上輕鬆安裝,但無法作為根檔案系統使用。

玄貓來介紹如何在Raspberry Pi OS上安裝ZFS:

# sed -r -i'.BAK' 's/^deb(.*)$/deb\1 contrib/g' /etc/apt/sources.list    #編輯apt源列表,新增contrib儲存函式庫。
# apt update                                                  #更新apt索引。
# apt install linux-headers-arm64 zfsutils-linux zfs-dkms zfs-zed        #安裝ZFS相關套件。

這些指令會下載並安裝必要的ZFS套件。安裝完成後,可以使用以下指令來檢查安裝是否成功:

# modprobe zfs                      #載入ZFS模組。
# zfs version                        #檢查ZFS版本。
zfs-2.1.11-1                             #顯示安裝的ZFS版本。
zfs-kmod-2.1.11-1                        #顯示安裝的ZFS核心模組版本。

ZFS常見問題與注意事項

安裝注意事項

由於目前Raspberry Pi硬體缺乏錯誤修正碼(Error Correction Code, ECC)記憶體,建議僅用於學習和測試目的。此外,請務必確保有額外儲存裝置連線到硬體上,以避免破壞系統磁碟。

練習題
  1. 使用whereis命令查詢Korn shell, Bourne shell, Bourne Again shell, C shell和Z shell等shell程式的二進位制檔案路徑。如果某些shell程式不存在於你的系統中,請說明原因。
  2. 使用whoami指令查詢自己的使用者名稱並比較who指令和your username列表資訊差異。
  3. 透過hostname指令瞭解自己目前所登入之主機名稱以及主機型別為獨立電腦或網路電腦判斷依據。

此圖示展示了Raspberry Pi OS中的各種管理工具及其關係:

  graph TD;
    A[whereis] --> B[二進位制檔案];
    A --> C[原始碼檔案];
    A --> D[手冊頁面];

    E[whoami] --> F[有效ID];

    G[who] --> H[已登入使用者列表];
    I[hostname] --> J[主機名稱];

    K[lpr] --> L[檔案傳送至印表機];
    M[lp] --> N[檔案傳送至指定印表機];

    O[ZFS] --> P[自動校正];
    O --> Q[高安全性];
    O --> R[卷管理];
    O --> S[即時備份];

內容解密:

這段程式碼展示瞭如何使用各種系統管理工具來取得和管理系統資訊。其中包括 whereis, whoami, who, 和 hostname 指令和 lpr, lp, 用來控制和管理匯入CUPS中的print jobs.

在解析過程中,玄貓特別強調了每個指令和它們可能帶來之重要功能,以協助讀者更深入地理解整個操作流程及其背後之技術原理。

Raspberry Pi OS系統管理:ZFS技術探討

在Raspberry Pi系統中進行高效的資料管理與儲存解決方案,ZFS(Zettabyte File System)無疑是一個強大的選擇。本篇文章將探討ZFS在Raspberry Pi上的應用,包括其基本概念、命令語法及實務操作。此外,還將介紹如何利用ZFS來構建高效且可靠的儲存架構,確保系統的穩定性與資料的安全性。

硬體與儲存模型

Raspberry Pi的硬體並不具備高階記憶體(如ECC記憶體),但如果使用外接的固態硬碟硬碟(SSD)作為系統磁碟,這類別媒體通常具備相當於ECC記憶體的錯誤檢查與修正能力。這使得ZFS能夠在Raspberry Pi上發揮其優勢。

玄貓推薦採用雙重儲存模型:作業系統安裝在單一介質(如microSD卡或SSD),而使用者資料則儲存在另一個容量較大的介質上。這樣的儲存模型能夠確保系統獨立執行、維護和升級,同時將使用者資料安全地儲存在其他裝置上。本章節將展示如何實作這種儲存模型。

Zpool與ZFS命令語法

以下是zpoolzfs命令的基本語法,這兩個命令在ZFS管理中至關重要。

Zpool命令語法

zpool sub-command [options] [option arguments] [command arguments]

zpool命令用於建立和管理儲存池(zpool),這些池由虛擬裝置(如磁碟驅動器)組成。以下是一些常用的選項:

  • zpool create name vdev: 建立一個名為name的新池,使用指定的虛擬裝置。
  • zpool create –o copies=2 name: 建立一個名為name的新池,並設定副本屬性為2。
  • zpool destroy name: 銷毀或移除名為name的池。
  • zpool list name: 列出名為name的池的儲存空間和健康狀況。
  • zpool scrub name: 檢查名為name的池是否有正確的校驗和。
  • zpool status name: 顯示名為name的池的狀態。

Zfs命令語法

zfs sub-command [options] [option arguments] [command arguments]

zfs命令用於建立和管理資料集或對映到裝置(如磁碟驅動器)的檔案系統。以下是一些常用的選項:

  • zfs create name: 建立一個名為name的資料集。
  • zfs create –o copies=2 name: 建立一個名為name的資料集,並設定副本屬性為2。
  • zfs destroy name: 銷毀或移除名為name的資料集。
  • zfs list: 列出所有資料集。
  • zfs rollback name: 將資料集還原到之前快照狀態。

ZFS術語

在探討ZFS之前,先了解一些基本術語:

  • Boot Environment: 一個可啟動環境,包含ZFS根檔案系統以及可選的其他掛載檔案系統。
  • Checksum: 一個256位元雜湊值,用於檢查檔案系統區塊中的資料完整性。
  • Clone: 一個初始內容與ZFS快照相同的檔案系統。
  • Dataset: 一個通用名稱,適用於克隆、檔案系統、快照和卷等ZFS元件。
  • Deduplication: 一種減少儲存需求的方法,透過消除冗餘資料來實作。
  • Filesystem: 一種ZFS資料集,類別似於傳統檔案系統。
  • Mirror: 一種虛擬裝置,根據RAID規範在多個媒體上儲存相同的資料副本。
  • Pool: 一個邏輯群組,描述可用儲存空間的佈局和物理特徵。
  • RAID-Z: 一種虛擬裝置,根據RAID規範在多個磁碟上儲存資料和奇偶校驗位元組。
  • Resilvering: 將資料從一個裝置複製到另一個裝置的過程。
  • Slice: 使用分割軟體建立的一個磁碟分割槽。
  • Snapshot: 一個給定時間點的一致性只讀檔案系統或卷副本。
  • Vdev (虛擬裝置): 一整塊磁碟、磁碟分割槽、檔案或前者的一組合。

ZFS工作原理

使用ZFS進行資料管理時,通常會依照以下步驟進行:

  1. 建立並對映到虛擬裝置(vdev)上的命名池(zpool)。
  2. 在這些池中建立ZFS檔案系統。
  3. 將檔案新增到這些檔案系統中。
  4. 管理檔案、檔案系統、池和虛擬裝置。

這些步驟確保了資料的一致性和完整性。透過使用快照、克隆和校驗功能,ZFS能夠提供強大且靈活的資料保護機制。

  graph TD
    A[建立 zpool] --> B[對映到 vdev]
    B --> C[建立 ZFS 檔案系統]
    C --> D[新增檔案]
    D --> E[管理檔案、檔案系統、池和 vdev]

此圖示詳細解說

上圖示展示了ZFS工作流程中的關鍵步驟:

  1. 首先建立並命名一個池(zpool)。
  2. 然後將該池對映到特定的虛擬裝置(vdev)。
  3. 在這些池中建立ZFS檔案系統。
  4. 向這些檔案系統中新增檔案。
  5. 最終管理檔案、檔案系統、池和虛擬裝置。

高效儲存模型實作

玄貓推薦採用雙重儲存模型以實作高效且可靠的儲存解決方案。以下是具體步驟:

  1. 選擇適當介質:將作業系統安裝在microSD卡或SSD上,以確保快速啟動和穩定執行。使用外接SSD可以提升ECC記憶體能力,增強資料完整性。

  2. 組態雙重儲存:使用一塊微SD卡或SSD來安裝作業系統,並使用另一塊容量較大的SSD來儲存使用者資料。

  3. 建立並管理ZFS池

    • 首先使用sudo zpool create pool_name /dev/sda /dev/sdb命令建立一個包含兩塊磁碟(/dev/sda 和 /dev/sdb)的RAID-Z池。
    • 接著可以使用sudo zfs create pool_name/data_set_name來在該池中建立資料集。
  4. 組態快照與克隆

    • 定期使用sudo zfs snapshot pool_name/data_set_name@snapshot_name來建立資料集快照。例如:sudo zfs snapshot pool_name/data@backup_01.
    • 當需要還原時可以使用sudo zfs rollback pool_name/data_set_name@snapshot_name來回復到某個特定時間點。
  5. 監控與維護

    • 定期執行sudo zpool scrub pool_name命令來進行資料校驗與修復操作。例如:sudo zpool scrub my_pool.
    • 使用sudo zpool status pool_name命令來檢視池狀態。例如:sudo zpool status my_pool.