在日常使用樹莓派 (Raspberry Pi) 的過程中,常會需要備份 SD 卡並建立 .img
映像檔。然而這些映像檔往往和整張 SD 卡一樣大,即使只用了其中一小部分,也會浪費大量儲存空間。
PiShrink 是一個能自動縮小 .img
的工具,它會將映像檔壓縮到實際使用的大小,並在第一次開機時自動擴展到整張卡片容量。這樣可以節省磁碟空間、加快複製速度,同時讓分享映像檔更方便。
本文將示範如何在 WSL (Ubuntu) 中安裝與使用 PiShrink。
一、安裝必要套件
在 Ubuntu (WSL) 終端機中輸入以下指令,安裝 PiShrink 所需的工具:
sudo apt update && sudo apt install -y wget parted gzip pigz xz-utils udev e2fsprogs
wget
:用來下載 PiShrink 腳本
parted
、e2fsprogs
:提供磁碟分割與檔案系統縮放功能
gzip
、pigz
、xz-utils
:提供壓縮功能 (單核心 / 多核心)
udev
:必要的系統元件
二、下載並安裝 PiShrink
在終端機中執行:
wget https://raw.githubusercontent.com/Drewsif/PiShrink/master/pishrink.sh
chmod +x pishrink.sh
sudo mv pishrink.sh /usr/local/bin/pishrink.sh
這樣就能在任何地方直接使用 pishrink.sh
指令。
三、準備映像檔
在 WSL 裡,Windows 的硬碟會自動掛載到 /mnt
路徑下。
例如你的映像檔放在桌面:
C:\Users\你的帳號\Desktop\system-boot.img
在 WSL 裡的對應路徑是:
/mnt/c/Users/你的帳號/Desktop/system-boot.img
四、縮小映像檔
切換到映像檔所在的目錄:
cd /mnt/c/Users/你的帳號/Desktop
執行縮小:
sudo pishrink.sh system-boot.img
如果你想保留原始檔,並輸出成新檔案,可以多給一個檔名:
sudo pishrink.sh system-boot.img system-boot-shrunk.img
執行後,PiShrink 會:
- 檢查並修復檔案系統
- 縮小最後一個分割區 (必須是 ext2/3/4 格式)
- 讓系統在第一次開機時自動擴展到整張卡片大小
五、進階選項
縮小並壓縮成 gzip:
sudo pishrink.sh -z system-boot.img
→ 產生 system-boot.img.gz
縮小並壓縮成 xz(體積更小,速度較慢):
sudo pishrink.sh -aZ system-boot.img
→ 產生 system-boot.img.xz
僅縮小,不在第一次開機時自動擴展:
sudo pishrink.sh -s system-boot.img
六、注意事項
- 分割區限制:PiShrink 只能縮小最後一個分割區,且必須是 ext2/3/4。若最後分割區是 FAT32 (常見於
boot
區),PiShrink 會跳過。
- SD 卡大小差異:不同品牌的同容量 SD 卡實際可用大小可能不同。建議縮小後的映像檔至少要比目標 SD 卡容量小一些,以免寫入失敗。
- 第一次開機時間:因為系統會自動擴展分割區,第一次開機可能會比平常久一點。
✅ 完成以上步驟後,你就能用 Win32 Disk Imager 將縮小後的 .img
寫回 SD 卡,並享受更小的檔案、更快的寫入速度。