2025年9月26日 星期五

PiShrink ( SDcard img file 最佳精簡工具)

 要精簡 Raspberry Pi (Pi3) SD 卡映像檔 (.img 檔案) 的大小,最推薦且最常用的工具是 PiShrink

當您使用 dd 或其他工具製作 SD 卡映像檔時,即使卡片上只使用了很少的空間,生成的 .img 檔案大小仍會與您 SD 卡的總容量一樣大。PiShrink 這個 Bash 腳本就是用來解決這個問題的。


最佳精簡工具:PiShrink

PiShrink 是一個開源的 Bash 腳本,它會自動執行以下步驟,將映像檔大小縮減到只比實際使用的空間大一點點:

  1. 檢查和修復檔案系統:確保檔案系統沒有錯誤。

  2. 縮小分割區:將主要的根分割區 (rootfs) 縮小到剛好能容納所有資料的大小。

  3. 截斷映像檔:將 .img 檔案的整體大小截斷到縮小後的分割區結尾處。

  4. 自動擴展:最棒的是,它會確保縮小後的映像檔在下次啟動時,仍會自動擴展 (resize),以利用您燒錄 SD 卡的全部空間。

如何使用 PiShrink

PiShrink 通常需要在 LinuxWindows Subsystem for Linux (WSL) 環境中運行。

1. 安裝 PiShrink (在 Linux 或 WSL 中)

打開終端機,執行以下指令:

Bash
# 1. 下載腳本
wget https://raw.githubusercontent.com/Drewsif/PiShrink/master/pishrink.sh

# 2. 賦予執行權限
chmod +x pishrink.sh

# 3. 將腳本移動到系統路徑,方便直接使用
sudo mv pishrink.sh /usr/local/bin

2. 執行映像檔精簡

假設您的原始映像檔名為 full_backup.img,您可以在終端機中執行:

Bash
# 基本用法:縮減映像檔,縮減後的檔案會覆蓋原檔案
sudo pishrink.sh full_backup.img

如果您想保留原檔案,並輸出一個新的縮減版檔案,可以指定第二個檔名:

Bash
# 輸出到新檔案
sudo pishrink.sh full_backup.img shrunk_pi.img

3. (可選) 搭配壓縮功能

為了進一步減少檔案大小,您可以在縮減後直接進行壓縮,特別是在檔案有許多空位時,壓縮效果會非常好:

  • 使用 gzip 壓縮 (.gz 格式):

    Bash
    sudo pishrink.sh -z full_backup.img
    # 輸出檔案為 full_backup.img.gz
    
  • 使用 xz 壓縮 (.xz 格式,壓縮率更高):

    Bash
    sudo pishrink.sh -Z full_backup.img
    # 輸出檔案為 full_backup.img.xz
    

另一種優化:製作映像檔前的準備

如果您的目標是最小化映像檔,可以在製作 .img 檔案之前,先在 Pi 上進行「零填充」(Zero-Fill) 的操作。

當您從 SD 卡建立映像檔時,任何未使用的空間都會被複製為隨機資料。如果您先將所有空閒空間用零填滿,然後再製作映像檔,壓縮工具 (例如 PiShrink 的 -z-Z 參數,或外部的 zip/7z) 就可以更有效地壓縮這些零資料,使最終檔案更小。

  1. 在 Pi 上清理並零填充: 在您的 Pi 系統運行時,打開終端機並執行以下指令:

    Bash
    # 1. 清理不必要的軟體和快取
    sudo apt autoremove -y && sudo apt clean
    
    # 2. 刪除暫存檔和日誌 (可選)
    sudo rm -rf /var/log/*
    sudo rm -rf /tmp/*
    
    # 3. 零填充所有剩餘的可用空間
    sudo dd if=/dev/zero of=/zero.fill bs=4M
    # 執行時會出現 "No space left on device" (空間不足) 的錯誤,這是正常的!
    # 這代表零已經填滿所有空位。
    
    # 4. 刪除零填充檔案,釋放空間
    sudo rm -f /zero.fill
    
    # 5. 關機並取出 SD 卡製作映像檔
    sudo shutdown now
    
  2. 使用 dd 製作映像檔:將 SD 卡插入電腦,然後使用 dd 或 Win32DiskImager 等工具製作完整的 .img 檔案。

  3. 最後運行 PiShrink:將這個零填充後的 .img 檔案,再運行 PiShrink 進行精簡和壓縮。

沒有留言:

張貼留言