From 7244a229e7e477a8ca800fe1f6024801daaf2baf Mon Sep 17 00:00:00 2001 From: Phuong Vu Date: Fri, 25 Mar 2022 00:59:18 +0700 Subject: [PATCH] Updated usage and README. --- README.md | 83 +++++++++-------------------------------------------- pishrink.sh | 2 +- 2 files changed, 15 insertions(+), 70 deletions(-) diff --git a/README.md b/README.md index 9b79397..45d651d 100644 --- a/README.md +++ b/README.md @@ -7,75 +7,20 @@ using multiple cores is supported. ## Usage ## -``` -Usage: $0 [-adhrspvzZ] imagefile.img [newimagefile.img] - - -s Don't expand filesystem when image is booted the first time - -v Be verbose - -r Use advanced filesystem repair option if the normal one fails - -z Compress image after shrinking with gzip - -Z Compress image after shrinking with xz - -a Compress image in parallel using multiple cores - -p Remove logs, apt archives, dhcp leases and ssh hostkeys - -d Write debug messages in a debug log file +```txt +Usage: pishrink.sh [-adhrspvzZ] file [newfile] +Shrink and/or compress the given Linux image. +Options: +-d Write debug messages to pishrink.log in the working directory. +-e n Add an extra n (default 100) megabytes to the shrunk image. +-l n Limit size to expand the rootfs during first boot. See argument of the size2fs command. Ex: "-l 4.5G". +-p Purge redudant files (logs, apt archives, dhcp leases...). +-r Use advanced filesystem repair option if the normal one fails +-n Don't expand filesystem when image is booted the first time +-z Compress image after shrinking with gzip +-Z Compress image after shrinking with xz +-a Compress image in parallel using multiple cores +-v Be verbose ``` 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. - -* `-s` prevents automatic filesystem expansion on the images next boot -* `-v` enables more verbose output -* `-r` will attempt to repair the filesystem using additional options if the normal repair fails -* `-z` will compress the image after shrinking using gzip. `.gz` extension will be added to the filename. -* `-Z` will compress the image after shrinking using xz. `.xz` extension will be added to the filename. -* `-a` will use option -f9 for pigz and option -T0 for xz and compress in parallel. -* `-d` will create a logfile `pishrink.log` which may help for problem analysis. - -Default options for compressors can be overwritten by defining PISHRINK_GZIP or PSHRINK_XZ environment variables for gzip and xz. - -## Prerequisites ## - -If you are running PiShrink in VirtualBox you will likely encounter an error if you -attempt to use VirtualBox's "Shared Folder" feature. You can copy the image you wish to -shrink on to the VM from a Shared Folder, but shrinking directctly from the Shared Folder -is know to cause issues. - -If using Ubuntu, you will likely see an error about `e2fsck` being out of date and `metadata_csum`. The simplest fix for this is to use Ubuntu 16.10 and up, as it will save you a lot of hassle in the long run. - -## Installation ## - -```bash -wget https://raw.githubusercontent.com/Drewsif/PiShrink/master/pishrink.sh -chmod +x pishrink.sh -sudo mv pishrink.sh /usr/local/bin -``` - -## Example ## - -```bash -[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! diff --git a/pishrink.sh b/pishrink.sh index 8bff09b..1b4671b 100755 --- a/pishrink.sh +++ b/pishrink.sh @@ -169,7 +169,7 @@ print_usage() { Usage: $0 [-adhrspvzZ] file [newfile] Shrink and/or compress the given Linux image. Options: - -d Write debug messages in a debug log file + -d Write debug messages to pishrink.log in the working directory. -e n Add an extra n (default 100) megabytes to the shrunk image. -l n Limit size to expand the rootfs during first boot. See argument of the size2fs command. Ex: "-l 4.5G". -p Purge redudant files (logs, apt archives, dhcp leases...).