Minor code cleanup and README update
This commit is contained in:
parent
b4db6c1a64
commit
d80d48a645
15
README.md
15
README.md
|
@ -6,28 +6,27 @@ using multiple cores is supported.
|
||||||
|
|
||||||
## Usage ##
|
## Usage ##
|
||||||
```
|
```
|
||||||
Usage: $0 [-sdiarpzZvh] imagefile.img [newimagefile.img]
|
Usage: $0 [-adhrspvzZ] imagefile.img [newimagefile.img]
|
||||||
|
|
||||||
-s Don't expand filesystem when image is booted the first time
|
-s Don't expand filesystem when image is booted the first time
|
||||||
-d Write debug messages in a debug log file
|
|
||||||
-r Use advanced filesystem repair option if the normal one fails
|
|
||||||
-p Remove logs, apt archives, dhcp leases and ssh hostkeys
|
|
||||||
-v Be verbose
|
-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 gzip
|
||||||
-Z Compress image after shrinking with xz
|
-Z Compress image after shrinking with xz
|
||||||
-a Compress image in parallel using multiple cores
|
-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
|
||||||
```
|
```
|
||||||
|
|
||||||
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.
|
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` will skip the autoexpanding part of the process.
|
|
||||||
* `-d` will create a logfile `pishrink.log` which may help for problem analysis.
|
|
||||||
* `-r` will attempt to repair the filesystem if regular repairs fail
|
* `-r` will attempt to repair the filesystem if regular repairs fail
|
||||||
* `-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 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.
|
* `-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.
|
* `-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 parallel compression can be overwritten by defining PISHRINK_GZIP or PSHRINK_XZ environment variables.
|
Default options for parallel compression can be overwritten by defining PISHRINK_GZIP or PSHRINK_XZ environment variables for gzip and xz.
|
||||||
|
|
||||||
## Prerequisites ##
|
## Prerequisites ##
|
||||||
If you are trying to shrink a [NOOBS](https://github.com/raspberrypi/noobs) image it will likely fail. This is due to [NOOBS partitioning](https://github.com/raspberrypi/noobs/wiki/NOOBS-partitioning-explained) being significantly different than Raspbian's. Hopefully PiShrink will be able to support NOOBS in the near future.
|
If you are trying to shrink a [NOOBS](https://github.com/raspberrypi/noobs) image it will likely fail. This is due to [NOOBS partitioning](https://github.com/raspberrypi/noobs/wiki/NOOBS-partitioning-explained) being significantly different than Raspbian's. Hopefully PiShrink will be able to support NOOBS in the near future.
|
||||||
|
|
17
pishrink.sh
17
pishrink.sh
|
@ -69,16 +69,16 @@ fi
|
||||||
help() {
|
help() {
|
||||||
local help
|
local help
|
||||||
read -r -d '' help << EOM
|
read -r -d '' help << EOM
|
||||||
Usage: $0 [-sdarpzZvh] imagefile.img [newimagefile.img]
|
Usage: $0 [-adhrspvzZ] imagefile.img [newimagefile.img]
|
||||||
|
|
||||||
-s Don't expand filesystem when image is booted the first time
|
-s Don't expand filesystem when image is booted the first time
|
||||||
-d Write debug messages in a debug log file
|
|
||||||
-r Use advanced filesystem repair option if the normal one fails
|
|
||||||
-p Remove logs, apt archives, dhcp leases and ssh hostkeys
|
|
||||||
-v Be verbose
|
-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 gzip
|
||||||
-Z Compress image after shrinking with xz
|
-Z Compress image after shrinking with xz
|
||||||
-a Compress image in parallel using multiple cores
|
-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
|
||||||
EOM
|
EOM
|
||||||
echo "$help"
|
echo "$help"
|
||||||
exit -1
|
exit -1
|
||||||
|
@ -93,7 +93,7 @@ prep=false
|
||||||
ziptool=""
|
ziptool=""
|
||||||
required_tools="$REQUIRED_TOOLS"
|
required_tools="$REQUIRED_TOOLS"
|
||||||
|
|
||||||
while getopts ":adhipr:svzZ" opt; do
|
while getopts ":adhprsvzZ" opt; do
|
||||||
case "${opt}" in
|
case "${opt}" in
|
||||||
a) parallel=true;;
|
a) parallel=true;;
|
||||||
d) debug=true;;
|
d) debug=true;;
|
||||||
|
@ -101,9 +101,9 @@ while getopts ":adhipr:svzZ" opt; do
|
||||||
p) prep=true;;
|
p) prep=true;;
|
||||||
r) repair=true;;
|
r) repair=true;;
|
||||||
s) should_skip_autoexpand=true ;;
|
s) should_skip_autoexpand=true ;;
|
||||||
|
v) verbose=true;;
|
||||||
z) ziptool="gzip";;
|
z) ziptool="gzip";;
|
||||||
Z) ziptool="xz";;
|
Z) ziptool="xz";;
|
||||||
v) verbose=true;;
|
|
||||||
*) help;;
|
*) help;;
|
||||||
esac
|
esac
|
||||||
done
|
done
|
||||||
|
@ -344,12 +344,13 @@ if ! truncate -s "$endresult" "$img"; then
|
||||||
exit -16
|
exit -16
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# handle compression
|
||||||
if [[ -n $ziptool ]]; then
|
if [[ -n $ziptool ]]; then
|
||||||
options=""
|
options=""
|
||||||
envVarname="${MYNAME^^}_${ziptool^^}" # PISHRINK_GZIP or PISHRINK_XZ environment variables allow to override options
|
envVarname="${MYNAME^^}_${ziptool^^}" # PISHRINK_GZIP or PISHRINK_XZ environment variables allow to override all options for gzip or xz
|
||||||
[[ $parallel == true ]] && options="${ZIP_PARALLEL_OPTIONS[$ziptool]}"
|
[[ $parallel == true ]] && options="${ZIP_PARALLEL_OPTIONS[$ziptool]}"
|
||||||
[[ -v $envVarname ]] && options="${!envVarname}" # if environment variable defined use these options
|
[[ -v $envVarname ]] && options="${!envVarname}" # if environment variable defined use these options
|
||||||
[[ $verbose == true ]] && options="$options -v" # add verbose flag
|
[[ $verbose == true ]] && options="$options -v" # add verbose flag if requested
|
||||||
|
|
||||||
if [[ $parallel == true ]]; then
|
if [[ $parallel == true ]]; then
|
||||||
parallel_tool="${ZIP_PARALLEL_TOOL[$ziptool]}"
|
parallel_tool="${ZIP_PARALLEL_TOOL[$ziptool]}"
|
||||||
|
|
Loading…
Reference in New Issue