summaryrefslogtreecommitdiffstats
path: root/remote/modules/vmchooser/data/opt/openslx/scripts/systemd-vmchooser_env
blob: 50eace202a86cb01185d8da97db8435cffc8c5de (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
#!/bin/sh

export PATH=$PATH:/opt/openslx/bin:/opt/openslx/sbin:/opt/openslx/usr/bin:/opt/openslx/usr/sbin

#source config file with vars (e.g. ipaddr, macaddr, hostname)
. /opt/openslx/config

#from plugins/vmchooser/40-started-hw-config/run-virt.sh
#TODO: extra systemd-service for hwinfo
hwinfo --cdrom | grep -i "Device File:" | awk {'print $3'} >/etc/openslx/hwinfo.cdrom  
hwinfo --floppy | grep -i "Device File:" | awk {'print $3'} >/etc/openslx/hwinfo.floppy 

#from plugins/vmchooser/XX_vmchooser.sh
VMCHOOSER_CONF_DIR=/opt/openslx/etc/vmchooser

mkdir -p ${VMCHOOSER_CONF_DIR}/loopimg
mkdir -p ${VMCHOOSER_CONF_DIR}/fd-loop -m 1777

# mount a clean tempfs (bug in UnionFS prevents loopmount to work)
grep -qE "unionfs |aufs " /proc/mounts && \
mount -n -o size=1500k -t tmpfs vm-loopimg ${VMCHOOSER_CONF_DIR}/loopimg

# create an empty floppy image of 1.4MByte size
dd if=/dev/zero of=${VMCHOOSER_CONF_DIR}/loopimg/fd.img count=2880 bs=512 2>/dev/null
chmod 0777 ${VMCHOOSER_CONF_DIR}/loopimg/fd.img

# use dos formatter copied into stage3
mkdosfs ${VMCHOOSER_CONF_DIR}/loopimg/fd.img >/dev/null 2>&1 #|| error
mount -n -t msdos -o loop,umask=000 ${VMCHOOSER_CONF_DIR}/loopimg/fd.img \
      ${VMCHOOSER_CONF_DIR}/fd-loop

#pvs integration    
#if [ $vmchooser_pvs -ne 0 ]; then
#	sed -i /usr/share/xsessions/default.desktop \
#            -e "s,vmchooser$,vmchooser --pvs,"
#fi

# setup more scratch space for virtual machines, if configured
mkdir -p /tmp/virt
mkdir -p /var/log/samba

# enable normal users to setup the extended virtual machine redo file space
# and image source via network block device (NBD only at the moment)
# allow to start/stop samba on virtual devices (latter one ignores multiple
# independent daemons) 

#cat >> /mnt/etc/sudoers << EOF
# allow to start and stop the special /tmp redo file space (RAM + NBD/NFS server RAID)
#ALL ALL=NOPASSWD: /sbin/losetup /dev/loop* 
#ALL ALL=NOPASSWD: /sbin/mdadm -C /dev/md0 -l linear --raid-devices=2 /dev/loop* /dev/*
#ALL ALL=NOPASSWD: /opt/openslx/rootfs/usr/sbin/nbd-client * * /dev/nbd*
# allow to configure and start/stop samba services
#ALL ALL=NOPASSWD: /opt/openslx/rootfs/bin/sed -i /etc/*/smb.conf -e *
#ALL ALL=NOPASSWD: /usr/sbin/nmbd -s /etc/*/smb.conf
#ALL ALL=NOPASSWD: /usr/sbin/smbd -s /etc/*/smb.conf
#ALL ALL=NOPASSWD: /opt/openslx/rootfs/usr/bin/killall nmbd smbd
#EOF

#from plugins/vmchooser/80-after-plugins/virtualization.sh

# change free mem
mem_free=$(grep -i "^memfree:" /proc/meminfo | awk '{print $2}')
mem_cached=$(grep -i "^cached:" /proc/meminfo | awk '{print $2}')
mem_swapcached=$(grep -i "^swapcached:" /proc/meminfo | awk '{print $2}')
[ -z "$mem_free" ] && mem_free="2048000"
[ -z "$mem_cached" ] && mem_cached="0"
[ -z "$mem_swapcached" ] && mem_swapcached="0"
totalmem="$[ ( $mem_free + $mem_cached + $mem_swapcached ) / 1024 ]"
echo "totalmem=${totalmem}" >> ${VMCHOOSER_CONF_DIR}/virtualization.conf

# cpu cores
CPU_CORES=$(grep '^processor.*:' /proc/cpuinfo | wc -l)
if [ "${CPU_CORES}" -gt "1" 2>/dev/null ]; then
  echo "cpu_cores=${CPU_CORES}" >> ${VMCHOOSER_CONF_DIR}/virtualization.conf
else
  echo 'cpu_cores=1' >> ${VMCHOOSER_CONF_DIR}/virtualization.conf
fi

# arch
echo "host_arch=$(uname -m)" >> ${VMCHOOSER_CONF_DIR}/virtualization.conf

# VT enabled cpu?
if grep -q ^flags.*\\\<vmx\\\> /proc/cpuinfo; then
    echo "vtflag=1" >> ${VMCHOOSER_CONF_DIR}/virtualization.conf
    echo 'kvm_module="kvm_intel"' >> ${VMCHOOSER_CONF_DIR}/virtualization.conf
  elif grep -q ^flags.*\\\<svm\\\> /proc/cpuinfo; then
    echo "vtflag=1" >> ${VMCHOOSER_CONF_DIR}/virtualization.conf
    echo 'kvm_module="kvm_amd"' >> ${VMCHOOSER_CONF_DIR}/virtualization.conf
  else
    echo "vtflag=0" >> ${VMCHOOSER_CONF_DIR}/virtualization.conf
fi

# write mac
echo "hostmacaddr=${SLX_PXE_MAC}" >> ${VMCHOOSER_CONF_DIR}/virtualization.conf
# ip addr
echo "hostip=${SLX_PXE_CLIENT_IP}" >> ${VMCHOOSER_CONF_DIR}/virtualization.conf
# hostname
echo "hostname=${SLX_HOSTNAME}" >> ${VMCHOOSER_CONF_DIR}/virtualization.conf

# get further hw information
j=0
for i in $(cat /etc/openslx/hwinfo.cdrom); do
    echo "cdrom_$j=$i" >> ${VMCHOOSER_CONF_DIR}/virtualization.conf
    j=$(expr $j + 1)
done

j=0
for i in $(cat /etc/openslx/hwinfo.floppy); do
    echo "floppy_$j=$i" >> ${VMCHOOSER_CONF_DIR}/virtualization.conf
    j=$(expr $j + 1)
done