要精簡 Raspberry Pi (Pi3) SD 卡映像檔 (.img
檔案) 的大小,最推薦且最常用的工具是 PiShrink。
當您使用 dd
或其他工具製作 SD 卡映像檔時,即使卡片上只使用了很少的空間,生成的 .img
檔案大小仍會與您 SD 卡的總容量一樣大。PiShrink 這個 Bash 腳本就是用來解決這個問題的。
最佳精簡工具:PiShrink
PiShrink 是一個開源的 Bash 腳本,它會自動執行以下步驟,將映像檔大小縮減到只比實際使用的空間大一點點:
檢查和修復檔案系統:確保檔案系統沒有錯誤。
縮小分割區:將主要的根分割區 (
rootfs
) 縮小到剛好能容納所有資料的大小。截斷映像檔:將
.img
檔案的整體大小截斷到縮小後的分割區結尾處。自動擴展:最棒的是,它會確保縮小後的映像檔在下次啟動時,仍會自動擴展 (
resize
),以利用您燒錄 SD 卡的全部空間。
如何使用 PiShrink
PiShrink 通常需要在 Linux 或 Windows Subsystem for Linux (WSL) 環境中運行。
1. 安裝 PiShrink (在 Linux 或 WSL 中)
打開終端機,執行以下指令:
# 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
,您可以在終端機中執行:
# 基本用法:縮減映像檔,縮減後的檔案會覆蓋原檔案
sudo pishrink.sh full_backup.img
如果您想保留原檔案,並輸出一個新的縮減版檔案,可以指定第二個檔名:
# 輸出到新檔案
sudo pishrink.sh full_backup.img shrunk_pi.img
3. (可選) 搭配壓縮功能
為了進一步減少檔案大小,您可以在縮減後直接進行壓縮,特別是在檔案有許多空位時,壓縮效果會非常好:
使用 gzip 壓縮 (
.gz
格式):Bashsudo pishrink.sh -z full_backup.img # 輸出檔案為 full_backup.img.gz
使用 xz 壓縮 (
.xz
格式,壓縮率更高):Bashsudo pishrink.sh -Z full_backup.img # 輸出檔案為 full_backup.img.xz
另一種優化:製作映像檔前的準備
如果您的目標是最小化映像檔,可以在製作 .img
檔案之前,先在 Pi 上進行「零填充」(Zero-Fill) 的操作。
當您從 SD 卡建立映像檔時,任何未使用的空間都會被複製為隨機資料。如果您先將所有空閒空間用零填滿,然後再製作映像檔,壓縮工具 (例如 PiShrink 的 -z
或 -Z
參數,或外部的 zip/7z
) 就可以更有效地壓縮這些零資料,使最終檔案更小。
在 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
使用
dd
製作映像檔:將 SD 卡插入電腦,然後使用dd
或 Win32DiskImager 等工具製作完整的.img
檔案。最後運行 PiShrink:將這個零填充後的
.img
檔案,再運行 PiShrink 進行精簡和壓縮。
沒有留言:
張貼留言