通过 PiShrink 工具软件,您可以缩小事先完整备份的 Raspberry Pi OS 镜像文件的大小。之所以需要减小镜像文件的大小,是因为文件大小不可避免地会变得巨大,从而难以保存和处理。
我们为 Raspberry Pi 计算模块 4 准备的备份镜像文件约为 30 GB。多个备份文件需要更大的存储空间。即使文件存储在不同的位置,移动或复制文件也需要相当长的时间。如果能缩小文件大小,存储多个文件就变得可行了。
备份的操作系统镜像文件可以保存为单个文件,整个分区配置,包括已安装的软件和设置,都可以写回原始文件。
工业级树莓派将操作系统安装在 eMMC 上(普通树莓派使用 microSD 卡)。(如果在 Windows 环境下,还可以使用 dd 命令或 “Win32 磁盘管理器 “备份整个系统。
其他好处包括
如果缩小操作系统映像文件的大小,写入时间就会缩短,因为写入时文件大小变小了。这对于分发定制的操作系统镜像文件以及恢复备份非常有用。
缩小规模的好处
– 减少存储空间
– 轻量级操作系统映像文件分发
– 减少写入时间
使用 PiShrink 缩小镜像文件时,会缩小分区(隔间)的大小,并在首次启动时自动展开。操作系统的内容保持不变,不会丢失任何已有数据。
PiShrink 的处理时间也很快,因此您应考虑其优势并在备份后缩小尺寸。
PiShrink 是一款 Linux 本地软件
PiShrink 是一款用于 Linux 的工具软件。不过,您不必在 Windows PC 之外单独安装 Linux PC。当前的 Windows 操作系统有 WSL2。
WSL = Windows Linux 子系统
有了 WSL2,即使 Linux 初学者也不必担心,因为工作可以在 Windows 上完成。工作本身只需复制和粘贴命令即可完成。
如果您以前从未使用过 WSL2,请按照本文中的步骤依次操作。
WSL2 的优势:
- 无需准备虚拟机
- 高速运行
- 轻松共享文件
- Windows 11 的标准功能
它的另一个优点是,无需了解如何构建虚拟机(如 VirtualBox)即可使用。
工艺流程和准备工作
首先,在 Windows 端通过 WSL2 获取 Ubuntu 环境。然后在 WSL2(Ubuntu)端安装 PiShrink,并缩小备份的镜像文件。
粗略地说,这个过程分为 3 个步骤。
- 使用 PowerShell 安装 WSL2(Ubuntu)
- 安装 PiShrink
- 使用 PiShrink 进行收缩
假设Windows 端有备份的操作系统镜像文件。
这次准备好的映像文件会放在下载文件夹中,然后开始工作。
例如:backup-cm4-bookworm-202503.img(约 30 GB)
步骤 1:使用 WSL2 安装 Linux 环境

使用 PowerShell;PowerShell 必须以管理员权限启动。您可以从 “开始 “菜单启动它。
使用以下命令启动安装
wsl --install
在Create a default Unix user account设置任何用户名和密码,如下所示。密码不会显示,但必须输入两次。
PS C:\WINDOWS\system32> wsl --install
Downloading: Ubuntu
Installing: Ubuntu
The distribution has been successfully installed. Use 'wsl.exe -d Ubuntu' to start it.
Launching Ubuntu...
Provisioning the new WSL instance Ubuntu
This might take a while...
Create a default Unix user account: win11-en
New password:
Retype new password:
passwd: password updated successfully
To run a command as administrator (user "root"), use "sudo <command>".
See "man sudo_root" for details.
WSL2 (Ubuntu) 安装完成后,提示名称将发生变化。
<username>@<windows-machine-name>:~$
重启后,从 “开始 “菜单中选择 Ubuntu(或 WSL)。
以下屏幕将引导您完成整个过程。(与 PowerShell 类似,但它是一个 WSL 屏幕)

步骤 2:安装 PiShrink
在安装 PiShrink 之前,请进入当前目录(cd),执行更新命令和 PiShrink 安装命令。
cd
sudo apt update
wget https://raw.githubusercontent.com/Drewsif/PiShrink/master/pishrink.sh
‘pishrink.sh’ saved [12034/12034]显示,就完成了。
授予执行权
最后,将执行权交给 PiShrink。
sudo chmod +x pishrink.sh
现在你可以出发了。
步骤 3:使用 PiShrink 缩小图像文件
在此基础上,我们继续缩减图像文件。
PiShrink 已通过 cd 命令保存到当前目录,因此使用以下命令来执行它。
<分别替换<Windows 用户名> 和<映像文件名>.img。
sudo ~/pishrink.sh /mnt/c/Users/<WindowsUsername>/Downloads/<ImageFileName>.img
Windows 下的下载文件夹如下所示:除下载文件夹外,其他文件夹也应指定完整路径(绝对路径)。
/mnt/c/Users/<WindowsUsername>/Downloads
一段时间后,文字将流向 WSL2 (Ubuntu) 屏幕,同时XXXX显示为进度条。
最后,程序会显示文件大小的变化情况。
指定的图像文件会被缩小的图像文件替换。
(......)
rootfs: ***** FILE SYSTEM WAS MODIFIED *****
rootfs: 190466/1846656 files (0.2% non-contiguous), 1873575/7501824 blocks
resize2fs 1.47.0 (5-Feb-2023)
pishrink.sh: Shrinking filesystem
resize2fs 1.47.0 (5-Feb-2023)
Resizing the filesystem on /dev/loop0 to 2062762 (4k) blocks.
Begin pass 2 (max = 87581)
Relocating blocks XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Begin pass 3 (max = 229)
Scanning inode table XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Begin pass 4 (max = 17486)
Updating inode references XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
The filesystem on /dev/loop0 is now 2062762 (4k) blocks long.
pishrink.sh: Zeroing any free space left
pishrink.sh: Zeroed 1.1G
pishrink.sh: Shrinking partition
pishrink.sh: Truncating image
pishrink.sh: Shrunk /mnt/c/Users/win11-en/Downloads/backup-cm4-bookworm-202503.img from 30G to 8.4G
从最后一行可以看到,文件大小已从 30 GB 大幅减小到 8.4 GB。
这样就减少了存储空间的压力,也更容易存储多个备份。
然后用它将缩小后的文件图像保存到其他地方或写入 microSD 卡。
WSL 相对容易
对于 Windows,我可以使用 WSL 来使用 PiShrink。PiShrink 也适用于 macOS 和 Linux。
对于 macOS,它是通过 docker 运行的,而对于 Linux,它一开始就是 Linux 的一个工具应用程序,因此可以在不改变任何环境的情况下运行。
在 Windows 用户的印象中,门槛比 macOS 低,因为他们可以用 WSL 获得一个 Linux 环境。
如果你有一个单独的 Linux 环境,那就没问题,但 WSL 也一样好用,所以你可以毫无问题地运行这种级别的工具软件。
这次是在安装过程中执行的,因此需要三个步骤。
从第二次开始,可以启动 WSL 并执行一条 PiShrink 命令,立即缩小图像文件。
之所以推荐使用它,是因为它无需单独的 Linux PC,而且与操作系统虚拟化软件不同,Linux 应用程序可在 Windows 环境中本地运行。
文章由拉斯必达提供
非工程师也能愉快使用的 Raspberry Pi 信息网站 raspida.com一个非工程师也能享受和使用的 Raspberry Pi 信息网站。他还为 PiLink 网站提供有关工业用 Raspberry Pi 的技术博客文章。

