blob: 23095abfbce4cec7df36acb45b8488912d4ab836 (
plain) (
tree)
|
|
# Copyright (c) 2008..2010 - RZ Uni Freiburg
# Copyright (c) 2008..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
# virtual virtualization plugin
# make sure that this file is the same in vmgrid and vmchooser plugin!
# include default directories
. /etc/openslx.conf
CONFFILEVMCHOOSER="/initramfs/plugin-conf/vmchooser.conf"
CONFFILEVMGRID="/initramfs/plugin-conf/vmgrid.conf"
PLUGINCONFDIR=/mnt/${OPENSLX_DEFAULT_CONFDIR}/plugins/virtualization
# check if plugins available
active=0
[ -f ${CONFFILEVMCHOOSER} ] && . ${CONFFILEVMCHOOSER}
[ "x${vmchooser_active}" = "x1" ] && active=1
[ -f ${CONFFILEVMGRID} ] && . ${CONFFILEVMGRID}
[ "x${vmgrid_active}" = "x1" ] && active=1
[ $DEBUGLEVEL -gt 0 ] \
&& echo -e "Executing the 'virtualization' plugin ... \c"
if [ ${active} -ne 0 ] ; then
# load general configuration
. /etc/initramfs-setup
# include functions
. /etc/functions
testmkd ${PLUGINCONFDIR}
# check if vmgrid active and change free mem
totalmem=$(expr $(grep -i "memtotal" /proc/meminfo \
| awk '{print $2}') / 1024)
echo "totalmem=${totalmem}" >> ${PLUGINCONFDIR}/virtualization.conf
if [ "x${vmgrid_active}" = "x1" ]; then
totalmemtest=$(expr $(echo ${vmgrid_memratio} \
| awk -F ',' '{print $1" + "$2" + "$3" + "$4" + "$5" + "$6}'))
# not more than 100% memory assigned
if [ ${totalmemtest} -le 100 2>/dev/null ]; then
# host mem
hostratio=$(echo ${vmgrid_memratio} | awk -F ',' '{print $6}')
hostmem=$(expr ${totalmem} \* ${hostratio} / 100 2>/dev/null)
if [ ${hostmem} -lt 256 2>/dev/null ]; then
# min. 256 MB for host
hostmem=256
fi
# main vm mem (vmchooser)
if [ "x${vmchooser_active}" = "x1" ]; then
mainvirtratio=$(echo ${vmgrid_memratio} | awk -F ',' '{print $5}')
mainvirtmem=$(expr ${totalmem} \* ${mainvirtratio} / 100 2>/dev/null)
if [ ${mainvirtmem} -lt 512 2>/dev/null ]; then
# min. 512 for vmchooser
mainvirtmem=512
fi
else
mainvirtratio=0
mainvirtmem=0
fi
cat << EOF >> ${PLUGINCONFDIR}/virtualization.conf
hostratio=${hostratio}
hostmem=${hostmem}
mainvirtratio=${mainvirtratio}
mainvirtmem=${mainvirtmem}
EOF
fi
fi
# cpu cores
CPU_CORES=$(grep 'processor.*:' /proc/cpuinfo | wc -l)
if [ "${CPU_CORES}" -gt "1" 2>/dev/null ]; then
echo "cpu_cores=${CPU_CORES}" \
>> ${PLUGINCONFDIR}/virtualization.conf
else
echo 'cpu_cores=1' >> ${PLUGINCONFDIR}/virtualization.conf
fi
# arch
echo "host_arch=$(uname -m)" >> ${PLUGINCONFDIR}/virtualization.conf
# VT enabled cpu?
if grep -q ^flags.*\\\<vmx\\\> /proc/cpuinfo; then
echo "vtflag=1" >> ${PLUGINCONFDIR}/virtualization.conf
echo 'kvm_module="kvm_intel"' >> ${PLUGINCONFDIR}/virtualization.conf
elif grep -q ^flags.*\\\<svm\\\> /proc/cpuinfo; then
echo "vtflag=1" >> ${PLUGINCONFDIR}/virtualization.conf
echo 'kvm_module="kvm_amd"' >> ${PLUGINCONFDIR}/virtualization.conf
else
echo "vtflag=0" >> ${PLUGINCONFDIR}/virtualization.conf
fi
# write mac
echo "hostmacaddr=${macaddr}" >> ${PLUGINCONFDIR}/virtualization.conf
# ip addr
echo "hostip=${clientip}" >> ${PLUGINCONFDIR}/virtualization.conf
# hostname
echo "hostname=${host_name}" >> ${PLUGINCONFDIR}/virtualization.conf
# get further hw information
waitfor /etc/hwinfo.cdrom
j=0
for i in $(cat /etc/hwinfo.cdrom); do
echo "cdrom_$j=$i" >> ${PLUGINCONFDIR}/virtualization.conf
j=$(expr $j + 1)
done
waitfor /etc/hwinfo.floppy
j=0
for i in $(cat /etc/hwinfo.floppy); do
echo "floppy_$j=$i" >> ${PLUGINCONFDIR}/virtualization.conf
j=$(expr $j + 1)
done
# copy host information to rwshare of vmgrid plugin
if [ "x${vmgrid_active}" = "x1" ]; then
cp ${PLUGINCONFDIR}/virtualization.conf ${vmgrid_rwmnt}/host.conf
fi
# finished ...
[ $DEBUGLEVEL -gt 0 ] \
&& echo "ok"
else
[ $DEBUGLEVEL -gt 0 ] \
&& echo "failed"
fi
|