swap mount additions in revamp
[feisty_meow.git] / scripts / system / add_swap_mount.sh
index 64547bd5248db246b4d6d46b6627fae46c3edb01..f1c019ea51389a355deaa22793d32755a871663c 100644 (file)
@@ -1,14 +1,52 @@
 #!/bin/bash
 
-#hmmm: should check at each step if it worked.
-#hmmm: should be able to add a new swap drive if desired.
+# auto-find the scripts, since we might want to run this as sudo.
+export WORKDIR="$( \cd "$(\dirname "$0")" && /bin/pwd )"  # obtain the script's working directory.
+source "$WORKDIR/../core/launch_feisty_meow.sh"
 
+if [[ $EUID != 0 ]]; then
+  echo "This script must be run as root or sudo."
+  exit 1
+fi
 
-/bin/dd if=/dev/zero of=/var/swap.1 bs=1M count=1024
+# 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
 
-/sbin/mkswap /var/swap.1
+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
 
-/sbin/swapon /var/swap.1
+# 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.${SWAP_INSTANCE}
+test_or_die "setting swap file permissions"
+
+/sbin/mkswap /var/swap.${SWAP_INSTANCE}
+test_or_die "formatting swap file as swap partition"
+
+/sbin/swapon /var/swap.${SWAP_INSTANCE}
+test_or_die "enabling new swap partition"
 
 free