Make your pi images smaller!
Go to file
Simone Karin Lehmann 668127a2c6 some Xcode shared data 2018-03-13 22:55:52 +01:00
PiShrink-macOS.xcodeproj some Xcode shared data 2018-03-13 22:55:52 +01:00
LICENSE Initial Commit 2016-04-11 23:05:00 -04:00
Makefile add truncate to Makefile, add uninstall target to Makefile 2018-03-13 22:43:49 +01:00
README.md README: this is a port to run on macOS 2018-03-13 20:10:49 +01:00
make_e2fstools fix the calculation again to be used by truncate. use truncate instead of dd. add build instructions for truncate to the helper script to build it on macOS 2018-03-13 22:29:56 +01:00
pishrink fix the calculation again to be used by truncate. use truncate instead of dd. add build instructions for truncate to the helper script to build it on macOS 2018-03-13 22:29:56 +01:00

README.md

PiShrink-macOS#

This is a port of PiShrink bash script for Linux to run under macOS.

PiShrink https://github.com/Drewsif/PiShrink is a bash script that automatically shrinks a pi image that will then resize to the max size of the SD card on boot. This will make putting the image back onto the SD card faster and the shrunk images will compress better.

Besides the original script it uses a few utils for the ext2/3/4 filesystem. All of these tools can be easily build by running the provided helper scripts in this repository. For mor information see below.

Usage

sudo pishrink.sh imagefile.img [newimagefile.img]

If you specify the newimagefile.img parameter, the script will make a copy of imagefile.img and work off that. You will need enough space to make a full copy of the image to use that option.

Prerequisites

If you are trying to shrink a NOOBS image it will likely fail. This is due to NOOBS paritioning being significantly different than Raspian's. Hopefully PiShrink will be able to support NOOBS in the near future.

Installation

wget https://raw.githubusercontent.com/Drewsif/PiShrink/master/pishrink.sh
chmod +x pishrink.sh
sudo mv pishrink.sh /usr/local/bin

Example

[user@localhost PiShrink]$ sudo pishrink.sh pi.img
e2fsck 1.42.9 (28-Dec-2013)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/dev/loop1: 88262/1929536 files (0.2% non-contiguous), 842728/7717632 blocks
resize2fs 1.42.9 (28-Dec-2013)
resize2fs 1.42.9 (28-Dec-2013)
Resizing the filesystem on /dev/loop1 to 773603 (4k) blocks.
Begin pass 2 (max = 100387)
Relocating blocks             XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Begin pass 3 (max = 236)
Scanning inode table          XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Begin pass 4 (max = 7348)
Updating inode references     XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
The filesystem on /dev/loop1 is now 773603 blocks long.

Shrunk pi.img from 30G to 3.1G

Contributing

If you find a bug please create an issue for it. If you would like a new feature added, you can create an issue for it but I can't promise that I will get to it.

Pull requests for new features and bug fixes are more than welcome!