Make your pi images smaller!
Go to file
Simone Karin Lehmann a9b0244e29 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-macOS.xcodeproj rename to pishrink,since we move this in /usr/local/bin and chmod a+x, add a Makefile 2018-03-13 22:02:43 +01:00
LICENSE Initial Commit 2016-04-11 23:05:00 -04:00
Makefile add Makefile to build e2fs tools and install everything in /usr/local/bin 2018-03-13 22:04:54 +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!