#!/bin/bash # Licensed to the Apache Software Foundation (ASF) under one # or more contributor license agreements. See the NOTICE file # distributed with this work for additional information # regarding copyright ownership. The ASF licenses this file # to you under the Apache License, Version 2.0 (the # "License"); you may not use this file except in compliance # with the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, # software distributed under the License is distributed on an # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY # KIND, either express or implied. See the License for the # specific language governing permissions and limitations # under the License. set -e set -x function configure_misc() { rm -fv /home/cloud/*.sh echo "cloud:`openssl rand -base64 32`" | chpasswd } function configure_rundisk_size() { # Debian's default is 10% of total RAM. This is too low when total is 256M. # See https://manpages.debian.org/stretch/initscripts/tmpfs.5.en.html echo "tmpfs /run tmpfs nodev,nosuid,size=20%,mode=755 0 0" >> /etc/fstab } function configure_sudoers() { cat >/etc/sudoers < /etc/sudoers.d/cloud } # clean up stuff copied in function cleanup_final() { # this has to be here since it is the last file to run (and we remove ourselves) cd /home/cloud rm -fv *.iso rm -fv {apt_upgrade,authorized_keys,cleanup,install_systemvm_packages,zerodisk}.sh rm -fv configure_{acpid,conntrack,grub,locale,networking,persistent_config,systemvm_services}.sh /home/cloud/install_systemvm_packages.sh rm -fv .veewee_version .veewee_params .vbox_version } # Zero out the free space to save space in the final image: function zero_disk() { df -h fstrim -av for path in / /boot /var/log /tmp do dd if=/dev/zero of=${path}/zero bs=1M || true sync rm -f ${path}/zero done } function finalize() { depmod -a configure_misc configure_rundisk_size configure_sudoers cleanup_final sync zero_disk sync } return 2>/dev/null || finalize