Add sysprep-ish steps

Add an option to remove logs, apt archives, dhcp client leases and ssh hostkeys from image while shrinking.
This commit is contained in:
daveilers 2020-01-03 09:49:25 -08:00 committed by GitHub
parent 83eb694145
commit 74b106e763
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 16 additions and 3 deletions

View File

@ -63,11 +63,12 @@ fi
help() {
local help
read -r -d '' help << EOM
Usage: $0 [-sdrzh] imagefile.img [newimagefile.img]
Usage: $0 [-sdrpzh] imagefile.img [newimagefile.img]
-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
-z: Gzip compress image after shrinking
EOM
echo "$help"
@ -80,6 +81,7 @@ usage() {
echo " -s: Skip autoexpand"
echo " -d: Debug mode on"
echo " -r: Use advanced repair options"
echo " -p: Remove logs, apt archives, dhcp leases and ssh hostkeys"
echo " -z: Gzip compress image after shrinking"
echo " -h: display help text"
exit -1
@ -89,12 +91,14 @@ should_skip_autoexpand=false
debug=false
repair=false
gzip_compress=false
prep=false
while getopts ":sdrzh" opt; do
while getopts ":sdrpzh" opt; do
case "${opt}" in
s) should_skip_autoexpand=true ;;
d) debug=true;;
r) repair=true;;
p) prep=true;;
z) gzip_compress=true;;
h) help;;
*) usage ;;
@ -154,7 +158,7 @@ fi
trap cleanup ERR EXIT
#Gather info
info "Gatherin data"
info "Gathering data"
beforesize=$(ls -lh "$img" | cut -d ' ' -f 5)
parted_output=$(parted -ms "$img" unit B print | tail -n 1)
partnum=$(echo "$parted_output" | cut -d ':' -f 1)
@ -242,6 +246,15 @@ else
echo "Skipping autoexpanding process..."
fi
if [[ $prep == true ]]; then
info "Syspreping: Removing logs, apt archives, dhcp leases and ssh hostkeys"
mountdir=$(mktemp -d)
mount "$loopback" "$mountdir"
rm -rf "$mountdir/var/cache/apt/archives/*" "$mountdir/var/lib/dhcpcd5/*" "$mountdir/var/log/*" "$mountdir/var/tmp/*" "$mountdir/tmp/*" "$mountdir/etc/ssh/*_host_*"
umount "$mountdir"
fi
#Make sure filesystem is ok
checkFilesystem