Merge branch 'dev' of feistymeow.org:feisty_meow into dev
authorChris Koeritz <fred@gruntose.com>
Sun, 7 Jan 2018 16:22:28 +0000 (11:22 -0500)
committerChris Koeritz <fred@gruntose.com>
Sun, 7 Jan 2018 16:22:28 +0000 (11:22 -0500)
production/sites/cakelampvm.com/docs/manual/cakelampvm_guide_v002.html
scripts/core/common.alias
scripts/site_avenger/revamp_cakelampvm.sh
scripts/system/add_swap_mount.sh

index 33de228268bc37fc50b355bba5f6768050d2f3f8..81ba2ece90304bef8c6a0e51b1e9db95460da0c8 100644 (file)
@@ -11,7 +11,7 @@
         Koeritz</span><span style="font-family: Comic Sans MS;"></span><span style="font-family: Comic Sans MS;"></span><br>
       <span style="font-family: Comic Sans MS;">feisty meow® concerns ltd</span>.</div>
     <h3 style="   text-align: center;"> Vintage: cakelampvm v002 &nbsp;&nbsp;
-      Updated: 2017-12-19 (rev. h)</h3>
+      Updated: 2018-1-7 (rev. i)</h3>
     <p>The cakelampvm project provides a Virtualbox VM that acts as an "internet
       in a bottle", serving up your web sites securely and only to your local
       host.&nbsp; The virtual machine provides DNS services (<a target="_blank"
@@ -197,6 +197,10 @@ revamp_cakelampvm</span></pre>
         <pre><span style="font-weight: bold;">passwd</span></pre>
         The 'passwd' command will ask for your current password, and then for a
         new password plus a verification of that new password.<br>
+        You will probably want to change your samba password as well, which is
+        used when accessing the virtual machine over the network.&nbsp; This is
+        a different, but very similar, command on Linux:<br>
+        <pre><span style="font-weight: bold;">smbpasswd</span></pre>
         &nbsp;</li>
       <li>Change your git configuration for the user and email address.&nbsp;
         This is how we've configured it so far:<br>
@@ -279,7 +283,7 @@ href="http://mapsdemo.cakelampvm.com">http://mapsdemo.cakelampvm.com</a></pre>
     <h4>Setting up DNS on Windows<a id="#windoze-dns" name="#windoze-dns"></a></h4>
     <p>The ipconfig tool will provide helpful information about your current
       networking and DNS configuration:</p>
-    <pre>&gt; ipconfig /all</pre>
+    <pre><span style="font-weight: bold;">&gt; ipconfig /all</span></pre>
     <p>The DNS configuration on Windows is somewhat byzantine.&nbsp; The pipe
       characters ('|') below are used to separate the menus or tabs or dialogs
       to traverse.&nbsp; Follow this path to get to the DNS config:</p>
@@ -297,7 +301,7 @@ href="http://mapsdemo.cakelampvm.com">http://mapsdemo.cakelampvm.com</a></pre>
       settings on your Host PC are right, then you may need to flush your DNS
       cache, and that might be sufficient to start getting the right IP
       address.&nbsp; On Windows, the command for flushing DNS is:</p>
-    <pre>&gt; ipconfig /flushdns</pre>
+    <pre><span style="font-weight: bold;">&gt; ipconfig /flushdns</span></pre>
     <p>and on Linux the flush DNS command can be many different things, but try
       these two most common options:</p>
     <pre><span style="font-weight: bold;"># restarts the client side DNS cache.<br>sudo service dns-clean restart</span></pre>
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..e1c268b60d98d670f11fe2bfa3d708c8c2d482ff 100644 (file)
@@ -270,6 +270,55 @@ 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
+
+echo "Checking existing swap partition configuration.
+"
+
+# 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.
+  echo "Enabling ramdisk swap partition...
+"
+  add_swap_mount
+  echo "
+Enabled ramdisk swap partition for 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.
+  echo "
+Adding a boot-time ramdisk swap partition...
+"
+  # 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..608ffc5c3306cef0a4f241f934a784e4f948a7c2 100644 (file)
@@ -2,22 +2,52 @@
 
 # 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"
-
-#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
+export FEISTY_MEOW_APEX="$( \cd "$WORKDIR/../.." && \pwd )"
+source "$FEISTY_MEOW_APEX/scripts/core/launch_feisty_meow.sh"
+
+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 "\
+$(basename $0):
+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 0
+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