swap mount additions in revamp
authorChris Koeritz <fred@gruntose.com>
Sun, 7 Jan 2018 15:44:49 +0000 (10:44 -0500)
committerChris Koeritz <fred@gruntose.com>
Sun, 7 Jan 2018 15:44:49 +0000 (10:44 -0500)
put in automatic swap mount addition in revamp script, so cakelampvm can have more memory.  uses more hard drive space though.
made the swap mount script force sudo calling, and also added parameters for swap.  new --help command is available on it also.

scripts/core/common.alias
scripts/site_avenger/revamp_cakelampvm.sh
scripts/system/add_swap_mount.sh

index 3c4a3fb237082e31634a00a00684f9483e42ca6d..9eda778841f4967b1c465899cd98d64926418296 100644 (file)
@@ -108,6 +108,7 @@ define_yeti_alias add_domain="sudo bash \$FEISTY_MEOW_SCRIPTS/system/add_domain.
 define_yeti_alias remove_domain="sudo bash \$FEISTY_MEOW_SCRIPTS/system/remove_domain.sh"
 define_yeti_alias add_apache_site="sudo bash \$FEISTY_MEOW_SCRIPTS/system/add_apache_site.sh"
 define_yeti_alias remove_apache_site="sudo bash \$FEISTY_MEOW_SCRIPTS/system/remove_apache_site.sh"
+define_yeti_alias add_swap_mount="sudo bash \$FEISTY_MEOW_SCRIPTS/system/add_swap_mount.sh"
 
 #hmmm: some magma intrusions from the fred customizations...
 define_yeti_alias revamp_cakelampvm="sudo bash \"$FEISTY_MEOW_SCRIPTS/site_avenger/revamp_cakelampvm.sh\""
index 9c83a588a97d90823ce2dc3f9001e31a14b1ecab..62cb3a7b1e4341db151cf1b4afd9d6e7d34f8721 100644 (file)
@@ -270,6 +270,46 @@ test_or_die "enabling the new cakelampvm environment config for apache"
 
 echo Successfully configured the apache2 environment variables needed for cakelampvm.
 
+##############
+
+# add in a swap mount if not already configured.
+
+sep
+
+# check for existing swap.
+free | grep -q "Swap:[[:blank:]]*[1-9][0-9]"
+if [ $? -ne 0 ]; then
+  # no swap in current session, so add it.
+  add_swap_mount
+
+  echo "Enabled ramdisk swap partition for the current boot session."
+fi
+
+# the above just gives this session a swap partition, but we want to have
+# the vm boot with one also.
+
+# check if there is already swap mentioned in the root crontab.  we will get root's
+# crontab below since this script has to run as sudo.
+crontab -l | grep -iq add_swap_mount
+if [ $? -ne 0 ]; then
+  # no existing swap setup in crontab, so add it.
+  # need to do it carefully, since sed won't add lines to a null file.  we thus
+  # create a temporary file to do our work in and ignore sed as a tool for this.
+  tmpfile="$(mktemp junk.XXXXXX)"
+  crontab -l 2>/dev/null >"$tmpfile"
+  echo "
+# need to explicitly set any variables we will use.
+FEISTY_MEOW_APEX=${FEISTY_MEOW_APEX}
+# add swap space to increase memory available.
+@reboot bash $FEISTY_MEOW_APEX/scripts/system/add_swap_mount.sh
+" >>"$tmpfile"
+  # now install our new version of the crontab.
+  crontab "$tmpfile"
+  rm "$tmpfile"
+
+  echo "Added boot-time ramdisk swap partition to crontab for root."
+fi
+
 ##############
 ##############
 
index 2577f44ae4f653164dbd109d4e3449d6b75c417f..f1c019ea51389a355deaa22793d32755a871663c 100644 (file)
@@ -4,20 +4,48 @@
 export WORKDIR="$( \cd "$(\dirname "$0")" && /bin/pwd )"  # obtain the script's working directory.
 source "$WORKDIR/../core/launch_feisty_meow.sh"
 
-#hmmm: should be able to add a new swap drive if desired.
-
-#hmmm: why all the hard-coded paths below?
-
-/bin/dd if=/dev/zero of=/var/swap.1 bs=1M count=2048
+if [[ $EUID != 0 ]]; then
+  echo "This script must be run as root or sudo."
+  exit 1
+fi
+
+# optional parameters: the instance number of the swap file (best as a number),
+# and the size of the swap file to add.
+SWAP_INSTANCE="$1"; shift
+SWAP_SIZE="$1"; shift
+
+if [ "$SWAP_INSTANCE" == "--help" ]; then
+  echo "\
+This script will add a swap partition for Linux that uses hard drive space for
+swap memory.  This increases the amount of available memory on RAM constrained
+systems.  It accepts two parameters: (1) the instance of the swap file, which
+should be a small number not already used for a swap partition, and (2) the
+size of the swap file in megabytes."
+  exit 1
+fi
+
+# if the swap instance variable is already set, then we'll use it.
+# this allows multiple different swap partitions to be added.
+if [ -z "$SWAP_INSTANCE" ]; then
+  SWAP_INSTANCE=1
+fi
+
+# allow the amount of swap space to be determined from outside the script.
+# this is measured in megabytes.
+if [ -z "$SWAP_SIZE" ]; then
+  SWAP_SIZE=2048
+fi
+
+/bin/dd if=/dev/zero of=/var/swap.${SWAP_INSTANCE} bs=1M count=${SWAP_SIZE}
 test_or_die "creating swap file"
 
-/bin/chmod 600 /var/swap.1
+/bin/chmod 600 /var/swap.${SWAP_INSTANCE}
 test_or_die "setting swap file permissions"
 
-/sbin/mkswap /var/swap.1
+/sbin/mkswap /var/swap.${SWAP_INSTANCE}
 test_or_die "formatting swap file as swap partition"
 
-/sbin/swapon /var/swap.1
+/sbin/swapon /var/swap.${SWAP_INSTANCE}
 test_or_die "enabling new swap partition"
 
 free