summaryrefslogtreecommitdiffstats
path: root/src/os-plugins/plugins/virtualbox/XX_virtualbox.sh
diff options
context:
space:
mode:
Diffstat (limited to 'src/os-plugins/plugins/virtualbox/XX_virtualbox.sh')
-rw-r--r--src/os-plugins/plugins/virtualbox/XX_virtualbox.sh98
1 files changed, 98 insertions, 0 deletions
diff --git a/src/os-plugins/plugins/virtualbox/XX_virtualbox.sh b/src/os-plugins/plugins/virtualbox/XX_virtualbox.sh
new file mode 100644
index 00000000..b54b4bec
--- /dev/null
+++ b/src/os-plugins/plugins/virtualbox/XX_virtualbox.sh
@@ -0,0 +1,98 @@
+# Copyright (c) 2009..2010 - RZ Uni Freiburg
+# Copyright (c) 2009..2010 - OpenSLX GmbH
+#
+# This program/file is free software distributed under the GPL version 2.
+# See http://openslx.org/COPYING
+#
+# If you have any feedback please consult http://openslx.org/feedback and
+# send your feedback to feedback@openslx.org
+#
+# General information about OpenSLX can be found at http://openslx.org
+#
+# script is included from init via the "." load function - thus it has all
+# variables and functions available
+
+# include default directories
+. /etc/openslx.conf
+
+CONFFILE=/initramfs/plugin-conf/virtualbox.conf
+PLUGINCONFDIR=/mnt/${OPENSLX_DEFAULT_CONFDIR}/plugins/virtualbox
+PLUGINDIR=/mnt/${OPENSLX_DEFAULT_DIR}/plugin-repo/virtualbox
+VIRTDIR=/mnt/${OPENSLX_DEFAULT_VIRTDIR}/virtualbox
+
+# check if the configuration file is available
+if [ -e ${CONFFILE} ]; then
+
+ # load needed variables
+ . ${CONFFILE}
+
+ # Test if this plugin is activated... more or less useless with the
+ # new plugin system
+ if [ $virtualbox_active -ne 0 2>/dev/null ]; then
+
+ [ $DEBUGLEVEL -gt 0 ] && echo "executing the 'virtualbox' os-plugin ...";
+
+ # load general configuration
+ . /etc/initramfs-setup
+
+ # get source of virtualbox image server (get type, server and path)
+ if strinstr "/" "${virtualbox_imagesrc}" ; then
+ vbimgprot=$(uri_token ${virtualbox_imagesrc} prot)
+ vbimgserv=$(uri_token ${virtualbox_imagesrc} server)
+ vbimgpath="$(uri_token ${virtualbox_imagesrc} path)"
+ fi
+ if [ -n "${vbimgserv}" ] ; then
+ # directory where qemu images are expected in
+ mnttarget=${VIRTDIR}
+ # mount the virtualbox image source readonly (ro)
+ fsmount ${vbimgprot} ${vbimgserv} ${vbimgpath} ${mnttarget} ro
+ else
+ [ $DEBUGLEVEL -gt 1 ] && \
+ error " * Incomplete information in variable ${virtualbox_imagesrc}." \
+ nonfatal
+ fi
+
+ # copy virtualization include files to config dir
+ testmkd ${PLUGINCONFDIR}
+ cp ${PLUGINDIR}/*.include ${PLUGINCONFDIR}
+ # copy ${CONFFILE} to ${PLUGINCONFDIR} just in case
+ cp ${CONFFILE} ${PLUGINCONFDIR}
+
+# # TODO: create rawdisk if requested
+# # create raw disk
+# for part in $(grep -qE " 44 | 45 " /etc/disk.partition); do
+# case "${part}" in
+# * 45 *)
+# id4x=$(grep " 45 " /etc/disk.partition | grep -E " 44 | 45 " \
+# | awk '{print $1}' | cut -c -8)
+# break
+# ;;
+# * 44 *)
+# id4x=$(grep " 44 " /etc/disk.partition | grep -E " 44 | 45 " \
+# | awk '{print $1}' | cut -c -8)
+# break
+# ;;
+# esac
+# if [ -n "${id4x}" ]; then
+# mount --bind /dev /mnt/dev
+# chroot /mnt VBoxManage -q internalcommands createrawvmdk -filename \
+# ${OPENSLX_DEFAULT_CONFDIR}/plugins/virtualbox/raw.vmdk -rawdisk ${id4x}
+# chmod 777 ${OPENSLX_DEFAULT_CONFDIR}/plugins/virtualbox/raw.vmdk
+# umount -f /mnt/dev 2>/dev/null
+# fi
+
+ # copy and activate init file
+ cp ${PLUGINDIR}/vbox-slx /mnt/etc/init.d/
+ chmod 755 /mnt/etc/init.d/vbox-slx
+ rllinker "vbox-slx" 20 2
+
+ mknod -m 0660 /dev/vboxdrv c 10 59
+ chown root:vboxusers /dev/vboxdrv
+
+ # finished ...
+ [ $DEBUGLEVEL -gt 0 ] && echo "done with 'virtualbox' os-plugin ..."
+ fi
+else
+ [ $DEBUGLEVEL -gt 0 ] \
+ && echo " * Configuration of 'virtualbox' plugin failed"
+fi