[SCM] live-config-staging branch, debian, updated. eeb06421aadeff1f1695b09ef03973526830131f
Richard Nelson
unixabg at gmail.com
Sun Nov 27 22:07:58 UTC 2011
The following commit has been merged in the debian branch:
commit 8c93226a6d1484e1fa0c3c08f95d694e8c1e1213
Author: Richard Nelson <unixabg at gmail.com>
Date: Sun Nov 27 15:55:53 2011 -0600
Initial commit of 900-virtualbox for live-config.
diff --git a/scripts/config/900-virtualbox b/scripts/config/900-virtualbox
new file mode 100755
index 0000000..5e32ea9
--- /dev/null
+++ b/scripts/config/900-virtualbox
@@ -0,0 +1,228 @@
+#!/bin/sh
+
+# Setting up VirtualBox.
+# This script setups all necessary things to do a complete deployment of
+# VirtualBox player based live systems.
+#
+# The script tests for boot parameter of
+# live-config.virtualbox=ACTION:IMAGEPATH:VDINAME
+#
+# ACTION: The operation to perform on the workstation (none|scratch)
+# IMAGEPATH: The folder path to the Virtual image you want to run.
+# VDINAME: The name of the Virtual image you want to run.
+#
+# Notes:To use this file with VirtualBox images you will need to have a few things
+# setup:
+#
+# 1. VirtualBox needs to be installed with virtualbox-qt and virtualbox-dkms.
+# 2. This script tests for a partition names for writing image data and is used as
+# scratch space. This scratch space should be a file system with linux permissions
+# such as ext2.
+# 3. VM image(s) should be in a mounted folder and setup as follows:
+# - Image(s) set to snapshot mode.
+# - For each image, the image folder needs to have a file called
+# image-release with a variable CRELEASE. An example: CRELEASE="1.0.0"
+#
+# The image-release file is used by the image maintainer and this script to tell
+# workstation(s) using a given image, to erase locally stored Virtual image files
+# and setup with the newly configure image. The operation of erasing locally
+# stored Virtual image files, is referred to as a scratch.
+
+Virtualbox ()
+{
+ if ! echo ${_CMDLINE} | grep -qs "live-config.virtualbox="
+ then
+ return
+ fi
+
+ echo -n " VirtualBox"
+
+ Configure_virtualbox
+}
+
+Configure_virtualbox ()
+{
+ for _PARAMETER in ${_CMDLINE}
+ do
+ case "${_PARAMETER}" in
+ live-config.virtualbox=*)
+ ACTION="$(echo ${_PARAMETER#live-config.virtualbox=} | awk -F: '{ print $1 }')"
+ IMAGEPATH="$(echo ${_PARAMETER#live-config.virtualbox=} | awk -F: '{ print $2 }')"
+ VDINAME="$(echo ${_PARAMETER#live-config.virtualbox=} | awk -F: '{ print $3 }')"
+ echo "live-config.virtualbox options passed are ACTION=${ACTION}, IMAGEPATH=${IMAGEPATH}, VDINAME=${VDINAME} ."
+ ;;
+ esac
+ done
+
+ echo "Checking for a local scratch device."
+
+ # Try to find a partition labeled virtualbox and if not then try first partition on first drive of the unit.
+ MOUNTDEV="$(blkid | grep virtualbox | awk -F: '{ print $1 }')"
+
+ if [ -z "${MOUNTDEV}" ]
+ then
+ MOUNTDEV="$(fdisk -l | grep a1 | awk '{ print $1 }')"
+ fi
+
+ echo "Potential scratch devices of: ${MOUNTDEV}"
+
+ echo "Checking for clean scratch file system on ${MOUNTDEV}!"
+ fsck -C -a ${MOUNTDEV}
+
+ # Check for the mount point directory and take correct action.
+ if [ -d '/virtualbox' ]
+ then
+ echo "The /virtualbox directory exists and is where we will compose the operations for the image."
+ else
+ echo "Making the /virtualbox directory where we will compose the operations for the image."
+ mkdir -p /virtualbox
+ fi
+
+ echo "Attempting to mount local scratch device."
+ mount -v ${MOUNTDEV} /virtualbox
+
+ echo "Setting the session type with /var/cache/gdm/dmrc for gdm3."
+ # Check for the mount point directory and take correct action.
+ if [ -d "/var/cache/gdm/${LIVE_USERNAME}" ]
+ then
+ echo "The /var/cache/gdm/${LIVE_USERNAME} directory exists where we compose the dmrc."
+ else
+ echo "Making the /var/cache/gdm/${LIVE_USERNAME} directory where we compose the dmrc."
+ mkdir -p "/var/cache/gdm/${LIVE_USERNAME}"
+ fi
+
+cat > /var/cache/gdm/${LIVE_USERNAME}/dmrc << EOF
+[Desktop]
+Session=virtualbox
+EOF
+
+ echo "Setting the PostSession Default for the gdm3 to shutdown when we end the VirtualBox stops."
+
+cat > /etc/gdm3/PostSession/Default << EOF
+#!/bin/sh
+rm -f /home/${LIVE_USERNAME}/.dmrc
+rm -f /var/cache/gdm/${LIVE_USERNAME}/dmrc
+/sbin/halt
+EOF
+
+ echo "Setting up the virtualbox.desktop option."
+
+cat > /usr/share/xsessions/virtualbox.desktop << EOF
+[Desktop Entry]
+Encoding=UTF-8
+Name=VirtualBox
+Comment=This session logs you into a VirtualBox session.
+Exec=/usr/bin/vmwrapper
+# no icon yet, only the top three are currently used
+Icon=
+Type=Application
+EOF
+
+ echo "Setup the vmwrapper which starts VirtualBox with a window manager."
+
+cat > /usr/bin/vmwrapper << EOF
+#!/bin/sh
+
+##########################################################
+# Unremark the below lines to disable screen from blanking.
+#setterm -blank 0 -powersave off -powerdown 0
+#xset -dpms
+#xset s off
+#xset s noblank
+
+/usr/bin/metacity &
+/usr/bin/nm-applet &
+/usr/bin/stalonetray &
+/usr/lib/virtualbox/VirtualBox --startvm ${VDINAME}
+EOF
+
+ echo "Setting chmod on the vmwrapper."
+ chmod 0755 /usr/bin/vmwrapper
+
+ ########################################################################
+ # Make sure that the .VirtualBox information is setup in /etc/skel or stacked in.
+ ########################################################################
+
+ ########################################################################
+ # Below is where I use a variable named CRELEASE which is sourced in
+ # from the image directory.
+ # This file is created by the person managing the images so he can
+ # modify an image and all workstations using the image will know to auto
+ # scratch (erase local snapshot info) on next boot when the difference
+ # is detected between the image mainter variable in image-relase and the
+ # file local-release (with variable RELEASE).
+ ########################################################################
+ # This is the test for when we want to upgrade an image and deploy to
+ # all workstations. Workstations will scratch upon CRELEASE != RELEASE.
+
+ if [ -f "${IMAGEPATH}/${VDINAME}/image-release" ]
+ then
+ . "${IMAGEPATH}/${VDINAME}/image-release"
+ echo "Found image-release: ${CRELEASE} "
+ else
+ echo "******* No image-release found to set the CRELEASE variable! *******"
+ CRELEASE="NONE"
+ fi
+
+ echo "Preparing VirtualBox image version ${CRELEASE}"
+
+ echo "Checking to see if scratch was requested at boot."
+
+ if [ "${ACTION}" = "scratch" ]
+ then
+ echo "Scratching everything in scratch dir on the fly!"
+ # On VirtualBox remove a couple of directories.
+ rm -rf /virtualbox/Logs
+ rm -rf /virtualbox/Snapshots
+ # Only doing *.* opposed to * since folders with VirtualBox images may be on the same block device.
+ rm -f /virtualbox/*.*
+ # Also now have to remove local-release.
+ rm -f /virtualbox/local-release
+ echo "Scratching completed!"
+ fi
+
+ if [ -f /virtualbox/local-release ]
+ then
+ . /virtualbox/local-release
+ echo "Found local-release: ${RELEASE} "
+
+ if [ "${RELEASE}" != "${CRELEASE}" ]
+ then
+ echo "Upgrading release from version ${RELEASE} to ${CRELEASE}."
+ echo "We will take scratch actions."
+
+ # On VirtualBox remove a couple of directories.
+ rm -rf /virtualbox/Logs
+ rm -rf /virtualbox/Snapshots
+ # Only doing *.* opposed to * since folders with VirtualBox images may be on the same block device.
+ rm -f /virtualbox/*.*
+ # Also now have to remove local-release.
+ rm -f /virtualbox/local-release
+ echo "Scratching completed!"
+
+ echo RELEASE=\"${CRELEASE}\" > /virtualbox/local-release
+ echo "Rsyncing in some stuff to /virtualbox."
+ rsync --exclude ${VDINAME}.vdi -r ${IMAGEPATH}/${VDINAME}/ /virtualbox/
+
+ # Link in the big chunks.
+ ln -s ${IMAGEPATH}/${VDINAME}/${VDINAME}.vdi /virtualbox
+ else
+ echo "Version match no scratch action taken!"
+ fi
+ else
+ echo "Looks like an initial release setup for version ${CRELEASE}."
+ echo RELEASE=\"${CRELEASE}\" > /virtualbox/local-release
+ echo "Rsyncing in some stuff to /virtualbox."
+ rsync --exclude ${VDINAME}.vdi -r ${IMAGEPATH}/${VDINAME}/ /virtualbox/
+
+ # Link in the big chunks.
+ ln -s ${IMAGEPATH}/${VDINAME}/${VDINAME}.vdi /virtualbox
+ fi
+
+ echo "Setting the permissions on the /virtualbox folder."
+ chown -R ${LIVE_USERNAME}:${LIVE_USERNAME} /virtualbox
+
+ echo "Completed custom options for username = ${LIVE_USERNAME} !"
+}
+
+Virtualbox
--
live-config-staging
More information about the debian-live-changes
mailing list